Problema form di richiesta - campi obbligatori

Ciao a tutti.

Sono nuovo qui, e sono anche abbastanza incapace. Ho creato un form per la richiesta di iscrizione ad un esame, ma al momento della compilazione mi riporta sempre la scritta "tutti i campi sono obbligatori", anche se tutti compilati.

Sicuramente ho sbagliato qualcosa nella stesura, ma essendo incapace non riesco a trovare l'erroe (sempre se il programma non sia tutto sbagliato).

Questo è il codice completo:

// creiamo il nostro modulo di registrazione

?>

<form action='?inviodati=ok' method='POST'><center>

<br><br><p style="text-align: center;"><span style="text-decoration: underline;"><span style="font-size: x-large;"><strong>RICHIESTA DI PARTECIPAZIONE</strong></span></span></p><br><br>

<tr>
  <b><td>Modulo:</td></b><br>
  <td>
   <select name="modulo">
    <option value="ufficiale di gara">Ufficiale di gara</option>
    <option value="Insegnante Tecnico">Insegnante Tecnico</option>
    <option value="Atleta">Atleta</option>
                                <option value="Verifica (solo se proveniente da altra struttura)">Verifica (solo se proveniente da altra struttura)</option>
   </select>
  </td>
</tr><br><br>

<b>Nome:</b><br>
<input type='text' name='nome'><br><br>

<b>Cognome:</b><br>
<input type='text' name='cognome'><br><br>

<b>Nato/a a:</b><br>
<input type='text' name='nato'><br><br>

<b><tr><td>Data di nascita:</td></b><br>
<td>
<select name="giorno">
<?php
for($i=1;$i<32;$i++){
echo "<option value=\"" . $i . "\">" . $i . "</option>\n";
}
?>
</select>
<select name="mese">
<?php
for($i=1;$i<13;$i++){
echo "<option value=\"" . $i . "\">" . $i . "</option>\n";
}
?>
</select>
<select name="anno">
<?php
for($i=1920;$i<2012;$i++){
echo "<option value=\"" . $i . "\">" . $i . "</option>\n";
}
?>
</select>
</td></tr>
<tr><br><br>

<b>Indirizzo domicilio:</b><br>
<input type='text' name='indirizzo'><br><br>

<b>Citta:</b><br>
<input type='text' name='citta'><br><br>

<b>Provincia:</b><br>
<input type='text' name='provincia'><br><br>

<b>Codice postale:</b><br>
<input type='text' name='cap'><br><br>


<b>Professione:</b><br>
<input type='text' name='professione'><br><br>


<b>Telefono:</b><br>
<input type="tel" name="telefono"><br><br>


<b>Cellulare:</b><br>
<input type="tel" name="cellulare"><br><br>


<b>Titolo di studio:</b><br>
<input type='text' name='titolo'><br><br>

<b>E-Mail:</b><br>
<input type='text' name='mail'><br><br>

<b>Licenza Federale N:</b><br>
<input type='text' name='licenza'><br><br>


<b>Societa Sportiva:</b><br>
<input type='text' name='societa'><br><br>


<b>Codice:</b><br>
<input type='text' name='codice'><br><br>


<b>Qualifica di:</b><br>
<input type='text' name='qualifica'><br><br>

<b>Conseguita a:</b><br>
<input type='text' name='conseguita'><br><br>

<b><tr><td>Il:</td></b><br>
<td>
<select name="giorno1">
<?php
for($i=1;$i<32;$i++){
echo "<option value=\"" . $i . "\">" . $i . "</option>\n";
}
?>
</select>
<select name="mese1">
<?php
for($i=1;$i<13;$i++){
echo "<option value=\"" . $i . "\">" . $i . "</option>\n";
}
?>
</select>
<select name="anno1">
<?php
for($i=1920;$i<2012;$i++){
echo "<option value=\"" . $i . "\">" . $i . "</option>\n";
}
?>
</select>
</td></tr>
<tr><br><br>

<b><tr><td>Con decorrenza:</td></b><br>
<td>
<select name="giorno2">
<?php
for($i=1;$i<32;$i++){
echo "<option value=\"" . $i . "\">" . $i . "</option>\n";
}
?>
</select>
<select name="mese2">
<?php
for($i=1;$i<13;$i++){
echo "<option value=\"" . $i . "\">" . $i . "</option>\n";
}
?>
</select>
<select name="anno2">
<?php
for($i=1920;$i<2012;$i++){
echo "<option value=\"" . $i . "\">" . $i . "</option>\n";
}
?>
</select>
</td></tr>
<tr><br><br>

