- Home
- Categorie
- Coding e Sistemistica
- PHP
- Query non invia dati al db
-
Query non invia dati al db
Raga,
ho scritto una query che tramite la funzione [post] dovrebbe recuperare dei dati dal form [...] e inserirli nel db, solo che quando clicco su invia mi viene restituita una pagina errore 404[php]
<?php
$DB_host = 'xxxxxxxxxxxx';
$DB_user = 'xxxxxxxxxxx';
$DB_password = 'uxxxxxxxxxx';
$DB_name = 'xxxxxxxxx';
$link = mysql_connect($DB_host, $DB_user, $DB_password);
if (!$link){
die ('Non riesco a connettermi: ' . mysql_error());
}
$db_selected = mysql_select_db($DB_name, $link);
if (!$db_selected) {die ("Errore nella selezione del database: " . mysql_error());
}
$rag.soc.1 = $_POST['rag.soc.1'];
$com.sed.leg.1 = $_POST['com.sed.leg.1'];
$via.1 = $_POST['via.1'];
$civ.1 = $_POST['civ.1'];
$cap.1 = $_POST['cap.1'];
$pro.1 = $_POST['pro.1'];
$cod.fis.1 = $_POST['cod.fis.1'];
$par.iva.1 = $_POST['par.iva.1'];
$ref.con.1 = $_POST['ref.con.1'];
$tel.1 = $_POST['tel.1'];
$email_radio = $_POST['email_radio'];
$ind.ema.1 = $_POST['ind.ema.1'];
$cog.2 = $_POST['cog.2'];
$nom.2 = $_POST['nom.2'];
$luo.nas.2 = $_POST['luo.nas.2'];
$dat.nas.2 = $_POST['dat.nas.2'];
$com.res.2 = $_POST['com.res.2'];
$pro.2 = $_POST['pro.2'];
$num.civ.2 = $_POST['num.civ.2'];
$cap.2 = $_POST['cap.2'];
$cod.fis.2 = $_POST['cod.fis.2'];
$rag.soc.3 = $_POST['rag.soc.3'];
$com.sed.leg.3 = $_POST['com.sed.leg.3'];
$prov.3= $_POST['prov.3'];
$via.3 = $_POST['via.3'];
$num.civ.3 = $_POST['num.civ.3'];
$cap.3 = $_POST['cap.3'];
$des.ban.4 = $_POST['des.ban.4'];
$iba.4 = $_POST['iba.4'];
$cog.int.4 = $_POST['cog.int.4'];
$nom.int.4 = $_POST['nom.int.4'];
$cod.fis.4 = $_POST['cod.fis.4'];
$op.4 = $_POST['6.1'];
$op.5 = $_POST['6.2'];
$op.6 = $_POST['opt.6.3'];
$pun.for.7 = $_POST['pun.for.7'];
$pun.for.8 = $_POST['pun.for.8'];
$com.for.8 = $_POST['com.for.8'];
$pro.for.8 = $_POST['pro.for.8'];
$via.for.8 = $_POST['via.for.8'];
$civ.for.8 = $_POST['civ.for.8'];
$cap.for.8 = $_POST['cap.for.8'];
$cod.pod.8 = $_POST['cod.pod.8'];
$cod.pre.8 = $_POST['cod.pre.8'];
$pot.kw.8 = $_POST['pot.kw.8'];
$con.ann.8 = $_POST['con.ann.8'];
$ten.ali.8 = $_POST['ten.ali.8'];
$tip.mis.8 = $_POST['tip.mis.8'];
$pot.con.8 = $_POST['pot.con.8'];
$dis.loc.8 = $_POST['dis.loc.8'];
$tar.tra.8 = $_POST['tar.tra.8'];
$mer.pro.8 = $_POST['mer.pro.8'];
$for.pro.8 = $_POST['for.pro.8'];
$off.com.8 = $_POST['off.com.8'];
$canale.8 = $_POST['canale.8'];
$operatore.8 = $_POST['operatore.8'];
$query = 'INSERT INTO contratti VALUES ($rag.soc.1,$com.sed.leg.1,$via.1,$civ.1,$cap.1,$pro.1,$cod.fis.1,$par.iva.1,$ref.con.1
$tel.1,$email_radio,$ind.ema.1,$cog.2,$luo.nas.2,$dat.nas.2,$com.res.2,$pro.2,$num.civ.2,$cap.2,$cod.fis.2,$rag.soc.3,
$com.sed.leg.3,$prov.3,$via.3,$num.civ.3,$cap.3,$des.ban.4,$iba.4,$cog.int.4,$nom.int.4,$cod.fis.4,$op.4,$op.5,$op.6
$pun.for.7,$pun.for.8,$com.for.8,$pro.for.8,$via.for.8,$civ.for.8,$cap.for.8,$cod.pod.8,$cod.pre.8,$pot.kw.8,
$con.ann.8,$ten.ali.8,$tip.mis.8,$pot.con.8,$dis.loc.8,$tar.tra.8,$mer.pro.8,$for.pro.8,$off.com.8,$canale.8,$operatore.8)';
if (!mysql_query($query, $link))
{
print("Attenzione, impossibile inserire il contratto");
}
else
{
print("Il contratto è stato inserito con successo");
}
mysql_close($link);
?>[/php]Chi mi aiuta? x:x
-
Ciao cuomocrescenzo e benvenuto nel Forum GT.
Per prima cosa ti direi di provare a mettere i VALUES tra apici. Vediamo se forse il problema è proprio questo.
Esempio:
[php]$query = "INSERT INTO contratti VALUES ('$rag.soc.1','$com.sed.leg.1','$via.1','$civ.1','etc etc')";[/php]EDIT:
Scusami, ho realizzato solo adesso: appena dai il submit visualizzi un 404?
Allora il problema è sull'action del form che non punta alla giusta pagina.
-
Scusami, ho realizzato solo adesso: appena dai il submit visualizzi un 404?
Allora il problema è sull'action del form che non punta alla giusta pagina.Ciao Samyorn, grazie per la celere risposta, onde evitare ogni sorta di dubbio, ti posto il codice della form action, tieni presente che sia la pagina test3.php e inserimento.php sono entrambe nella root del sito...ah cosa molto importante l'errore non è 404 come da me erroneamente indicato ma 500...
Ho verificato con mozilla e l'errore che mi viene restituito è:
PHP Parse error: syntax error, unexpected T_DNUMBER in C:\WebSites\salernoserver.com_9ibw9axjmvfhfkjm\inserimento.php on line 19
che corrisponde a:
$link = mysql_connect($DB_host, $DB_user, $DB_password); if (!$link){ die ('Non riesco a connettermi: ' . mysql_error()); } $db_selected = mysql_select_db($DB_name, $link); if (!$db_selected) { die ("Errore nella selezione del database: " . mysql_error()); } $rag.soc.1 = $_POST['rag.soc.1']; <------------ questa è la riga 19 $com.sed.leg.1 = $_POST['com.sed.leg.1']; $via.1 = $_POST['via.1']; $civ.1 = $_POST['civ.1']; $cap.1 = $_POST['cap.1']; $pro.1 = $_POST['pro.1']; $cod.fis.1 = $_POST['cod.fis.1']; $par.iva.1 = $_POST['par.iva.1']; $ref.con.1 = $_POST['ref.con.1']; $tel.1 = $_POST['tel.1']; $email_radio = $_POST['email_radio']; $ind.ema.1 = $_POST['ind.ema.1'];
Sto impazzendo!!!
Thanks!
-
Rieccomi,
avendo scritto le variabili in modo errato il sistema si bloccava alla riga 19, pertanto ho sistemato in questo modo..
<?php $DB_host = xxxxxxx; $DB_user = 'xxxxxxx'; $DB_password = 'xxxxxxxxx'; $DB_name = 'xxxxxxxxxx'; $link = mysql_connect($DB_host, $DB_user, $DB_password); if (!$link){ die ('Non riesco a connettermi: ' . mysql_error()); } $db_selected = mysql_select_db($DB_name, $link); if (!$db_selected) { die ("Errore nella selezione del database: " . mysql_error()); } $ragsoc = $_POST['rag.soc.1']; $comsedleg1 = $_POST['com.sed.leg.1']; $via1 = $_POST['via.1']; $civ1 = $_POST['civ.1']; $cap1 = $_POST['cap.1']; $pro1 = $_POST['pro.1']; $codfis1 = $_POST['cod.fis.1']; $pariva1 = $_POST['par.iva.1']; $refcon1 = $_POST['ref.con.1']; $tel1 = $_POST['tel.1']; $email_radio = $_POST['email_radio']; $indema1 = $_POST['ind.ema.1']; $cog2 = $_POST['cog.2']; $nom2 = $_POST['nom.2']; $luonas2 = $_POST['luo.nas.2']; $datnas2 = $_POST['dat.nas.2']; $comres2 = $_POST['com.res.2']; $pro2 = $_POST['pro.2']; $numciv2 = $_POST['num.civ.2']; $cap2 = $_POST['cap.2']; $codfis2 = $_POST['cod.fis.2']; $ragsoc3 = $_POST['rag.soc.3']; $comsedleg3 = $_POST['com.sed.leg.3']; $prov3= $_POST['prov.3']; $via3 = $_POST['via.3']; $numciv3 = $_POST['num.civ.3']; $cap3 = $_POST['cap.3']; $desban4 = $_POST['des.ban.4']; $iba4 = $_POST['iba.4']; $cogint4 = $_POST['cog.int.4']; $nomint4 = $_POST['nom.int.4']; $codfis4 = $_POST['cod.fis.4']; $op4 = $_POST['6.1']; $op5 = $_POST['6.2']; $op6 = $_POST['opt.6.3']; $punfor7 = $_POST['pun.for.7']; $punfor8 = $_POST['pun.for.8']; $comfor8 = $_POST['com.for.8']; $profor8 = $_POST['pro.for.8']; $viafor8 = $_POST['via.for.8']; $civfor8 = $_POST['civ.for.8']; $capfor8 = $_POST['cap.for.8']; $codpod8 = $_POST['cod.pod.8']; $codpre8 = $_POST['cod.pre.8']; $potkw8 = $_POST['pot.kw.8']; $conann8 = $_POST['con.ann.8']; $tenali8 = $_POST['ten.ali.8']; $tipmis8 = $_POST['tip.mis.8']; $potcon8 = $_POST['pot.con.8']; $disloc8 = $_POST['dis.loc.8']; $tartra8 = $_POST['tar.tra.8']; $merpro8 = $_POST['mer.pro.8']; $forpro8 = $_POST['for.pro.8']; $offcom8 = $_POST['off.com.8']; $canale8 = $_POST['canale.8']; $operatore8 = $_POST['operatore.8']; $query = "INSERT INTO contratti VALUES ('$ragsoc','$comsedleg1','$via1','$civ1','$cap1','$pro1','$codfis1','$pariva1','$refcon1', '$tel1','$email_radio','$indema1','$cog','$luonas2','$datnas2','$comres2','$pro2','$numciv2','$cap2','$codfis2','$ragsoc3', '$comsedleg3','$prov3','$via3','$numciv3','$cap3','$desban4','$iba4','$cogint4','$nomint4','$codfis4','$op4','$op5','$op6', '$punfor7','$punfor8','$comfor8','$profor8','$viafor8','$civfor8','$capfor8','$codpod8','$codpre8','$potkw8', '$conann8','$tenali8','$tipmis8','$potcon8','$disloc8','$tartra8','$merpro8','$forpro8','$offcom8','$canale8','$operatore8')"; if (!mysql_query($query, $link)) { print("Attenzione, impossibile inserire il contratto"); } else { print("Il contratto è stato inserito con successo"); } mysql_close($link); ?>
questa è invece la struttura della tabella contratti, dove tutti i campi sono VARCHAR tra ID che è INTEGER AUTOINCREMENT INDEX
id, rag.soc.1, com.sed.leg.1, via.1, civ.1, cap.1, pro.1, cod.fis.1, par.iva.1, ref.con.1, tel.1, email_radio, ind.ema.1, cog.2, nom.2, luo.nas.2, dat.nas.2, com.res.2, pro.2, num.civ.2, cap.2, cod.fis.2, rag.soc.3, com.sed.leg.3, prov.3, via.3, num.civ.3, cap.3, des.ban.4, iba.4, cog.int.4, nom.int.4, cod.fis.4, 6.1, 6.2, opt.6.3, pun.for.7, pun.for.8, com.for.8, pro.for.8, via.for.8, civ.for.8, cap.for.8, cod.pod.8, cod.pre.8, pot.kw.8, con.ann.8, ten.ali.8, tip.mis.8, pot.con.8, dis.loc.8, tar.tra.8, mer.pro.8, for.pro.8, off.com.8, canale.8, operatore.8
Adesso la query, penso venga eseguita, solo che mi viene restituita la prima print, ossia print("Attenzione, impossibile inserire il contratto");
x:xHo bisogno di Voi!
-
Oltre ad aver dato alle variabili un nome appropriato la query, per l'immissione del contatto, è errata. Manca appunto prima del VALUES i campi coinvolti nell'insert.
Es.: INSERT INTO contatti (id, rag.soc.1, com.sed.leg.1, via.1, civ.1, cap.1, pro.1, cod.fis.1, par.iva.1, ref.con.1, tel.1, email_radio, ind.ema.1, cog.2, nom.2, luo.nas.2, dat.nas.2, com.res.2, pro.2, num.civ.2, cap.2, cod.fis.2, rag.soc.3, com.sed.leg.3, prov.3, via.3, num.civ.3, cap.3, des.ban.4, iba.4, cog.int.4, nom.int.4, cod.fis.4, 6.1, 6.2, opt.6.3, pun.for.7, pun.for.8, com.for.8, pro.for.8, via.for.8, civ.for.8, cap.for.8, cod.pod.8, cod.pre.8, pot.kw.8, con.ann.8, ten.ali.8, tip.mis.8, pot.con.8, dis.loc.8, tar.tra.8, mer.pro.8, for.pro.8, off.com.8, canale.8, operatore.8) VALUES (qui le variabili riferite ai campi);
Prova e fammi sapere
CIAO
-
@mikslap said:
Oltre ad aver dato alle variabili un nome appropriato la query, per l'immissione del contatto, è errata. Manca appunto prima del VALUES i campi coinvolti nell'insert.
Es.: INSERT INTO contatti (id, rag.soc.1, com.sed.leg.1, via.1, civ.1, cap.1, pro.1, cod.fis.1, par.iva.1, ref.con.1, tel.1, email_radio, ind.ema.1, cog.2, nom.2, luo.nas.2, dat.nas.2, com.res.2, pro.2, num.civ.2, cap.2, cod.fis.2, rag.soc.3, com.sed.leg.3, prov.3, via.3, num.civ.3, cap.3, des.ban.4, iba.4, cog.int.4, nom.int.4, cod.fis.4, 6.1, 6.2, opt.6.3, pun.for.7, pun.for.8, com.for.8, pro.for.8, via.for.8, civ.for.8, cap.for.8, cod.pod.8, cod.pre.8, pot.kw.8, con.ann.8, ten.ali.8, tip.mis.8, pot.con.8, dis.loc.8, tar.tra.8, mer.pro.8, for.pro.8, off.com.8, canale.8, operatore.8) VALUES (qui le variabili riferite ai campi);
Prova e fammi sapere
CIAOCiao mikslap,
innanzitutto grazie per la risposta,
ho modificato la query in questo modo[PHP]
$query = "INSERT INTO contratti ('id', 'rag.soc.1', 'com.sed.leg.1', 'via.1', 'civ.1', 'cap.1', 'pro.1', 'cod.fis.1', 'par.iva.1', 'ref.con.1',
'tel.1', 'email_radio', 'ind.ema.1', 'cog.2', 'nom.2', 'luo.nas.2', 'dat.nas.2', 'com.res.2', 'pro.2', 'num.civ.2', 'cap.2', 'cod.fis.2', 'rag.soc.3',
'com.sed.leg.3', 'prov.3', 'via.3', 'num.civ.3', 'cap.3', 'des.ban.4', 'iba.4', 'cog.int.4', 'nom.int.4', 'cod.fis.4', '6.1', '6.2', 'opt.6.3', 'pun.for.7',
'pun.for.8', 'com.for.8', 'pro.for.8', 'via.for.8', 'civ.for.8', 'cap.for.8', 'cod.pod.8', 'cod.pre.8', 'pot.kw.8', 'con.ann.8', 'ten.ali.8', 'tip.mis.8',
'pot.con.8', 'dis.loc.8', 'tar.tra.8', 'mer.pro.8', 'for.pro.8', 'off.com.8', 'canale.8', 'operatore.8')
VALUES ('$ragsoc','$comsedleg1','$via1','$civ1','$cap1','$pro1','$codfis1','$pariva1','$refcon1',
'$tel1','$email_radio','$indema1','$cog','$luonas2','$datnas2','$comres2','$pro2','$numciv2','$cap2','$codfis2','$ragsoc3',
'$comsedleg3','$prov3','$via3','$numciv3','$cap3','$desban4','$iba4','$cogint4','$nomint4','$codfis4','$op4','$op5','$op6',
'$punfor7','$punfor8','$comfor8','$profor8','$viafor8','$civfor8','$capfor8','$codpod8','$codpre8','$potkw8',
'$conann8','$tenali8','$tipmis8','$potcon8','$disloc8','$tartra8','$merpro8','$forpro8','$offcom8','$canale8','$operatore8')";
[/PHP]solo che continua a darmi lo stesso errore...
Sto valutando cosa possa crearlo, ma non riesco a venirne a capo.
Saluti!
-
Ciao,
per indicare i nomi dei campi tra apici, non devi usare l'apice semplice '
ma i backquotes ` (alt+96 da tasterieno numerico).
I backquotes per identificare i nomi dei database, delle tabelle e dei campi non sono obbligatori (se guardi l'esempio di **mikslap **non li ha utilizzati), tuttavia sono necessari quando i nomi possono essere confusi con altre istruzioni, come ad esempio nel tuo caso in cui hai il . nel nome del campo.Un'alternativa per evitare di elencare tutti i campi nella query è quella di inserire un valore per ogni campo della tabella.
La tua query non salvava i dati perchè non c'era corrispondenza tra il numero dei campi della tabella e i valori inseriti, mancava il campo ID, quello con autoincrement, che puoi inserire impostandolo a NULL.Ad esempio, se hai una tabella con tre campi:
id (autoincrement)
nome
cognomePer inserire i dati puoi fare come ti ha suggerito** mikslap **
INSERT INTO tabella(`nome`,`cognome`) VALUES ('dato_nome','dato_cognome')
oppure assegnando NULL al campo con autoincrement
INSERT INTO tabella VALUES (NULL,'dato_nome','dato_cognome')
Alessandro
-
Ciao,
ho modificato la query in questo modo
$query = "INSERT INTO contratti (`rag.soc.1`, `com.sed.leg.1`, `via.1`, `civ.1`, `cap.1`, `pro.1`, `cod.fis.1`, `par.iva.1`, `ref.con.1`, `tel.1`, `email_radio`, `ind.ema.1`, `cog.2`, `nom.2`, `luo.nas.2`, `dat.nas.2`, `com.res.2`, `pro.2`, `num.civ.2`, `cap.2`, `cod.fis.2`, `rag.soc.3`, `com.sed.leg.3`, `prov.3`, `via.3`, `num.civ.3`, `cap.3`, `des.ban.4`, `iba.4`, `cog.int.4`, `nom.int.4`, `cod.fis.4`, `6.1`, `6.2`, `opt.6.3`, `pun.for.7`, `pun.for.8`, `com.for.8`, `pro.for.8`, `via.for.8`, `civ.for.8`, `cap.for.8`, `cod.pod.8`, `cod.pre.8`, `pot.kw.8`, `con.ann.8`, `ten.ali.8`, `tip.mis.8`, `pot.con.8`, `dis.loc.8`, `tar.tra.8`, `mer.pro.8`, `for.pro.8`, `off.com.8`, `canale.8`, `operatore.8`) VALUES (NULL, '$ragsoc','$comsedleg1','$via1','$civ1','$cap1','$pro1','$codfis1','$pariva1','$refcon1', '$tel1','$email_radio','$indema1','$cog','$luonas2','$datnas2','$comres2','$pro2','$numciv2','$cap2','$codfis2','$ragsoc3', '$comsedleg3','$prov3','$via3','$numciv3','$cap3','$desban4','$iba4','$cogint4','$nomint4','$codfis4','$op4','$op5','$op6', '$punfor7','$punfor8','$comfor8','$profor8','$viafor8','$civfor8','$capfor8','$codpod8','$codpre8','$potkw8', '$conann8','$tenali8','$tipmis8','$potcon8','$disloc8','$tartra8','$merpro8','$forpro8','$offcom8','$canale8','$operatore8')";
adesso mi dice che il contratto è stato inserito, solo che quando vado a visualizzare la table contratti, è vuota x o meglio la visualizzo cosi...
1, '', '', '', '', '', '', '', '', '', '', '', 'No', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''
Mi è sorto un dubbio...
i campi che recuperio tramite post$ragsoc = $_POST['rag.soc.1']; $comsedleg1 = $_POST['com.sed.leg.1']; $via1 = $_POST['via.1']; $civ1 = $_POST['civ.1'];
devono avere gli apici semplici o i backquotes ` (alt+96 da tasterieno numerico)?
-
Verifica come i dati arrivano al php con
[PHP]
print_r($_POST);
[/PHP]
e troverai il motivo
-
@Magicale said:
Verifica come i dati arrivano al php con
[php]
print_r($_POST);
[/php]
e troverai il motivoScusa Magicale,
essendo un perfetto neofita, mi indicheresti in quale parte del codice inserirlo..Thanks!
-
Nel tuo script è indifferente, puoi inserirlo in qualsiasi punto dello script. Vedrai l'intero contenuto dell'array $_POST ed in particolare i nomi degli indici.
-
Ok Risolto,
era un errore nella query.
Thanks!
-
La query era errata perchè hai fatto un miscuglio delle due soluzioni che ti sono state suggerite
Ma mi pare che ci fosse anche qualcosa nel modo in cui recuperavi i dati che ad esempio non erano in
[php]
$ragsoc = $_POST['rag.soc.1'];
[/php]
ma in
[php]
$ragsoc = $_POST['rag_soc_1'];
[/php]L'utilizzo di print_r($_POST) immagino ti abbia evidenziato anche questo
Alessandro
-
Ciao Alessandro,
in effetti io successivamente alla tua risposta e non riuscendo a mettermi in contatto con te, ho sentito un amico il quale mi ha suggerito di evitare di utilizzare il "." ma utilizzare "_".
Pertanto seguendo i suoi suggerimenti ho modificato sia la struttura del DB, sia tutte le variabili $_POST.Alla fine ho spezzettato la query e lo eseguita poco alla volta, fino a trovare l'errore...in effetti nel SELECT INTO contratti avevo indicato correttamente tutti i valori, mentre nel VALUES ne avevo omesso uno.
Adesso ti chiedo un consiglio, per portare a termine il mio lavoro devo fare altre cose, ossia,
- vorrei fare in modo di mostrare all'utente un'anteprima dei dati per poi farli inserire;
- devo creare uno script che mostri i contratti solo all'utente che li ha inseriti, ossia se l'utente che fa il login è pippo quando clicca sul link " i miei contratti" mostra solo i contratti di pippo , se l'utente che fa il logini è pluto quando clicca sul link " i miei contratti" ecc ecc. se l'utente che fa il login è amministratore mostra tutti i contratti...
mi consigli di aprire un'altro post, o continuare con questo?
Ciao
Crescenzo.