ciao
prima racchiudi il codice negli appositi tag![]()


vorrei rendere i campi obbligatori ma non riesco in quanto anche se uno non completa tutti i campi viene inviata lo stesso la form e vorrei che questo non accadesse. Ecco il codice
grazie dell'aiuto<?php
if(!isset($_POST['sub'])) {
echo '<form method="post" action="#"><br/>
<h1>Dati personali</h1><br/>
Il sottoscritto <input type="text" name="sottoscritto"><br/><br/>
nato a <input type="text" name="dove"><br/><br/>
il <input type="text" name="data"><br/><br/>
Residente a <input type="text" name="residente"><br/><br/>
CAP <input type="text" name="cap"><br/><br/>
Prov <select>
<option value="verona">VR</option>
<option value="venezia">VE</option>
<option value="padova">PD</option>
<option value="belluno">BL</option>
<option value="rovigo">RO</option>
<option value="vicenza">VI</option>
<option value="treviso">TV</option>
</select>
via <input type="text" name="via"><br/><br/>
tel <input type="text" name="tel"><br/><br/>
cell <input type="text" name="tel"><br/><br/>
<input type="submit" value="Registrati" name="sub">
</form>';
}
else {
include 'config.php';
include 'connect.php';
$sottoscritto = $_POST['sottoscritto'];
$dove = $_POST['dove'];
$quando = $_POST['data'];
$query = "INSERT INTO iscrizioni (sottoscritto, dove, data) VALUES ('{$sottoscritto}','{$dove}','{$quando}');";
$result = mysql_query($query, $conn);
if (trim($sottoscritto)=="") {
print "Tutti i campi del form sono obbligatori...Torna indietro e inserisci il tuo nome!";
} elseif (trim($quando)=="") {
print "Tutti i campi del form sono obbligatori...Torna indietro e inserisci la data di nascita!";
} elseif (trim($dove)=="") {
print "Tutti i campi del form sono obbligatori...Torna indietro e inserisci dove sei nato!";
}
if(!$result) {
echo 'errore';
}
}
?>
Ultima modifica di Fabio90; 23-03-2012 alle 17:08
ciao
prima racchiudi il codice negli appositi tag![]()


è già negli appositi tag.. Almeno credo
Per scrivere codice nel forum ci sono dei codici appositi che facilitano la visualizzazione
inserisci tutto quel codice tra i tag [ PHP ] [ / PHP ] senza spazi.
If you can think about it, you can code it :P
ciao
prova in questo modo
p.s.Codice PHP:<?php
//..............
}else {
unset($_POST['sub']);//elimini il post dal submit che comunque è pieno
foreach($_POST as $chiave => $valore){
if(trim($valore)==""){
echo "attenzione: tutti i campi sono obbligatori";
//e ritorni alla pagina pulita dopo 3 secondi (content='3 )
echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
}
//e qui tutto il resto
}
?>
hai usato il tag QUOTE non il PHP sulla stessa riga l'ultima iconcina (nell'ordine QUOTE HTML CODE PHP)