<b>Grado di:</b><br>
<input type='text' name='grado'><br><br>

<b>Conseguito a:</b><br>
<input type='text' name='conseguito'><br><br>

<b><tr><td>Il:</td></b><br>
<td>
<select name="giorno3">
<?php
for($i=1;$i<32;$i++){
echo "<option value=\"" . $i . "\">" . $i . "</option>\n";
}
?>
</select>
<select name="mese3">
<?php
for($i=1;$i<13;$i++){
echo "<option value=\"" . $i . "\">" . $i . "</option>\n";
}
?>
</select>
<select name="anno3">
<?php
for($i=1920;$i<2012;$i++){
echo "<option value=\"" . $i . "\">" . $i . "</option>\n";
}
?>
</select>
</td></tr>
<tr><br><br>

<b><tr><td>Con decorrenza:</td></b><br>
<td>
<select name="giorno4">
<?php
for($i=1;$i<32;$i++){
echo "<option value=\"" . $i . "\">" . $i . "</option>\n";
}
?>
</select>
<select name="mese4">
<?php
for($i=1;$i<13;$i++){
echo "<option value=\"" . $i . "\">" . $i . "</option>\n";
}
?>
</select>
<select name="anno4">
<?php
for($i=1920;$i<2012;$i++){
echo "<option value=\"" . $i . "\">" . $i . "</option>\n";
}
?>
</select>
</td></tr>
<tr><br><br>

<tr>
  <b><td>Stile Praticato:</td></b><br>
  <td>
   <select name="stile">
    <option value="Gojo-Ryu">Gojo-Ryu</option>
    <option value="Shito-Ryu">Shito-Ryu</option>
    <option value="Stotokan-Ryu">Stotokan-Ryu</option>
                                <option value="Wado-Ryu">Wado-Ryu</option>
   </select>
  </td>
</tr><br><br>

<p style="text-align: center;"><span style="font-size: x-large;"><strong>CHIEDE DI ESSERE AMMESSO/A AL</strong></span></p>
<p style="text-align: center;"><span style="font-family: 'Lucida Grande'; font-size: 20px; line-height: 30.516666412353516px; text-align: left;">Corso Regionale Propedeutico di ammissione ed all&rsquo;Esame Regionale o Nazionale di Graduazione a:</span></p>

<tr>
  <b><td>Corso:</td></b><br>
  <td>
   <select name="corso">
    <option value="Cint. Marrone(2)">Cint. Marrone (2)</option>
    <option value="1° Dan">1° Dan</option>
    <option value="2° Dan">2° Dan</option>
                                <option value="3° Dan">3° Dan</option>
                                <option value="4° Dan(3)">4° Dan (3)</option>
                                <option value="5° Dan(3)">5° Dan (3)</option>
                                <option value="Veriica (1)">Verifica (1)</option>
   </select>
  </td>
</tr><br><br>

<b>Struttura di provenienza</b>(solo in caso di verifica)<b>:</b><br>
<input type='text' name='provenienza'><br><br>

<b>In programma nella regione Piemonte a:</b><br>
<input type='text' name='inpiemontea'><br><br>

<b><tr><td>Il:</td></b><br>
<td>
<select name="giorno5">
<?php
for($i=1;$i<32;$i++){
echo "<option value=\"" . $i . "\">" . $i . "</option>\n";
}
?>
</select>
<select name="mese5">
<?php
for($i=1;$i<13;$i++){
echo "<option value=\"" . $i . "\">" . $i . "</option>\n";
}
?>
</select>
<select name="anno5">
<?php
for($i=1920;$i<2012;$i++){
echo "<option value=\"" . $i . "\">" . $i . "</option>\n";
}
?>
</select>
</td></tr>
<tr><br><br>

<p style="text-align: justify;"><span style="font-size: large;"><span style="text-decoration: underline;">Il/La sottoscritto/a dichiara che &egrave; in possesso dei requisiti previsti nelle norme federali, che quanto sopra affermato corrisponde a verit&agrave; e che &egrave; a conoscenza che ogni dichiarazione FALSA comporta automaticamente l&rsquo;annullamento della partecipazione al Corso ed all&rsquo; Esame ed il deferimento al Giudice Sportivo.</span>&nbsp;<strong>Si allega alla presente l&rsquo;attestazione ORIGINALE del</strong></span></p>

