Newsgroup: it.comp.www.php
Titolo: E' corretto...

...controllare il primo carattere di una funzione in questo modo per 
capire se è un numero?
Se ogni stringa è un'array di caratteri...
 
$stringa="43j36sdg";
// $stringa [0]...[1] ecc. alla fine cosa c'è NULL? EOF?
 
for($num=48; $num<=57; $num++)
	if(ord($stringa[0]) == $num)
		echo "numero prima pos";
	else
		echo "no numero prima pos";
 
Esiste una funzione specifica?
Non la trovo.
 
Grz.

Forse con ltrim() faccio prima...


Forse con ltrim...
 
Il 05/04/2013 18:47, gb ha scritto:


 capire se è un numero?
 
is_numeric() non ti basta?
 
Bye.

Grazie, ora provo.
Conscio del fatto che è da una settimana circa che mi sto approcciando 
alla programmazione, conscio anche che non sono un esperto in 
informatica e che ho come retaggio solo vaghi ricordi del Basic del 
Commodore 64; conscio inoltre che questo è il luogo delle certezze del 
php e non delle fantasie di un dilettante, vi chiedo:
E' una mia sensazione che il PHP sia un linguaggio poco stabile?
Mi spiego:
Delle volte ho come la sensazione che certi comportamenti non siano 
proprio dettati dal codice scritto ma da stati interni dell'interprete 
che al programmatore sono sconosciuti e che forse solo con la pratica 
supera, ma non perchè li ha proprio compresi.
Delle volte ho come la sensazione che mancasse di quella proceduralità 
ferra dei linguaggi più antichi e che ciò che si scrive è sempre, come 
dire, "ballerino", risicato... cose banali da flow-chart sul php 
diventano "stroboscopici" e/o danno risultati alquanto strani.
Massacratemi :).


 Massacratemi :).
 
fallo da solo :)
 
è vero che php nelle precedenti versioni fino alla 3 e anche qualcosa 
della 4 la potevi definire "ballerina", ma non oggi, è stabile, veloce, 
manca di alcune funzioni dei linguaggi blasonati, ma non ne è un limite 
anzi per certi versi un pregio.
se no non si spiegherebbe come mai milioni di webapp sono scritti in 
php, il FrontEnd di facebook è in php, yhaoo per citare 2 colossi.
 
se derivi dal procedurale, il refuso di basic, un linguaggio OOP ti può 
dare quella senzazione (derivo anch'io da linguaggi procedurareli, tipo 
cobol, basic, ecc), ma è solo un impostazione mentale, non certo del 
linguaggio.
 
scordati il flow-chart per disegnare la struttura del programma (in OOP 
è limitante), utilizzalo al massimo per disegnarne il flusso logico.
 
Ciao

 supera, ma non perchè li ha proprio compresi.
 