grazie mille lo script funziona infatti se i campi non sono compilati mi reinderizza però i dati vengono lo stessi scritti sul database.. perchè?
Codice PHP:<?php
if(!isset($_POST['sub'])) {
echo '<div id="form-iscrizione">
<form method="post" action="#"><br/>
Il sottoscritto <input type="text" name="sottoscritto"><br/><br/>
nato a <input type="text" name="dove"><br/><br/>
il <input type="text" name="data"><br/><br/>
Residente in <input type="text" name="residente">
Prov <select>
<option value="verona">VR</option>
<option value="venezia">VE</option>
<option value="padova">PD</option>
<option value="belluno">BL</option>
<option value="rovigo">RO</option>
<option value="vicenza">VI</option>
<option value="treviso">TV</option>
</select> <br/><br/>
via <input type="text" name="via"><br/><br/>
codice fiscale <input type="text" name="via"><br/><br/>
in qualità rappresentante dell <br/><br/> <input type="text" size="60" name="via"><br/><br/>
con sede in <input type="text" size="35" name="via">
Prov <select>
<option value="verona">VR</option>
<option value="venezia">VE</option>
<option value="padova">PD</option>
<option value="belluno">BL</option>
<option value="rovigo">RO</option>
<option value="vicenza">VI</option>
<option value="treviso">TV</option>
</select> <br/><br/>
via <input type="text" size="45" name="via">
N. <input type="text" size="5" name="via"><br/><br/>
P.IVA <input type="text" size="45" name="via"><br/><br/>
<p>CHIEDE</p> <p>a codesto spettabile Consiglio di Amministrazione di essere ammesso a far parte del Consorzio Autoscuole Bus-Car
con sede in Verona Via Selenia 12, in qualità di socio.</p> <br/>
<p>Dichiara di aver preso visione dello Statuto della Società e si impegna ad osservarne il contenuto; si impegna altresì ad osservare
le deliberazioni degli organi sociali</p><br/>
<input type="submit" value="Registrati" name="sub">
</form></div>' ;
}
else {
unset($_POST['sub']);
foreach($_POST as $chiave => $valore){
if(trim($valore)==""){
echo "<div id='centrale'> attenzione: il campo '$chiave' è obbligatoro</div>";
echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
}
}
include 'config.php';
include 'connect.php';
$sottoscritto = $_POST['sottoscritto'];
$dove = $_POST['dove'];
$quando = $_POST['data'];
$query = "INSERT INTO iscrizioni (sottoscritto, dove, data) VALUES ('{$sottoscritto}','{$dove}','{$quando}');";
$result = mysql_query($query, $conn);
if(!$result) {
echo 'errore';
}
else {
'<p>grazie per esserti registrato </p>';
}
}
?>
Ultima modifica di Fabio90; 29-03-2012 alle 09:39
ciao
alla tua prima domanda
noE se invece di rendere tutti i campi obbligatori vorrei farne solo uno così potrebbe andare?
quando fai un foreach come quello che ti ho postato ricavi la chiave dell'array ed il suo valore (sia questa un array normale o superglobale)
quindi non devi leggere il valore (valore dell'elemento array con una data chiave) ma la chiave
quindi il tuo scrpt per rendere obbligatorio solo il campo data deve essere
per il secondo do un occhio poi ti so direCodice PHP:<?php
//....
}else {
unset($_POST['sub']);//elimini il post dal submit che comunque è pieno
foreach($_POST as $chiave => $valore){
if(trim($valore)=="" && $chiave ="data"){//verifico che $_POST['data'] non abbia valore vuoto
echo "attenzione: il campo $chiave è obbligatorio";//in questo caso 'data'
//e ritorni alla pagina pulita dopo 3 secondi (content='3 )
echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
}
//e qui tutto il resto
}
//...
?>


grazie mille troppo gentile
ciao
stavo guardando un po' il tuo script.
da quello che capisco tu salvi in una tabella del db i cami da input.
guarda che inseriti così brutalmente è abbastanza rischioso soprattutto quelli che inputa l'utente, o comunque possono darti notevoli fastidi.
ti faccio un esempio
<input type="text" name="sottoscritto">
se l'utente (anche se onesto e non vuole crearti danni, si chiama De' Sanctis, quando vai ad inserire nel db quell'apostrofo ti provoca il caos
altro, chiedi la data di nascita
<input type="text" name="data">
lo stesso utente può scrivere 10.01.1999 o 10/1/99 o 10 gennaio 1999 o in altra qualsiasi maniera con cui si può scrivere un data
e questo considerando un utente che non ti vuole male.
secondo me è da rivedere un po' tutto.
se hai pazienza in settimana prossima cominciamo a darci un occhio meglio
Qualche tempo fa (quando ancora non usavo framework e librerie varie) avrei fatto così:
Codice PHP:<?php
function processErrors(array $errors)
{
if (!empty($errors)) {
echo <<<'EOF'
<p>Si sono verificati i seguenti errori:</p>
<ul>
EOF;
foreach ($errors as $err) {
echo <<<EOF
<li>{$err}</li>
EOF;
}
echo <<<EOF
</ul>
<p><a href="{$_SERVER['REQUEST_URI']}">Torna indietro</a></p>
EOF;
}
}
// metti qui la connessione al database
// ...
if ('POST' === $_SERVER['REQUEST_METHOD']) {
$errors = array();
$sottoscritto = isset($_POST['sottoscritto']) ? trim($_POST['sottoscritto']) : '';
$dove = isset($_POST['dove']) ? trim($_POST['dove']) : '';
$quando = isset($_POST['quando']) ? trim($_POST['quando']) : '';
if ($sottoscritto == '') {
$errors[] = 'Non hai inserito il tuo nome.';
}
if ($dove == '') {
$errors[] = 'Non hai inserito il tuo luogo di nascita.';
}
if ($quando == '') {
$errors[] = 'Non hai inserito la tua data di nascita.';
}
processErrors($errors);
$sql = "INSERT INTO iscrizioni (sottoscritto, dove, data) VALUES('%s', '%s', '%s')";
$sql = sprintf($sql, addslashes($sottoscritto), addslashes($dove), addslashes($quando));
$query = mysql_query($sql) or die(mysql_error());
} else {
echo <<<EOF
<form method="post" action="#">
<h1>Dati personali</h1>
Il sottoscritto <input type="text" name="sottoscritto"><br><br>
nato a <input type="text" name="dove"><br><br>
il <input type="text" name="data"><br><br>
Residente a <input type="text" name="residente"><br><br>
CAP <input type="text" name="cap"><br><br>
Prov <select>
<option value="verona">VR</option>
<option value="venezia">VE</option>
<option value="padova">PD</option>
<option value="belluno">BL</option>
<option value="rovigo">RO</option>
<option value="vicenza">VI</option>
<option value="treviso">TV</option>
</select>
via <input type="text" name="via"><br/><br/>
tel <input type="text" name="tel"><br/><br/>
cell <input type="text" name="tel"><br/><br/>
<input type="submit" value="Registrati">
</form>
EOF;
}
?>