-
problema di sintassi
salve a tutti, sono appena arrivato, sto imparando php ma ho già un problema...
quando provo ad andare sulla pagina delle news(mtgforum.altervista.org/news/news.php),
mi dice che nn ho selezionato il database...
quando provo a inviarle...mi da questo:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'titolo=, testo=' at line 2...
Ora, non so dov' è il problema, perciò posto i codici:
db.inc.php:
Codice:
<?php
$dbcnx = @mysql_connect('localhost','xxxxxxxxx','xxxxxxx');
if (!$dbcnx) {
exit('<p>Unable to connect to the ' .
'database server at this time.</p>');
}
$connect=mysql_select_db('my_mtgforum', '$dbcnx);
if (!$connect) {
exit('<p>Unable to locate the ' .
'database at this time.</p>');
}
?>
news.php:
Codice:
<?php
include ('db.inc.php') ;
$novita=@mysql_query('select id, titolo from news');
if(!$news){ echo('<p>impossibile trovare il database delle news!' . 'errore:' . mysql_error() . '</p>');}
while($novita=mysql_fetch_array($news)) {
$id=$novita['id'];
$titolo=htmlspecialchars($news['titolo']);
echo '<a href="vedinews.php?id=$id">$titolo</a>';
}
?>
invianews.php:
Codice:
<?php
include ('db.inc.php');
$titolo=$_POST['titolo'];
$testo=$_POST['testo'];
$sql='insert into news
titolo=' . $titolo . ',
testo=' . $testo . ' ;';
if (!mysql_query($sql)) {
echo('<p>errore nell aggiunta della news:' . mysql_error() . '</p>');
}else{
echo('<p>nuova news aggiunta!!</p>');
}
$nid=mysql_insert_id();
?>
questi sono solo i codici php, ma penso che l' errore non sia da altre parti...
spero che mi aiuterete...
ciao:razz:
-
Hai attivato il database mySQL da pannello AlterVista >> Risorse & Upgrades?
Per lo script in uso, è necessario.
Ciao!
P.S: Togli la password dallo script editando il tuo messaggio al più presto! :wink:
-
-
Ho dato soltanto un'occhiatina veloce al codice.
Codice PHP:
$sql='insert into news
titolo=' . $titolo . ',
testo=' . $testo . ' ;';
dovrebbe essere:
Codice PHP:
$sql="INSERT INTO news (titolo,testo) VALUES ('".$titolo ."','".$testo."');";
Ciao!
P.S: Oltre a tradurre i caratteri speciali in entità html con htmlspecialchars(), io utilizzerei anche mysql_escape_string() o addslashes() per l'escape e per evitare problemi con le virgolette. :wink:
Ciao!
-
ora ho fatto, mi rimane l' errore che dice "No database selected":crycry:
-
Ah non avevo notato la tua segnalazione per quell'errore.
Bhè, quando ti connetti al database, assegni una variabile alla connessione.
Le soluzioni sono due:
o trasformi db.inc.php in:
Codice PHP:
<?php
mysql_connect('localhost','xxxxxxxxx','xxxxxxx');
mysql_select_db('my_mtgforum');
?>
Oppure ad ogni query passi come secondo argomento la variabile di connessione:
Codice PHP:
mysql_query("SELECT ...",$variabile_di_connessione);
Se non hai connessioni da effettuare a diversi database, ti consiglio di usare la prima soluzione.
-
Ho provato a a fare con il primo eseempio, ma mi dice che non è stato selezionato il database ancora......
-
L'errore è dato dal fatto che assegni il risultato della query alla variabile $novita, ma nell'if utilizzi la variabile $news. Devi usare la stessa variabile.