|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Bannato
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2688
|
Alcune domandine su Php/MySql
Ciao,
stavo vedendomi un tutorialdi FreePhp.it come funziona MySql interfacciato al Php.... Ho fatto questa parte di script ma Apache mi dà il seguente errore: Parse error: parse error, unexpected T_ELSEIF in c:\programmi\easyphp\www\scrptdb\save.php on line 14 L'errore dovrebbe trovarsi alla riga dove applica la funzione trim ma non riesco a capire cosa ci sia che non vada... questo è il codice completo: <? include("top_foot.php"); include("config.inc.php"); top(); if("$pass!=$password"); // Controlla se la password immessa nel forum corrisponde al valore della variabile $password memorizzata in config.inc.php echo "Password errata"; // Verifica che i campi titolo e testo non siano vuoti o composti da soli spazzi /* La funzione trim ha lo scopo di eliminare caratteri vuoti dall'inizio e dalla fine della stringa così da non accettare stringhe composte da soli spazi prive di contenuto informativo */ elseif(trim($titolo) == "" OR trim($testo) == ""); echo "I campi Titolo e Testo devono essere inseriti !!!"; /* Verifica che le stringhe inserite non contengono caratteri particolari come gli apici o le virgolette quindi prima toglie gli slash e poi li reinserisce per essere sicuri che le stringhe siano preceduto dallo slash */ else: $titolo = addslashes(stripslashes($titolo)); $autore = addslashes(stripslashes($autore)); $mail = addslashes(stripslashes($mail)); $testo = addslashes(stripslashes($testo)); /* Per non avere problemi con alcuni caratteri che vanno in contrasto con i tag html (come < e >) lo script li sostituisce con i corrispondenti in html e inserisce nel testo il carattere di fineriga. */ $titolo = str_replace("<", "<", $titolo); $titolo = str_replace(">", ">", $titolo); $autore = str_replace("<", "<", $autore); $autore = str_replace(">", ">", $autore); $testo = str_replace("<", "<", $testo); $testo = str_replace(">", ">", $testo); $testo = nl2br($testo); /* Lo script converte ora la data in formato timestamp mediante la funzione mktime */ $data = mktime("0", "0", "0", $mese, $giorno, $anno); /* Lo script si collega al db */ $db = mysql_connect($db_host, $db_user, $db_password); // Viene assegnato un valore TRUE o FALSE alla variabile $db a seconda che la connessione sia andata a buon fine o meno if ($db == FALSE) die ("Errore nella connessione, verificare i parametri inseriti nel file config.inc.php"); mysql_select_db($db_name, $db) or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php"); /* Query che si occupa dell'inserzione dei dati immessi nel db */ $query = "INSERT INTO news (titolo, testo, data, autore, mail) VALUES ('$titolo', '$testo', '$data', '$autore', '$mail')"; /* Verifico l'avvenuta inserzione dei dati nel db */ if(mysql_query($query, $db)) echo "L'articolo è stato inserito correttamente"; else echo "Errore durante l'inserimento dell'articolo nel db !!!"; mysql_close($db); endif; foot(); ?> Poi ho qualche altro dubbio su questa parte di codice che fà in modo che lo script si connetta al database: $db = mysql_connect($db_host, $db_user, $db_password); // Viene assegnato un valore TRUE o FALSE alla variabile $db a seconda che la connessione sia andata a buon fine o meno if ($db == FALSE) die ("Errore nella connessione, verificare i parametri inseriti nel file config.inc.php"); mysql_select_db($db_name, $db) or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php"); Paricamente la funzione mysql_connect prende in ingreso il parametro $db_host che contiene l'host sul quale risiede il db, $db_user che contiene l'utente e $db_password che contiene la password per connettersi al db....se la connessione ha successo la variabile $db viene inizializzata a TRUE se non ha successo viene inizializzata a FALSE e lo script stampa il messaggio di errore....fino quà non dovrebbero esserci problemi concettuali... La cosa che non mi è ben chiara è invece il funzionamento della funzione mysql_select_db...da quello che ho capito questa funzione seleziona il db da usare, giusto? I parametri che ha in entrata sono $db_name che contiene il nome del db, e fin quà tutto ok, e $db...ma $db non conteneva solamente TRUE o FALSE dell'avvenuta connessione?Perchè glielo devo passare a mysql_select_db?Per fargli capire che la connessione è avvenuta con successo e che può selezionare il db giusto? booo svelatemi voi questo mistero.... Altra domanda sempre relativa alla funzione mysql_select_db...da quello che ho letto restituisce direttamente un valore o TRUE o FALSE e non c'è bisogno di metterlo in una variabile per poi fare il controllo Quando faccio: mysql_select_db($db_name, $db) or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php"); vuol dire che se non è andata a buon fine stampa direttamente il messaggio di errore?!?! ma Php dove lo va a mettere il valore TRUE o FALSE per decidere cosa fare Grazie Andrea |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
A $db viene assegnato FALSE se fallisce la chiamata...altrimenti gli viene assegnato un identificativo della connessione al DB
or è un operatore che ritorno vero (diverso da false) quando uno dei due parametri sono diversi da FALSE... L'operatore è associativo a sinistra quindi viene valutato prima il parametro di sinistra (il valore ritornato da mysql_select_db)...se il primo è vero non valuta il secondo (c'è già un parametro diverso da false)...ma se mysql_select_db allora valuta anche il secondo che a questo punto termina lo script e visualizza l'errore... |
|
|
|
|
|
#3 |
|
Bannato
Iscritto dal: Mar 2004
Città: Roma
Messaggi: 2688
|
Grazie mille Cionci
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:15.


















