Newsgroup: it.comp.www.php
Titolo: PROBLEMA INVIO QUERY DA FORM.

Salve, mi piacerebbe dare la possibilità agli utenti del mio sito, di 
inviare degli articoli da pubblicare direttamente nella homepage 
tramite un'area di accesso gratuita.
In pratica: ho creato una pagina con il form con questo codice:
<form method=\"post\" action=\"save.php\" 
name=\"insert_colonna_centrale\">
<strong>Titolo:</strong>
<input type=\"text\" size=\"25\" name=\"titolo\" maxlenght=\"150\"><br/>
<br/>
<strong>Testo</strong> (Fai un riassunto generale dell'articolo. Questa 
parte apparirà nella homepage):<br/>
<textarea cols=\"30\" rows=\"10\" name=\"testo\"></textarea><br/>
<strong>Testo Esteso</strong> (testo completo):<br/>
<textarea cols=\"30\" rows=\"15\" 
name=\"testo_esteso\"></textarea><br/><br/>
(Il formato deve essere aaaa-mm-gg)<br/>
<strong>Data</strong>:<input type\"text\" size=\"15\" 
name=\"data\"><br/>
<strong>Autore:</strong>
<input type=\"text\" size=\"25\" name=\"autore\"><br/>
<strong>Email:</strong>
<input type=\"text\" size=\"25\" name=\"email\"><br/>
Quindi, una volta completati tutti i campi, si dovrebbe accedere alla 
pagina di conferma save.php che ha questo codice:
<?
///////////////////Se i campi sono vuoti torna 
indietro.//////////////////////
if (trim($titolo) =="" OR trim($testo) =="" OR trim($autore)==""):
echo ("I campi Titolo, Testo ed Autore devono essere riempiti! Torna 
<strong>INDIETRO</strong>.");
else:
$titolo = addslashes(stripslashes($titolo));
$testo = addslashes(stripslashes($testo));
$testo_esteso = addslashes(stripslashes($testo_esteso));
$autore = addslashes(stripslashes($autore));
$email = addslashes(stripslashes($email));
$titolo = str_replace("<", "&lt;", $titolo);
$titolo = str_replace(">", "&gt;", $titolo);
$testo = str_replace("<", "&lt;", $testo);
$testo = str_replace(">", "&gt;", $testo);
$testo_esteso = str_replace("<", "&lt;", $testo_esteso);
$testo_esteso = str_replace(">", "&gt;", $testo_esteso);
$autore = str_replace("<", "&lt;", $autore);
$autore = str_replace(">", "&gt;", $autore);
$db= mysql_connect(localhost, "", "");
mysql_select_db(namedb, $db);
$query = "INTERT INTO tabella (titolo, testo, testo_esteso, data, 
autore, email) VALUES 
('$titolo', '$testo', '$testo_esteso', '$data', '$autore', '$email')";
if (mysql_query($query, $db))
echo "L'articolo è stato pubblicato correttamente";
else
echo "Errore durante l'inserimento. Torna <strong>INDIETRO</strong>!";
mysql_close($db);
endif;
?>
(ovviamente i dati di accesso sono diversi ed anche il nome del db).
QUINDI, ECCOCI AL PROBLEMA...:
Quando clicco il pulsante pubblica nella pagina dove si trova il form, 
accedo alla pagina save.php in cui è contenuta la QUERY per inserire i 
dati nei relativi campi.
Di regola, da come è impostato il codice, dovrebbe apparirmi la 
scritta "L'ARTICOLO E' STATO PUBBLICATO CORRETTAMENTE" ma non mi esce 
nessuna scritta.
Inoltre se entro in mysql con phpmyadmin, beh, non c'è nessuna nuova 
riga con i dati inseriti nel form... dov'è che sbaglio??? 
Vi ringrazio per l'attenzione.
CIAO BELLI!!!
Inviato da 
www.mynewsgate.net

 tramite un'area di accesso gratuita.
Hai verificato che i campi arrivino tutti allo script (eventuale problema di
register_globals)?
Hai fatto un pò di debug sulle operazioni con MySQL?
Cerca di trovare il punto in cui da il problema.
mysql_query("...") or die("errore");
Ciao
Marco

 nessuna scritta.
Se non esce nessuna scritta vuol dire che il tuo script muore
inesorabilmente. Con ogni probabiltà hai quindi disabilitato i messaggi di
errore (safe_mode?). Manda in output la query prima di eseguirla, così
controlli quello che hai creato. Se non compare neanche la query vuol dire
che muore ancora prima, magari quando si connette al db oppure, ARGH! forse
qui?
   mysql_select_db(namedb, $db);
non c'è il dollaro davanti a namedb....
Inoltre ti consiglio di usare htmlentities anzichè sostituire manualmente i
caratteri "<" e ">"
Ludovico Grossi