<b>Versamento di euro:</b><br>
<input type='text' name='versamento'><br><br><br>

<p style="text-align: justify;"><span style="font-size: large;"><strong>sul c/c postale n&deg; 63839005 intestato a "Coni Fijlkam Settore Karate Roma" e l&rsquo;attestazione ORIGINALE del versamento di &euro; 25,00 sul c/c postale n&deg; 64908890 intestato a "Fijlkam Comitato Regionale Piemonte Settore Karate".</strong></span></p>

<p style="text-align: justify;"><span style="font-size: small;"><span style="font-size: medium;"><strong><span style="color: #ff0000;">(1)</span> Per gli Esami di <span style="color: #ff0000;">Verifica</span> per Cintura Marrone e fino a 3&deg; Dan&nbsp;<span style="color: #ff0000;">allegare la documentazione comprovante il grado richiesto</span>.</strong></span></span></p>
<p style="text-align: justify;"><span style="font-size: small;"><span style="font-size: medium;"><strong><span style="color: #ff0000;">(2)</span> Non partecipa al Corso Propedeutico ma solo all&rsquo;Esame di Verifica; allegare alla richiesta l&rsquo;attestazione ORIGINALE del versamento di &euro; 12,00 sul c/c postale n&deg;64908890 intestato a "Fijlkam Comitato Regionale Piemonte Settore Karate".</strong></span></span></p>
<p style="text-align: justify;"><span style="font-size: small;"><span style="font-size: medium;"><strong><span style="color: #ff0000;">(3)</span> Il Corso &egrave; facoltativo. La quota da versare sul c.c.p. del Comitato &egrave; di &euro; 25,00</strong></span></span></p>
<br><br>

<input type='submit' value='Completa Richiesta'><br>


</center>
</form>

<?php

// attraverso un if controlliamo che il form sia stato inviato

if ( $_GET['inviodati'] == "ok" ) {

// recuperiamo i dati inviati con il form

$modulo = $_POST['modulo'];

$nome = $_POST['nome'];

$cognome = $_POST['cognome'];

$nato = $_POST['nato'];

$data = $_POST['giorno,mese,anno'];

$domicilio = $_POST['indirizzo'];

$citta = $_POST['citta'];

$provincia = $_POST['provincia'];

$cap = $_POST['cap'];

$professione = $_POST['professione'];

$telefono = $_POST['telefono'];

$cellulare = $_POST['cellulare'];

$studio = $_POST['titolo'];

$mail = $_POST['mail'];

$licenza = $_POST['licenza'];

$società = $_POST['societa'];

$codice = $_POST['codice'];

$qualifica = $_POST['qualifica'];

$conseguita = $_POST['conseguita'];

$il = $_POST['giorno1,mese1,anno1'];

$decorrenza = $_POST['giorno2,mese2,anno2'];

$grado = $_POST['grado'];

$conseguito = $_POST['conseguito'];

$il1 = $_POST['giorno3,mese3,anno3'];

$decorrenza1 = $_POST['giorno4,mese4,anno4'];

$stile = $_POST['stile'];

$corso = $_POST['corso'];

$provenienza = $_POST['provenienza'];

$programmaa = $_POST['inpiemontea'];

$il2 = $_POST['giorno5,mese5,anno5'];

$versamento = $_POST['versamento'];

// ora controlliamo che i campi siano stati tutti compilati

if ( $modulo == TRUE && $nome == TRUE && $cognome == TRUE && $nato == TRUE && $data == TRUE && $domicilio == TRUE && $citta == TRUE && $provincia == TRUE
     && $cap == TRUE && $professione == TRUE && $telefono == TRUE && $cellulare == TRUE && $studio == TRUE && $mail == TRUE && $licenza == TRUE && $societa == TRUE
     && $codice == TRUE && $qualifica == TRUE && $conseguita == TRUE && $il == TRUE && $decorrenza == TRUE && $grado == TRUE && $conseguito == TRUE && $il1 == TRUE
     && $decorrenza1 == TRUE && $stile == TRUE && $corso == TRUE && $programma == TRUE && $il2 == TRUE && $versamento == TRUE )  {


// controlliamo se il campo mail è stato scritto in maniera errata


$email = eregi("^[_a-z0-9+-]+(\.[_a-z0-9+-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)+$",$mail);

if ( $email == TRUE ) {

// controlliamo se l'mail è presente già nel database

$sql = mysql_query("SELECT * FROM tabella_registrati WHERE mail = '$mail'") or die ("Mail già occupata");

$num_rows = mysql_num_rows($sql);

if ( $num_rows == 0 ) {


// controlliamo se il numero di cellulare è presente già nel database

$sql = mysql_query("SELECT * FROM tabella_registrati WHERE cellulare = '$cellulare'") or die ("Numero già presente");

$num_rows = mysql_num_rows($sql);

if ( $num_rows == 0 ) {

// e inviamo una mail con la riuscita registazione

mail ($mail, "Richiesta OK", "Complimenti richiesta effettuata con successo", "From: fijlkam.karate01@libero.it");

// messaggio da far visualizzare all'utente finale

echo "Complimenti richiesta effettuata con successo.";


} else {

echo "Numero cellulare già utilizzato.";

}

} else {

echo "Indirizzo mail già utilizzato.";

}

} else {

echo "La tua mail non è idonea, per la registrazione.";

}


} else {

echo "Tutti i campi sono obbligatori.";

}

}

