D4rkAng3l
16-06-2004, 12:35
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
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