- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- Inserimento dati da form in db mysql
-
Inserimento dati da form in db mysql
Ciao a tutti, sono alle prime armi con php e mysql, praticamente ho un form dove vengono fatte le richieste di prenotazione (nome, cognome, email, etc etc), vorrei inserirli in un database e inviare una email al mio indirizzo. Quindi ho creato questo codice php ma non funziona, chi mi potrebbe aiutare a risolvere questo problema?
ecco il codice
<?php
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];$chandle = mysql_connect("localhost:8888", "root", "root");
$db_selected = mysql_select_db("villapapaleo");
$sql = 'INSERT INTOvillapapaleo
.contatti_newsletter
(nome
,cognome
) VALUES ($nome , $cognome);';
mysql_query($query) or die("QUERY FALLITA!!!");$dati = $nome +" , " $cognome;
$tuoemail = "[email protected]";
$destinatario = "[email protected]";
$oggetto = "ecco i tuoi dati";
mail ("$destinatario", "$soggetto", "$dati", "From: $tuoemail");?>
-
Ciao,
innanzitutto i dati testuali vanno racchiusi tra apici ' o virgolette ".Come puoi facilmente testare, questo codice:
[PHP]
$variabile="testo";
$string="Contenuto: $variabile";
echo $string;
[/PHP]
produce un risultato diverso da questo:
[PHP]
$variabile="testo";
$string='Contenuto: $variabile';
echo $string;
[/PHP]
Le variabili inserite in una stringa delimitata dai doppi apici " vengono interpretate come tali e viene inserito il valore corrispondente. Usando gli apici ' come nel tuo caso, non viene interpretata come variabile ma come testo.Tenendo conto di queste due cose, devi modificare così la riga della query:
[PHP]
$sql = 'INSERT INTOvillapapaleo
.contatti_newsletter
(nome
,cognome
) VALUES (''.$nome.'' , ''.$cognome.'')";
[/PHP]
Ti consiglio inoltre una ricerca sull'argomento SQL InjectionAltra cosa. Le stringhe in php non si uniscono tramite il +, ma tramite il .
[PHP]
$dati = $nome . " , " . $cognome;
[/PHP]
Verifica anche i nomi delle variabili dell'invio mail. Hai settato la variabile $oggetto, mentre poi utilizzi $soggetto.Alessandro
-
Grazie mille, ma non mi fa ugualmente l'inserimento in db.
Ti posto anche il codice del form html e scusami molto per il disturbo.
--- html ---
<form action="form_su_db.php" method="post">><table width="483" border="0" bgcolor="#FFCCCC" align="center">
<tr>
<td width="36"> </td>
<td width="205" height="44">nome</td>
<td width="228"><input type="text" name="nome"></td>
</tr>
<tr>
<td> </td>
<td height="36">Cognome</td>
<td><input type="text" name="cognome"></td>
</tr>
<tr>
<td> </td>
<td height="30">Città</td>
<td><input type="text" name="città"></td>
</tr>
<tr>
<td> </td>
<td height="34">Provincia</td>
<td><input type="text" name="provincia"></td>
</tr>
<tr>
<td> </td>
<td height="34">Email</td>
<td><input type="text" name="email"></td>
</tr>
<tr>
<td> </td>
<td height="34">Cellulare</td>
<td><input type="text" name="telefono"></td>
</tr>
<tr>
<td> </td>
<td height="36">Tipo richiesta</td>
<td><select name="tipo_richiesta"><option>Informazioni</option><option>Disponibilità</option><option>Prenotazioni</option><option>Altro</option></select></td>
</tr>
<tr>
<td> </td>
<td height="32">Dal</td>
<td><select name="dal_giorno"> <option>01</option>
<option>02</option>
<option>03</option>
<option>04</option><option>05</option> <option>06</option> <option>07</option> <option>08</option> <option>09</option> <option>10</option> <option>11</option> <option>12</option> <option>13</option> <option>14</option> <option>15</option> <option>16</option> <option>17</option> <option>18</option> <option>19</option> <option>20</option> <option>21</option> <option>22</option> <option>23</option> <option>24</option> <option>25</option> <option>26</option> <option>27</option> <option>28</option> <option>29</option> <option>30</option> <option>31</option></select> <select name="dal_mese"><option selected>Gennaio</option> <option>Febbraio</option> <option>Marzo</option> <option>Aprile</option> <option>Maggio</option> <option>Giugno</option> <option>Luglio</option> <option>Agosto</option> <option>Settembre</option> <option>Ottobre</option> <option>Novembre</option> <option>Dicembre</option></select> <select name="dal_anno"><option>2009</option><option>2010</option></select></td>
</tr>
<tr>
<td> </td>
<td height="29">Al</td>
<td><select name="al_giorno"> <option>01</option>
<option>02</option>
<option>03</option>
<option>04</option><option>05</option> <option>06</option> <option>07</option> <option>08</option> <option>09</option> <option>10</option> <option>11</option> <option>12</option> <option>13</option> <option>14</option> <option>15</option> <option>16</option> <option>17</option> <option>18</option> <option>19</option> <option>20</option> <option>21</option> <option>22</option> <option>23</option> <option>24</option> <option>25</option> <option>26</option> <option>27</option> <option>28</option> <option>29</option> <option>30</option> <option>31</option></select> <select name="al_mese"><option selected>Gennaio</option> <option>Febbraio</option> <option>Marzo</option> <option>Aprile</option> <option>Maggio</option> <option>Giugno</option> <option>Luglio</option> <option>Agosto</option> <option>Settembre</option> <option>Ottobre</option> <option>Novembre</option> <option>Dicembre</option></select> <select name="al_anno"><option>2009</option><option>2010</option></select></td>
</tr>
<tr>
<td> </td>
<td height="32">Persone</td>
<td><select name="Persone">
rno"> <option>01</option>
<option>02</option>
<option>03</option>
<option>04</option><option>05</option> <option>06</option> <option>07</option> <option>08</option> <option>09</option> <option>10</option> <option>11</option> <option>12</option> <option>13</option> <option>14</option> <option>15</option> <option>16</option> <option>17</option> <option>18</option> <option>19</option> <option>20</option></select></td>
</tr>
<tr>
<td> </td>
<td height="34">Note</td>
<td><textarea name="note2" cols="30" rows="5"></textarea></td>
</tr>
<tr>
<td height="43" colspan="3" align="center"><input type="checkbox" name="trattamento dati"><span class="trattamento_dati">Acconsento al trattamento dei dati persoanli aisensi dell’ art. 13 del D.lgs. n. 196/2003</span> </td>
</tr>
<tr>
<td height="43" colspan="3" align="center"><input type="submit" value="Invia"></td>
</tr>
</table></form>-- php --
<?php
$nome = $_POST["nome"];
$cognome = $_POST["cognome"];$chandle = mysql_connect("localhost:8888", "root", "root");
$db_selected = mysql_select_db("villapapaleo");
$sql = 'INSERT INTOvillapapaleo
.contatti_newsletter
(nome
,cognome
) VALUES (''.$nome.'' , ''.$cognome.'')";
mysql_query($query) or die("QUERY FALLITA!!!");$dati = $nome . " , " . $cognome;
$tuoemail = "[email protected]";
$destinatario = "[email protected]";
$oggetto = "ecco i tuoi dati";
mail ("$destinatario", "$oggetto", "$dati", "From: $tuoemail");?>
-
Cambia il codice in:
[php]
mysql_query($query) or die("QUERY FALLITA: " . mysql_error());
[/php]poi posta il risultato dell'errore.
P.S: Sicuro che il server MySQL lavora sulla porta 8888?Ciao!
-
ciao ho controllato la porta ed era 8889 però non funziona ugualmente e non mi restituisce neanche nessun messaggio di errore.
Non so proprio come fare.
-
Se vedi solo una pagina bianca, è molto probabile che il server su cui lavori è impostato per non visualizzare errori e warning del codice php.
La stringa della query va chiusa con un apice ' non con doppio apice ". Errore mio nel precedente post.
Riga di codice corretta:
[PHP]
$sql = 'INSERT INTOvillapapaleo
.contatti_newsletter
(nome
,cognome
) VALUES (''.$nome.'' , ''.$cognome.'')';
[/PHP]
la stringa va chiusa con un apice ' non con doppio apice ". Errore mio nel precedente post.Alessandro
-
Ora mi da questo messaggio...:
QUERY FALLITA: Query was empty
Mamma mia che casino...
-
:?Probabilmente sbaglio,non so molte cose però non capisco una cosa: se ha definito $sql= 'INSERT INTO database...' perche in mysql_query($...)usa $query???non dovrebbe essere la stessa variabile???
e poi nella azione
---mail("$destinatario", "$soggetto", "$dati", "From: $tuoemail"); ---
non sarebbe meglio usare mail(....,'"From:" . $tuoemail'); ????
grazie
ciao
-
Ciao,
per quanto riguarda lo scambio di variabili $sql e $query... hai perfettamente ragione. Non me n'ero accorto.
Il codice corretto è:
[PHP]
mysql_query($sql) or die("QUERY FALLITA!!!" . mysql_error());
[/PHP]Per quanto riguarda invece la mail il codice
[PHP]
mail("$destinatario", "$soggetto", "$dati", "From: $tuoemail");
[/PHP]
è corretto.Alessandro
-
funzionaaaaaa... grazie mille a tutti non so come ringraziarvi.... grazieee di cuore
-
scusatemi ancora ora ho provato ad aggiungere gli altri campi allo script ma non funziona. cioè ho fatto questo ma non mi inserisce la variabile città nel database
<?php
$nome = $_POST["nome"];
$cognome = $_POST["cognome"];
$città = $_POST["città"];
$telefono = $_POST["telefono"];
$email = $_POST["email"];$chandle = mysql_connect("localhost:8889", "root", "root");
$db_selected = mysql_select_db("villapapaleo");
$sql = 'INSERT INTOvillapapaleo
.contatti_newsletter
(nome
,cognome
,città
,telefono
,email
) VALUES (''.$nome.'' , ''.$cognome.'' , ''.$città.'', ''.$telefono.'', ''.$email.'')';
mysql_query($sql) or die("QUERY FALLITA!!!" . mysql_error());$dati = $nome . " , " . $cognome;
$tuoemail = "[email protected]";
$destinatario = "[email protected]";
$oggetto = "ecco i tuoi dati";
mail ("$destinatario", "$oggetto", "$dati", "From: $tuoemail");?>
-
Evita di usare lettere accentate durante la stesura del codice.