Ciao a tutti ho questi 2 script:
Codice PHP:
<?php
$date = new DateTime();
$annoCorrente = $date->format('Y');
?>
<h2>Tutti i campi sono da compilare!</h2>
<form method="post" action="?indice=201">
<table>
<tr><td>Email</td>
<td><input type="text" name="email" size="40"></td>
</tr>
<tr><td> Cognome </td>
<td><input type="text" name="cognome" size="40"></td>
</tr>
<tr><td> Nome </td>
<td><input type="text" name="nome" size="40"></td>
</tr>
<tr><td> Indirizzo </td>
<td><input type="text" name="indirizzo" size="40"></td>
</tr>
<tr><td> Nap </td>
<td><input type="text" name="nap" size="10"></td>
</tr>
<tr><td> Domicilio </td>
<td><input type="text" name="domicilio" size="40"></td>
</tr>
<tr><td> Nazione </td>
<td><input type="text" name="nazione" size="40"></td>
</tr>
<tr><td> Anno di nascita </td>
<td><select name="anno">
<option value="0">...</option>
<?php
for ($i=0;$i<=100;$i++){
echo "<option value=\" ".$annoCorrente." \">".$annoCorrente."</option>";
$annoCorrente -= 1;
}
?>
</select>
</td>
</tr>
<tr><td> Sesso </td>
<td>Uomo<input type="radio" name="sesso" value="m">
Donna<input type="radio" name="sesso" value="f">
</td>
</tr>
<tr><td> Gruppo </td>
<td>
<select name="gruppo[]" multiple="multiple">
<?php
$sql = "SELECT id_gruppo, nome_gruppo FROM gruppi";
$res = mysql_query($sql) or die("Errore nella select");
while ($row = mysql_fetch_array($res)){
echo "<option value=\"gruppo[".$row["id_gruppo"]."]\">".$row["nome_gruppo"]."";
}
?>
</td>
</tr>
<tr><td> Lingua </td>
<td>
<?php
$sel = "SELECT id_lingua, lingua FROM lingue";
$res = mysql_query($sel) or die("Errore nella select");
while($arr = mysql_fetch_array($res)) {
echo $arr[1]."<input type='radio' name='linguaNuovoIscritto' value='".$arr[0]."'>";
}
?>
</td>
</tr>
<tr><td><input type="submit" name="submit" value="Invia"></td></tr>
</form>
</table>
Codice PHP:
<?php
$data = date("Y-m-d");
//pulitura dei campi da stringhe pericolose
$email = trim(stripslashes($_POST['email']));
$cognome = trim(stripslashes($_POST['cognome']));
$nome = trim(stripslashes($_POST['nome']));
$indirizzo = trim(stripslashes($_POST['indirizzo']));
$nap = trim(stripslashes($_POST['nap']));
$domicilio = trim(stripslashes($_POST['domicilio']));
$nazione = trim(stripslashes($_POST['nazione']));
$anno = $_POST['anno'];
$sesso = $_POST['sesso'];
$gruppo = $_POST['gruppo'];
foreach ($gruppo as $valore){
// echo $valore;
}
$linguaNuovoIscritto = $_POST['linguaNuovoIscritto'];
$email = mysql_real_escape_string($email);
$cognome = mysql_real_escape_string($cognome);
$nome = mysql_real_escape_string($nome);
$indirizzo = mysql_real_escape_string($indirizzo);
$nap = mysql_real_escape_string($nap);
$domicilio = mysql_real_escape_string($domicilio);
$nazione = mysql_real_escape_string($nazione);
$email = htmlentities($email);
$cognome = htmlentities($cognome);
$nome = htmlentities($nome);
$indirizzo = htmlentities($indirizzo);
$nap = htmlentities($nap);
$domicilio = htmlentities($domicilio);
$nazione = htmlentities($nazione);
//controllo che tutti i campi siano stati compilati
if (( $email == "" ) || ( $cognome == "" ) || ( $nome == "" ) || ( $indirizzo == "" ) || ( $nap == "" ) || ( $domicilio == "" ) || ( $nazione == "" ) || ( $anno == "" ) || ( $sesso == "" ) || ( $gruppo == "" ) || ($linguaNuovoIscritto == "" ))
{
echo "<h3>Errore!</h3>
I campi sono obbligatori. Deve compilare tutti i campi per continuare
La preghiamo di <A HREF=\"javascript:history.go(-1)\">tornare indietro e correggere</A>. Grazie";
}
//controllo campo email richiamando la funzione
else if ((ControlloEmail($_POST['email']))== false)
{
echo "Email non valida o non inserita!";
}
//controllo che il campo cognome sia di soli caratteri alfanumerici richiamando la funzione
else if ((ControlloCognome($_POST['cognome']))== false)
{
echo "Cognome non valido o campo non compilato!";
}
//controllo che il campo nome sia di soli caratteri alfanumerici richiamando la funzione
else if ((ControlloNome($_POST['nome']))== false)
{
echo "Nome non valido o campo non compilato!";
}
//controllo che il campo nap sia numerico richiamando la funzione
else if ((ControlloNap($_POST['nap']))== false)
{
echo "Nap non valido o non inserito!";
}
//controllo che il campo domicilio sia di soli caratteri alfanumerici richiamando la funzione
else if ((ControlloDomicilio($_POST['domicilio'])) == false)
{
echo "Domicilio non valido o campo non compilato!";
}
//controllo che il campo nazione sia di soli caratteri alfanumerici richiamando la funzione
else if ((ControlloNazione($_POST['nazione'])) == false)
{
echo "Nazione non valida o campo non compilato!";
}
else
{
//inserisco i dati completati nel formulario all'interno della banca dati
$query = "insert into newsletter" . "(email, cognome_nl, nome_nl, indirizzo, nap, domicilio, nazione, anno_nascita, sesso, data_iscrizione, id_lingua)" .
"VALUES('" . $_REQUEST['email'] . "', '" . $_REQUEST['cognome'] . "', '" . $_REQUEST['nome'] . "', '" . $_REQUEST['indirizzo'] . "', '" . $_REQUEST['nap'] . "', '" . $_REQUEST['domicilio'] . "', '" . $_REQUEST['nazione'] . "', '" . $_REQUEST['anno'] . "', '" . $_REQUEST['sesso'] . "', '" . $data . "', '" . $_REQUEST['linguaNuovoIscritto'] . "')";
if(!mysql_query($query, $db))
{
print("Attenzione, impossibile inserire il record");
}
else
{
print("Hai completato il formulario senza problemi. I dati sono stati registrati.");
}
//recupero l'id appena inserito
$id_newsletter = mysql_insert_id();
$query2 = "insert into news_gruppi" . "(id_newsletter, id_gruppo)" . "VALUES('" . $id_newsletter . "', '" . $_REQUEST['gruppo'] . "')";
if(!mysql_query($query2, $db))
{
print("Attenzione, impossibile inserire il record");
}
else
{
print("Hai completato il formulario senza problemi. I dati sono stati registrati.");
}
mysql_close($db);
}
?>
Nella form ci sono campi di 2 tabelle.
Per inserire i dati ho fatto 2 insert per ogni tabella con nomi diversi ($query e $query2). Il problema è che nella tabella iscritti mi inserisce tutto mentre nella tabella news_gruppi(tabella ponte tra iscritti e gruppi) mi inserisce l'id che recupero nella tabella iscritti ma niente nel campo id_gruppo.
Come faccio a fare in modo che mi inserisca nel campo della tabella il o i gruppi scelti dalla listbox?
Nella tabella ponte ho l'id dell'iscritto e l'id del gruppo..
esempio:
id_newsletter id_gruppo
1 4
1 5
2 1
3 1
4 2
5 3
5 6
etc...
spero di essere stato chiaro...
Grazie intanto