E` una tua sensazione perché non conosci il linguaggio. Anzi, l'ambiente.
 
PHP è deterministico: una certa lista di istruzioni, dato un certo input, 
restituisce sempre lo stesso output. Come tutti i linguaggi di 
programmazione.
 
Quello che cambia è l'ambiente (e quindi l'input).
 
Se tu nel php.ini hai definizioni diverse tra due macchine, l'input può 
cambiare.
 
Se hai magic_quotes in uno e non nell'altro, uno avrà ' e l'altro \' in 
input.
 
Se in uno hai max_upload_size = 10K e nell'altro 10M, nel primo ti 
troverai $_FILES vuoto, mentre nel secondo valorizzato, quando fai un 
upload.
 
Se in uno hai 32bit e nell'altro 64bit, nel primo 1000000000000 andrà in 
overflow, nell'altro no.
 
Se uno lo esegui da cli, uno come cgi e un altro come modulo apache, il 
contenuto di $_SERVER sarà molto diverso.
 
Ecc. ecc.
 
Forse ti disorienta anche che non abbia un controllo stretto dei tipi:
 
$a = "pippo";
if ($a = 1) {
 print $a;
} else {
 print "rotto";
}
 
Stampa 1. Perché? Perché non dà errore? Ecco, quando avrai raggiunto la 
consapevolezza che "ha ragione lui", capirai PHP. :)
 
Bye.

 Ciao
 
 

 consapevolezza che "ha ragione lui", capirai PHP. :)
 
Non dà errore perchè riconosce se è una stringa e se è un numero, credo.
All'interno del if hai fatto un assegnazione che è interpretata true 
dall'if stesso, un'assegnazione che annulla la prima che era una 
stringa, infatti se scrivi 2 dà 2 ecc. ...credo.
 
Grz.
 
PS. Stavo scrivendo un codice e mi sono incartato sulla funzione isset()...
lo taglio perchè era lungo... e lo modifico per capire...
 
<html>
<head>
<title>Inserisci</title>
</head>
 
<body>
 
<form name="ins" method="POST">
<input type="text" name="nick"><br>
<input type="submit" name="invia" value="premi">
</form>
 
<?php
 
if (isset($_POST["invia"])){ //PREMO IL TASTO
 
     // VALORI DI ISSET INIZIALI SENZA INSERIRE IL NICK
     echo "<br>dopo premuto il tasto invia senza aver inserito nessun 
nick...";
     echo "<br>isset senza nick vale  : ".isset($_POST['nick']). " 
dovrebbe darmi FALSE... _MA_MI_DA'_1_ !?!?";
     echo "<br>isset tasto invia vale : ".isset($_POST['invia'])." 
dovrebbe darmi TRUE... mi dà 1 ok.";
 
     if (isset($_POST["nick"])){ //ED E' NORMALE che da qua in poi 
andava tutto a CARTE 48...
         echo "<br>hai voglia ad aspettare il false... questo è sempre 
true!!! ".isset($_POST['nick']);
         }
 
     else{
         echo "<br> valore false ... ".isset($_POST['nick']); //dovrebbe 
darmi false
         }
}
 
else {
 
     echo "<br>inserisci...";
 
     // VALORI DI ISSET INIZIALI
echo "<br>isset senza nick dovrebbe valere false : 
".isset($_POST['nick'])." mi dà FALSE ok.";
echo "<br>isset tasto invia dovrebbe valere false: 
".isset($_POST['invia'])." mi dà FALSE ok.";
}
?>
 
</body>
</html>
 
 

 dovrebbe darmi FALSE... _MA_MI_DA'_1_ !?!?";
 
isset ti dice se la variabile è definita.
 
Essendo uno dei parametri del form, quando fai il POST del form, la 
variabile viene impostata. Se tu non hai scritto niente dentro il campo 
del form, viene impostata alla stringa vuota. Che è diversa da "non 
impostata".
 
Se vuoi controllare che sia stato inserito qualcosa puoi usare
 
if (mb_strlen($_POST['nick']) > 0) ...
 
oppure (ma meno sicuro)
 
if ($_POST['nick'] != '') ...
 
Ma il tuo codice è sbagliato anche prima, e se abiliti error_reporting a 
E_ALL (con le nuove versioni di PHP) o a E_STRICT (con le vecchie) dentro 
il php.ini, te ne accorgi.
 
Il modo corretto sarebbe
 
if (isset($_SERVER) && array_key_exists('REQUEST_METHOD', $_SERVER) && 
$_SERVER['REQUEST_METHOD'] == 'POST) {
  $nick = $_POST['nick'];
  $invia = $_POST['invia'];
  ecc. ecc.
}
 
 
Motivo per cui spesso si usano dei framework che fanno un po' di lavoro 
sporco, e ti trovi a scrivere (per esempio in Zend Framework)
 
$req = $this->getRequest();
if ($req->isPost()) {
  $nick = $req->getPost('nick');
 ...
}
 
che, come vedi, è meno prolisso e più leggibile.
 
Bye.

 tante funzioni... è proprio con queste che non vado d'accordo.
 
polemica non diretta a te (non volermene)
è proprio il modo di pensare come il tuo che aveva dato la nomea di php 
di linguaggio non adatto all'enterprise e pasticcione, e buono solo per 
sitarelli e per ragazzini.
 
Ciao


e continua a non toccarlo. :)
 
Al massimo se hai intenzione di mettere qualcosa su un hosting tipo 
aruba ecc.. ricopia il loro sulla tua macchina locale o chiedi a loro le 
tue necessita.
 
potresti creare seri danni se non sai dove mettere le mani

isset come ti è stato detto identifica se una certa variabile è 
esistente cioè esiste nello scope, se come hai detto derivi dal 
procedurale e soprattutto basic
devi sapere che le variabili in php sono di diverso tipo e vivono per 
uno scopo, cioè ci sono variabili globali, protette, private e di 
funzione (queste vivono solo all'interno della funzione dove sono definite)
 
public $var1 // visibile sia all'interno che all'esterno della classe
protected $var2 //visibile solo alla classe e alle sottoclassi (le derivate)
private $var3 / visibile solo alla classe
 
$Var4 all'interno di una funzione // la variabile vive solo nella 
funzione dove è stata definita.
 
isset($var) permette di controllare se la variabile esiste.
 
può capitare che ad un certo punto del tuo codice devi controllare 
l'esistenza di una variabile (perchè magari definita da altra classe o 
perchè magari definita in maniera diversa (post o get in http, o CLI, ecc)
 
Ciao


Figurati.
Il problema è che non è un modo di pensare è l'impressione che il 
linguaggio dà... non so perchè, ma a me quest'impressione ha dato.
A quest'impressione aggiungi l'esigenza di ottenere qualcosa 
velocemente... e il gioco è fatto.
Ci sono molti tutorial online che danno l'impressione che in poche 
lezioni detieni il linguaggio... poi li guardi bene e t'accorgi che chi 
s'improvvisa fa testa e muro...
http://www.youtube.com/watch?v=_777XlKmc7Q
 
vedi da 7:00... funzione substring...
Ciao, un ragazzino di 1000 mesi :).
 
 

 impostata".
 
Ho capito, grazie.
Anche se potrei chiederti: Perchè m'è l'ha impostata vuota senza la mia 
autorizzazione!? :)
E' questo che volevo sottolineare prima quando scrivevo:
"Delle volte ho come la sensazione che certi comportamenti non siano 
proprio dettati dal codice scritto ma da stati interni dell'interprete 
che al programmatore sono sconosciuti e che forse solo con la pratica 
supera...".
Grazie ancora per gli altri consigli.
Ciao.

 Ciao
 
Dovrei iniziare la OOP, ma prima voglio leggere, tempo permettendo, un 
buon libro... leggo che questo è consigliato:
PHP e MySQL Guida completa
di Simon Stobart, Mike Vassileiou
Prezzo: 42,00 Euro
 
Cerco un testo perchè online a parte php.net... cosa c'è?
 
Ciao, grz.

 Ciao, grz.
 
allora lascia perdere qualsiasi testo sul php, incomincia dalle basi 
sulla OOP (programmazione orientata ad oggetti)
 
http://pallu.wikidot.com/is:oop
 
 
http://www.html.it/guide/guida-programmazione-orientata-agli-oggetti/
 
 
http://www.html.it/pag/18339/introduzione-alla-oop/
 
 
sarà dura, vengo dal procedurale COBOL e BASIC, VB, sono stato 
autodidatta OOP e PHP, ho commesso tanti di quegli errori che se oggi 
rileggo una riga di codice degli anni passati rabbrividisco :)
 
poi
 
php.net
 
http://www.html.it/guide/guida-php-di-base/
 
http://www.mrwebmaster.it/php/guide/guida-php/
 
http://www.repni.it/view/guida_php_base_primo_programma.html
 
 
dopo che hai preso un pò di dimestichezza, scaricati qualche progetto da 
sourceforge o altro repository e studia il codice e le soluzione ai 
problemi affrontati.
 
dopo scaricati un qualsiasi framework (collezione di classi belle e 
pronte che ti aiutano a non reinventare la ruota), consiglio zend 
framework 2 (perchè è quello che utilizzo), ma anche Yii (che sta 
crescendo rapidamente).
 
datti un obbiettivo e dei tempi, la classica gestione 
agendina/libreria/videoteca.
 
Ciao

 supera...".
 
Ed è a questo che mi riferivo quando ti dicevo che le tue perplessità 
sono dovute al fatto che ancora non capisci che l'ambiente ha effetti sul 
codice. :)
 
Bye.


 
Tralaltro questa cosa credo riguardi le specifiche di HTML (e di 
conseguenza del browser) più che di PHP.
 
Cioè quella variabile te la ritrovi perché:
 
1) l'utente fa' clic su submit
2) il browser prendi i campi del form, forgia la richiesta la inoltra 
come POST.
3) PHP riceve la richiesta E le variabili, che le rende disponibili 
nella variabile superglobale $_POST.
 
Alla fine è il browser che manda quella variabile, e manda una stringa 
vuota. PHP non ha "colpe" in questo senso.