- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- Problema di salvataggio dati php-MySQL
-
Problema di salvataggio dati php-MySQL
Ciao,
ho un file 'inserisci_socio.php' per l'immissione dei dati:<?php session_start(); include("./inc/config.php"); include "my_config.php"; Pagina_protetta(); if($_SESSION['stato'] > 3 && $_SESSION['stato'] < 7){ ?> <div id='inserimento_soci'> <form method="POST" action="salva_socio.php"> <table width="70%" height="100px" align="center"> <tr> <td>Data Iscrizione:</td> <td> <?php /* calcolo data attuale*/ $adesso=time(); $data=date("d/m/Y H:m:s"); ?> <input type='text' <?echo'value='.$data?> size='8' name='data_iscrizione' /> </td> </tr> <tr> <td>Cognome:</td> <td><input type='text' size='20' name='cognome'></td> </tr> <tr> <td>Nome:</td> <td><input type='text' size='20' name='nome'></td> </tr> <tr> <td>Nazionalitá:</td> <td><input type="text" name="nazionalita" value="ITALIANA" size="12"></td> </tr> <tr> <td>Comune di Nascita:</td> <td><input type="text" name="comune_nascita" size="30"></td> </tr> <tr> <td>Provincia di Nascita:</td> <td><input type="text" name="provincia_nascita" size="10" /></td> </tr> <tr> <td>Data di Nascita:</td> <td> <select name="giorno"> <?php for ($i=1; $i<=31; $i++) echo "<option value = $i>$i"; ?> </select> <select name="mese"> <option value="1">Gennaio <option value="2">Febbraio <option value="3">Marzo <option value="4">Aprile <option value="5">Maggio <option value="6">Giugno <option value="7">Luglio <option value="8">Agosto <option value="9">Settembre <option value="10">Ottobre <option value="11">Novembre <option value="12">Dicembre </select> <select name="anno"> <?php $anno=date(Y); $anno_inizio=$anno-17; $anno_fine=$anno-7; for ($i=$anno_inizio; $i<=$anno_fine; $i++) echo "<option value = $i>$i"; ?> </select> </td> </tr> <tr> <td>Sesso:</td> <td><select name="sesso"> <option value="M">M <option value="F">F </select> </td> </tr> <tr> <td>Codice Fiscale:</td> <td><input type="text" name="codice_fiscale" size="16"></td> </tr> <tr> <td>Comune di Residenza:</td> <td><input type="text" name="comune_residenza" size="30"></td> </tr> <tr> <td>Provincia di Residenza:</td> <td><input type="text" name="provincia_residenza" size="10"></td> </tr> <tr> <td>Cap:</td> <td><input type="text" name="cap" size="5"></td> </tr> <tr> <td>Indirizzo:</td> <td><input type="text" name="indirizzo" size="30"></td> </tr> <tr> <td>Cartellino FIGC:</td> <td><input type="text" name="cartellino_figc" size="10"></td> </tr> <tr> <td>Telefono Abitazione:</td> <td><input type="text" name="telefono_abitazione" size="10"></td> </tr> <tr> <td>Telefono Cellulare:</td> <td><input type="text" name="telefono_cellulare" size="10"></td> </tr> <tr> <td height="9" colspan="2" align="center" valign="top"> <div align="center"> Assicurati di aver inserito, bene, tutti i dati e clicca <input type="submit" name="submit" value="Salva"> per continuare </div> </td> </tr> </table> </form> </div> <?php } ?> ```ho un secondo file 'salva_socio.php': [php] <?php /*****************************************/ /* Aggiungi Socio Dati Tesseramento */ /*****************************************/ include("./inc/config.php"); include "my_config.php"; //Pagina_protetta(); //if($_SESSION['stato'] > 3 && $_SESSION['stato'] < 7){ $data_iscrizione=time(); $username=strtolower($_POST['nome'].$_POST['cognome']); $password=$username; $cognome = strtoupper($_POST['cognome']); $nome = strtoupper($_POST['nome']); $nazionalita = $_POST['nazionalita']; $comune_nascita = strtoupper($_POST['comune_nascita']); $provincia_nascita = strtoupper($_POST['provincia_nascita']); $giorno = $_POST['giorno']; $mese = $_POST['mese']; $anno = $_POST['anno']; $data_nascita=mktime(0,0,0,$mese,$giorno,$anno); $sesso = $_POST['sesso']; $codice_fiscale = strtoupper($_POST['codice_fiscale']); $comune_residenza = strtoupper($_POST['comune_residenza']); $provincia_residenza = strtoupper($_POST['provincia_residenza']); $cap = $_POST['cap']; $indirizzo = strtoupper($_POST['indirizzo']); $cartellino_figc = $_POST['cartellino_figc']; $telefono_abitazione = $_POST['telefono_abitazione']; $telefono_cellulare = $_POST['telefono_cellulare']; ?> <div align="center">"Riepilogo dati inseriti:" <form method="post" action=""> <table width="40%" align="center"> <tr> <td>Data Iscrizione:</td><td><? echo "$data_iscrizione"; ?></td> </tr> <tr> <td>username:</td><td><? echo "$username"; ?></td> </tr> <tr> <td>password:</td><td><? echo "$password"; ?></td> </tr> <tr> <td>Cognome:</td><td><? echo "$cognome"; ?></td> </tr> <tr> <td>Nome:</td><td><? echo "$nome"; ?></td> </tr> <tr> <td>Nazionalità:</td><td><? echo "$nazionalita"; ?></td> </tr> <tr> <td>Comune di Nascita:</td><td><? echo "$comune_nascita"; ?></td> </tr> <tr> <td>Provincia di Nascita::</td><td><? echo "$provincia_nascita"; ?></td> </tr> <tr> <td>Data di Nascita:</td><td><? echo "$data_nascita"; ?></td> </tr> <tr> <td>Sesso:</td><td><? echo "$sesso"; ?></td> </tr> <tr> <td>Codice Fiscale:</td><td><? echo "$codice_fiscale"; ?></td> </tr> <tr> <td>Comune di Residenza:</td><td><? echo "$comune_residenza"; ?></td> </tr> <tr> <td>Provincia di Residenza:</td><td><? echo "$provincia_residenza"; ?></td> </tr> <tr> <td>Cap:</td><td><? echo "$cap"; ?></td> </tr> <tr> <td>Indirizzo:</td><td><? echo "$indirizzo"; ?></td> </tr> <tr> <td>Cartellino F.I.G.C.:</td><td><? echo "$cartellino_figc"; ?></td> </tr> <tr> <td>Telefono Abitazione:</td><td><? echo "$telefono_abitazione"; ?></td> </tr> <tr> <td>Telefono Cellulare:</td><td><? echo "$telefono_cellulare"; ?></td> </tr> <tr> <td> </td><td><input type="submit" name="submit" value="Conferma"></td> </tr> </table> </form> </div> <?php $a="1"; if ($a=="0"){ /* connessione al database */ $db=mysql_connect($db_host, $db_user, $db_pass); if ($db==false) die("Errore nella connessione. Verificare i parametri nel file ./inc/config.php"); /* seleziona database */ mysql_select_db($db_name, $db) or die("Errore nella selezione del database. Verificare i parametri nel file ./inc/config.php"); $query="INSERT INTO `elenco_soci` ( data_iscrizione, username, password, cognome, nome, nazionalita, comune_nascita, provincia_nascita, data_nascita, sesso, codice_fiscale, comune_residenza, provincia_residenza, cap, indirizzo, cartellino_figc, telefono_abitazione, telefono_cellulare) values ( '$data_iscrizione', '$username', '$password', '$cognome', '$nome', '$nazionalita', '$comune_nascita', '$provincia_nascita', '$data_nascita', '$sesso', '$codice_fiscale', '$comune_residenza', '$provincia_residenza', '$cap', '$indirizzo', '$cartellino_figc', '$telefono_abitazione', '$telefono_cellulare')"; $risultato=mysql_query($query,$db); mysql_close(); /*echo "<meta http-equiv=\"Refresh\" content=\"1; URL=index.php\">Operazione registrata correttamente!"; } else { echo "<meta http-equiv=\"Refresh\" content=\"1; URL=index.php\">Non sei abilitato all'inserimento dei Soci!"; }*/ } ?>[/php] Il problema è che pur ricevendo regolarmente tutti i dati non me li scrive sul db, e non mi segnala nessun errore. Mi potete dire dove sbaglio? Grazie.
-
Ciao,
hai scritto:
[PHP]
$a="1";
if ($a=="0"){
...codice per inserimento nel db...
[/PHP]
Così la query non la eseguirà mai...Alessandro
-
Grazie per la tua risposta, scusami è vero questo l'avevo scritto per bloccare il programma, ma poi l'ho tolto riposto il codice.
file 'insericsi_socio.php':<?php session_start(); include("./inc/config.php"); include "my_config.php"; Pagina_protetta(); if($_SESSION['stato'] > 3 && $_SESSION['stato'] < 7){ ?> <div id='inserimento_soci'> <form method="POST" action="salva_socio.php"> <table width="70%" height="100px" align="center"> <tr> <td>Data Iscrizione:</td> <td> <?php /* calcolo data attuale*/ $adesso=time(); $data=date("d/m/Y H:m:s"); ?> <input type='text' <?echo'value='.$data?> size='8' name='data_iscrizione' /> </td> </tr> <tr> <td>Cognome:</td> <td><input type='text' size='20' name='cognome'></td> </tr> <tr> <td>Nome:</td> <td><input type='text' size='20' name='nome'></td> </tr> <tr> <td>Nazionalitá:</td> <td><input type="text" name="nazionalita" value="ITALIANA" size="12"></td> </tr> <tr> <td>Comune di Nascita:</td> <td><input type="text" name="comune_nascita" size="30"></td> </tr> <tr> <td>Provincia di Nascita:</td> <td><input type="text" name="provincia_nascita" size="10" /></td> </tr> <tr> <td>Data di Nascita:</td> <td> <select name="giorno"> <?php for ($i=1; $i<=31; $i++) echo "<option value = $i>$i"; ?> </select> <select name="mese"> <option value="1">Gennaio <option value="2">Febbraio <option value="3">Marzo <option value="4">Aprile <option value="5">Maggio <option value="6">Giugno <option value="7">Luglio <option value="8">Agosto <option value="9">Settembre <option value="10">Ottobre <option value="11">Novembre <option value="12">Dicembre </select> <select name="anno"> <?php $anno=date(Y); $anno_inizio=$anno-17; $anno_fine=$anno-7; for ($i=$anno_inizio; $i<=$anno_fine; $i++) echo "<option value = $i>$i"; ?> </select> </td> </tr> <tr> <td>Sesso:</td> <td><select name="sesso"> <option value="M">M <option value="F">F </select> </td> </tr> <tr> <td>Codice Fiscale:</td> <td><input type="text" name="codice_fiscale" size="16"></td> </tr> <tr> <td>Comune di Residenza:</td> <td><input type="text" name="comune_residenza" size="30"></td> </tr> <tr> <td>Provincia di Residenza:</td> <td><input type="text" name="provincia_residenza" size="10"></td> </tr> <tr> <td>Cap:</td> <td><input type="text" name="cap" size="5"></td> </tr> <tr> <td>Indirizzo:</td> <td><input type="text" name="indirizzo" size="30"></td> </tr> <tr> <td>Cartellino FIGC:</td> <td><input type="text" name="cartellino_figc" size="10"></td> </tr> <tr> <td>Telefono Abitazione:</td> <td><input type="text" name="telefono_abitazione" size="10"></td> </tr> <tr> <td>Telefono Cellulare:</td> <td><input type="text" name="telefono_cellulare" size="10"></td> </tr> <tr> <td>E-Mail:</td> <td><input type="text" name="email" size="10"></td> </tr> <tr> <td height="9" colspan="2" align="center" valign="top"> <div align="center"> Assicurati di aver inserito, bene, tutti i dati e clicca <input type="submit" name="submit" value="Salva"> per continuare </div> </td> </tr> </table> </form> </div> <?php } ?> ```file 'salva_socio.php':
<?php
//
/* Aggiungi Socio Dati Tesseramento */
//
include("./inc/config.php");
include "my_config.php";
//Pagina_protetta();
//if($_SESSION['stato'] > 3 && $_SESSION['stato'] < 7){$data_iscrizione=time(); $username=strtolower($_POST['nome'].$_POST['cognome']); $password=$username; $cognome = strtoupper($_POST['cognome']); $nome = strtoupper($_POST['nome']); $nazionalita = $_POST['nazionalita']; $comune_nascita = strtoupper($_POST['comune_nascita']); $provincia_nascita = strtoupper($_POST['provincia_nascita']); $giorno = $_POST['giorno']; $mese = $_POST['mese']; $anno = $_POST['anno']; $data_nascita=mktime(0,0,0,$mese,$giorno,$anno); $sesso = $_POST['sesso']; $codice_fiscale = strtoupper($_POST['codice_fiscale']); $comune_residenza = strtoupper($_POST['comune_residenza']); $provincia_residenza = strtoupper($_POST['provincia_residenza']); $cap = $_POST['cap']; $indirizzo = strtoupper($_POST['indirizzo']); $cartellino_figc = $_POST['cartellino_figc']; $telefono_abitazione = $_POST['telefono_abitazione']; $telefono_cellulare = $_POST['telefono_cellulare']; $email = $_POST['email']; ?> <div align="center">"Riepilogo dati inseriti:" <table width="40%" align="center"> <tr> <td>Data Iscrizione:</td><td><? echo "$data_iscrizione"; ?></td> </tr> <tr> <td>username:</td><td><? echo "$username"; ?></td> </tr> <tr> <td>password:</td><td><? echo "$password"; ?></td> </tr> <tr> <td>Cognome:</td><td><? echo "$cognome"; ?></td> </tr> <tr> <td>Nome:</td><td><? echo "$nome"; ?></td> </tr> <tr> <td>Nazionalità:</td><td><? echo "$nazionalita"; ?></td> </tr> <tr> <td>Comune di Nascita:</td><td><? echo "$comune_nascita"; ?></td> </tr> <tr> <td>Provincia di Nascita::</td><td><? echo "$provincia_nascita"; ?></td> </tr> <tr> <td>Data di Nascita:</td><td><? echo "$data_nascita"; ?></td> </tr> <tr> <td>Sesso:</td><td><? echo "$sesso"; ?></td> </tr> <tr> <td>Codice Fiscale:</td><td><? echo "$codice_fiscale"; ?></td> </tr> <tr> <td>Comune di Residenza:</td><td><? echo "$comune_residenza"; ?></td> </tr> <tr> <td>Provincia di Residenza:</td><td><? echo "$provincia_residenza"; ?></td> </tr> <tr> <td>Cap:</td><td><? echo "$cap"; ?></td> </tr> <tr> <td>Indirizzo:</td><td><? echo "$indirizzo"; ?></td> </tr> <tr> <td>Cartellino F.I.G.C.:</td><td><? echo "$cartellino_figc"; ?></td> </tr> <tr> <td>Telefono Abitazione:</td><td><? echo "$telefono_abitazione"; ?></td> </tr> <tr> <td>Telefono Cellulare:</td><td><? echo "$telefono_cellulare"; ?></td> </tr> <tr> <td>E-mail:</td><td><? echo "$email"; ?></td> </tr> </table>
</div>
<?php
/* connessione al database */
$db=mysql_connect($db_host, $db_user, $db_pass);
if ($db==false)
die("Errore nella connessione.
Verificare i parametri nel file ./inc/config.php");/* seleziona database */
mysql_select_db($db_name, $db)
or die("Errore nella selezione del database.
Verificare i parametri nel file ./inc/config.php");$query = "INSERT INTO 'elenco_soci'
('data_iscrizione', 'username', 'password', 'cognome', 'nome', 'nazionalita', 'comune_nascita', 'provincia_nascita', 'data_nascita', 'sesso', 'codice_fiscale', 'comune_residenza', 'provincia_residenza', 'cap', 'indirizzo', 'cartellino_figc', 'telefono_abitazione', 'telefono_cellulare', 'email') VALUES
('$data_iscrizione', '$username', '$password', '$cognome', '$nome', '$nazionalita', '$comune_nascita', '$provincia_nascita', '$data_nascita', '$sesso', '$codice_fiscale', '$comune_residenza', '$provincia_residenza', '$cap', '$indirizzo', '$cartellino_figc', '$telefono_abitazione', '$telefono_cellulare', '$email)";echo "<br><br> Query: $query<br><br> db: $db";
$risultato=mysql_query($query,$db);
echo "<br><br>Risultato: $risultato | mysql_query($query,$db)";
echo "<br><br>db_host, db_user e db_pass: $db_host, $db_user, $db_pass";
mysql_close();
//echo "<meta http-equiv="Refresh" content="5; URL=index.php">Operazione registrata correttamente!";
/} else {
echo "<meta http-equiv="Refresh" content="5; URL=index.php">Non sei abilitato all'inserimento dei Soci!";
}/
//}
?>$query me la scrive completa $risultato no mysql_query($query,$db) mi ritorna la query, $db mi ritorna Resource id #4 $db_host, $db_user e $db_pass mi ritornano rispettivamente i parametri giusti. Da quello che ho capito sembrerebbe che non scrive la riga nel db. Ciao
-
Ciao,
puoi postare la struttura della tabella?Nel frattempo:
forse è solo un errore di trascrizione quando hai postato qui, ma alla fine della query manca un apice:'$email)";
dovrebbe essere
'$email')";
Fai anche questa modifica e controlla se è generato un errore:
[php]
$risultato=mysql_query($query,$db);
echo mysql_error($db);
[/php]Alessandro
-
Ciao Alessandro,
per quanto riguarda '$email' ho commesso un errore di battitura, per quanto riguarda 'echo mysql_error($db)' mi ritorna: mysql_error(Resource id #4).
inserisco la tabella 'elenco_soci' ricavate dall'esportazione di phpmyadmin:-- -- Struttura della tabella `elenco_soci` -- CREATE TABLE IF NOT EXISTS `elenco_soci` ( `id_socio` int(10) NOT NULL auto_increment, `data_iscrizione` int(13) default NULL, `username` varchar(32) default NULL, `password` varchar(32) default NULL, `cognome` varchar(30) default NULL, `nome` varchar(30) default NULL, `nazionalità` varchar(20) default NULL, `comune_nascita` varchar(30) default NULL, `provincia_nascita` varchar(2) default NULL, `data_nascita` int(13) default NULL, `sesso` varchar(1) default NULL, `codice_fiscale` varchar(16) default NULL, `comune_residenza` varchar(30) default NULL, `provincia_residenza` varchar(2) default NULL, `cap` varchar(5) default NULL, `indirizzo` varchar(50) default NULL, `cartellino_figc` varchar(8) default NULL, `telefono_abitazione` varchar(15) default NULL, `telefono_cellulare` varchar(15) default NULL, `email` varchar(50) default NULL, PRIMARY KEY (`id_socio`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=769 ;
e l'ultima parte di codice per il salvataggio dei dati
$query = "INSERT INTO 'elenco_soci' ('data_iscrizione', 'username', 'password', 'cognome', 'nome', 'nazionalita', 'comune_nascita', 'provincia_nascita', 'data_nascita', 'sesso', 'codice_fiscale', 'comune_residenza', 'provincia_residenza', 'cap', 'indirizzo', 'cartellino_figc', 'telefono_abitazione', 'telefono_cellulare', 'email') VALUES ('$data_iscrizione', '$username', '$password', '$cognome', '$nome', '$nazionalita', '$comune_nascita', '$provincia_nascita', '$data_nascita', '$sesso', '$codice_fiscale', '$comune_residenza', '$provincia_residenza', '$cap', '$indirizzo', '$cartellino_figc', '$telefono_abitazione', '$telefono_cellulare', '$email')"; echo "<br><br> Query: $query<br><br> db: $db"; $risultato=mysql_query($query,$db); echo "<br>my_sql error: mysql_error($db)<br>"; echo "<br><br>Risultato: $risultato | mysql_query($query,$db)"; echo "<br><br>db_host, db_user e db_pass: $db_host, $db_user, $db_pass"; mysql_close();
-
Nome del campo sul db:
`nazionalità`
lo hai scritto con à, mentre nella insert è senza accento.
-
E' vero..
l'ho rinominato nel db da 'nazionalità' a 'nazionalita'
però mi ritorna sempre lo stesso errore.Ma cosa significa 'mysql_error(Resource id #4)'?
-
Significa che non hai scritto il codice come ti ho suggerito:
[PHP]
echo mysql_error($db);
[/PHP]
è diverso da
[PHP]
echo "<br>my_sql error: mysql_error($db)<br>";
[/PHP]All'interno dei doppi apici vengono valutate le variabili, ma non vengono eseguite le funzioni. Quindi invece di eseguire la funzione che ti ho suggerito hai semplicemente scritto a video il nome della funzione con, tra le parentesi, il contenuto della variabile $db che, come detto prima, è l'unica che è stata valutata.
Volendo inserire i <br> e altro testo oltre al normale output della funzione avresti dovuto scrivere:
[PHP]
echo "<br>my_sql error: ".mysql_error($db)."<br>";
[/PHP]Lo stesso discorso vale per
[PHP]
echo "<br><br>Risultato: $risultato | mysql_query($query,$db)";
[/PHP]
(Qui sarebbe inutile comunque eseguire la funzione visto che mysql_query() è già utilizzata 2 righe prima).Alessandro
-
scusami, hai perfettamente ragione, ma mi sto perdendo un pò.
l'errore che mi restituisce: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 ''elenco_soci' ( 'data_iscrizione', 'username', 'password', 'cognome', 'nome' at line 1
-
Ho tolto tutti gli apici ai nomi dei campi e funziona.
E' possibile che mi vedeva i singoli apici come doppi apici?
Ho altre tabelle con gli apici tipo questa e funziona regolarmente:
$query = "INSERT INTO `news` (`data`, `titolo`, `contenuto`, `nome`, `cognome`) values ('$data', '$titolo','$contenuto', '$nome', '$cognome')"; Echo "News inserita correttamente!"; $risultato=mysql_query($query,$db); mysql_close();
qual'è la differenza di questi apici?
Grazie mille per la tua disponibilità
-
Confronta la struttura della tabella che ti ha generato phpmyadmin con la tua query.
Questo ` (backquotes)
e questo **' **(quotes)
sono due apici differenti.Per delimitare i nomi delle tabelle e dei campi devi usare il primo, backquotes.
L'altro, ovvero l'apice semplice che ottieni normalmente premendo il relativo tasto sulla tastiera, serve a delimitare i dati.[Edit:] stavo giusto scrivendoti quello che poi hai chiesto
Alessandro
-
Grazie mille Alessandro, se volsessi scrivere il backquotes da tastiera?
-
Sulla tastiera italiana non è presente.
L'unico modo che conosco è passando attraverso il codice ASCII, che è 96.ALT + 96 dal tastierino numerico]
Alessandro
-
grazie
e buonanotte