Newsgroup: it.comp.www.php
Titolo: Query non riuscita

Nella progressione verso la conoscenza di php ;), ho finalmente risolto
grazie a voi i problemi di validazione del form che stavo costruendo.
Adesso però vorrei inserire i dati in un db, dove hop già costruito un
atabella con i valori che mi servono.
Nel mio file php, che deve essere un unico listato, altrimenti phpnuke
fa le bizze ;), ho messo:
<form action=\"modules.php?name=$module_name\" method=\"post\">
[form]
<input type=\"submit\" name=\"Condivido\" value=\"Condivido\">
Poi c'è la validazione dei dati (nome, cognome, ecc.) che funziona
egregiamente restituendomi una tabella con i dati appena compilati.
Nella condizione if, se tutto va bene, compare un tasto che dovrebbe
portare all'immissione nel db:
echo"<input type=\"submit\" value=\"Prosegui\"
onclick=\"window.location.href='modules.php?name=$module_name&op=insertdb'\">
[iljavascript è inserito per problemi di funzionalità tra IE e Netscape]
dove insertdb, messa alla fine dello script, è:
global $sitename, $Default_Theme, $user_prefix, $db, $module_name;
function insertdb() {
	$db->sql_query("INSERT INTO ".$user_prefix."_subscript (id, nome,
cognome, email, ) VALUES (NULL, '$nome', '$cognome', '$email')");
	if(!$result) {
	    echo"Messaggio di errore<br>";
	} else {
	echo "Conferma inserimento";
}}
Dove ho toppato? Cosa ho omesso? Devo usare uno switch, anche se ho una
funzione sola? :)
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

> global $sitename, $Default_Theme, $user_prefix, $db, $module_name;
Prova ad inserire questa riga nella funzione insertdb();
ciao,
ste.

 Prova ad inserire questa riga nella funzione insertdb();
Niente da fare! :( Ho poi provato a cambiarla così:
function insertdb() {
$sql=("INSERT INTO ".$user_prefix."_subscript (id, nome, cognome, email)
VALUES ('', '$nome', '$cognome', '$email')");
$result = $db->sql_query($sql);
	$db->sql_query($sql);
	if(!$result) {
	    echo"errore";
	} else {
	echo "tutto bene!";


> global $sitename, $Default_Theme, $user_prefix, $db, $module_name; > Prova ad inserire questa riga nella funzione insertdb();
Niente da fare! :( Ho poi provato a cambiarla cosě:
function insertdb() {
$sql=("INSERT INTO ".$user_prefix."_subscript (id, nome, cognome, email)
VALUES ('', '$nome', '$cognome', '$email')");
$result = $db->sql_query($sql);
	$db->sql_query($sql);
	if(!$result) {
	    echo"errore";
	} else {
	echo "tutto bene!";
}}


 }}
Secondo me cmq rimane un problema di ambito delle variabili, ovvero $nome
$cognome $email ad esempio non sono dichiarate all'interno della funzione e
non vengono passate nemmeno come argomenti della funzione, come anche
$user_prefix.
Controlla bene che tutte le var che passi a insertdb() attraverso il form
rientrino nel suo ambito (ad esempio passando le var come argomenti),
altrimenti quest'ultima non vedrà nessun valore e di conseguenza il record
del db risulterà vuoto.
ste

}}
Se non ci spieghi qual č il risultato che viene fuori (errore, mancato
inserimento senza errore, etc...) č difficile aiutarti. Non ho capito
qual č il malfunzionamento.
Ciao
Francesco
_____________________________________
Per rispondere in e-mail togli NOSPAM 

}}
Aspetta forse ho capito...hai inserito questa riga in cima al tuo
modulo phpnuke?
require_once("mainfile.php");
altrimenti quelle variabili globali sono nulle!


 altrimenti quelle variabili globali sono nulle!
L'ho inserito insieme al resto della "testa" del modulo... Il fatto è
che non mi da nessun errore: semplicemente, dato l'invio, ritorna al
form di partenza, senza fare neanche una piega! :(


 require_once("mainfile.php"); > altrimenti quelle variabili globali sono nulle!
L'ho inserito insieme al resto della "testa" del modulo... Il fatto è
che non mi da nessun errore: semplicemente, dato l'invio, ritorna al
form di partenza, senza fare neanche una piega! :(


 form di partenza, senza fare neanche una piega! :(
Ma in che modo richiami la funzione insertdb() ? dal codice postato non si
vede.
stefano

 vede.
Ho provato alcune modifiche, ma non ha funzionato... Per fargli prendere
di nuovo il form, ho dovuto smanettare cosė:
$form="<form action=\"modules.php?name=$module_name&op=inserisci\"
method=\"post\">
[resto del form]";
opentable();
echo "$form";
closetable();
function dati() {echo "$form";}
function control() {
[tutti i controlli, che se positivi portano a <input type=\"submit\"
value=\"Prosegui\"
onclick=\"window.location.href='modules.php?name=$module_name&op=insertdb'\">]
}
function insertdb() {global $user_prefix, $my_headlines, $module_name,
$db, [seguono le altre variabili del form];
}
poi ci metto i richiami al tema di phpnuke e infine lo switch:
switch($op){
case "inserisci": control();
break;
case "insertdb": insertdb();
break;
default: dati();
}
Una volta compilato, il form non esegue pių neanche i controlli, ma
ritorna a se stesso, con i campi vuoti... Dov'č ho toppato stavolta? :(


 ritorna a se stesso, con i campi vuoti... Dov'è ho toppato stavolta? :(
Era un problema di variabili non dichiarate come globali.. Per il db mi
sono arrangiato con delle session_start! :)