?>

Qualcuno mi aiutiiiii vi prego!! :D

Grazie

inviato 4 anni fa
decarlo07
X 0 X

Beh per prima cosa ti suggerirei di verificare cosa ti invia il form facendo:

var_dump($_POST)

poi alcune sintassi come:

$decorrenza = $_POST['giorno2,mese2,anno2']

non sono corrette e intendendo che separi le date con la virgola:

$decorrenza = $_POST['giorno2'].','.$_POST['mese2'].','.$_POST['anno2'];

puoi evitare anche di assegnare tutte le variabili usando la funzione:

extract($_POST)

infine se fai:

$decorrenza1 == TRUE

sarà sufficente che ci sia la varabile per avere il risultato positivo, per controllare il vero completamento del campo devi usare:

strlen($variabile) > 0
risposto 4 anni fa
gbenfe
gbenfe
16
X 0 X

Piccolo consiglio, invece di scrivere

for($i=1920;$i<2012;$i++){

così che ogni anno dovrai rimettere mano al codice per modificare quel 2012, usa la funzione date() del PHP per tirare fuori l'anno corrente.

for($i=1920;$i<=date('Y');$i++){

Poi: ma perché usi questo modo per capire sei i dati sono stati inviati?

if ( $_GET['inviodati'] == "ok" ) {

meglio verificare semplicemente se è stato premuto il tasto di invio:

<input type='submit' name="invia" value='Completa Richiesta'>

nella parte PHP ti basta fare così:

if (isset($_POST['invia']) && $_POST['invia'] == 'Completa Richiesta') {

ovviamente devi nominare il bottone così come ho fatto io (in neretto) ma ti rende la vita più semplice, anche perché potresti gestire addirittura più bottoni di invio nello stesso form, basta cambiare il name.

Per finire credo che sbagli anche nella parte di verifica, non comprendo perché controlli se la variabile è a TRUE, un campo valorizzato tramite POST (o GET) non è TRUE o FALSE ma o contiene il dato cercato o non esiste nessun valore.

Quindi la verifica è meglio farla in un ciclo che controllando se l'array $_POST di un campo porta un valore e se questo è valido oppure no.

Ad esempio:

<?php

foreach ($_POST as $key=> $value) {

//  Se il dato è vuoto o se addirittura il campo non esiste allora è errore
if ($value == '' || !isset($key)) $errore[$key] = true;

}

?>

in questo modo l'array $errore conterrà tutti i campi non valorizzati, li vedi a schermo con var_dump($errore), se l'array $errore non esiste non ci sono errori, qualunque altro valore vuol dire che si è verificato un errore di immissione, basta leggere il nome della chiave per conoscere il campo del form dove si è verificato l'errore;

<?php

foreach (array_keys($errore) as $chiave) {

echo $chiave;

}

?>

La strada migliore per leggere un form però è usare i filtri del PHP, si fa prima, specie per form complessi ed è molto più sicuro.

M.

risposto 4 anni fa
Marco Grazia
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda