- Home
- Categorie
- Coding e Sistemistica
- Coding
- CICLO IF: riempi o questi due campi o questi altri due
-
CICLO IF: riempi o questi due campi o questi altri due
Salve,
Per eseguire la verifica dei moduli uso questo codice:[PHP]<?php
if (isset($_POST["gabbia"]))
{
$errori=array();if (!isset($_POST['xxx']) || empty($_POST['xxx'])) { $errori[]='xxx'; }if (!empty($errori)) {
$messaggio = "Errore nella compilazione dei campi del form"; } else { $messaggio = "Ok";
}
}
?>
<?php
if (!empty($messaggio))
{
echo "<p>" . $messaggio . "</p>";
if (!empty($errori))
{foreach($errori as $campoerrore)
{
echo "* " . $campoerrore . "<br/>";
}}}?>[/PHP]Il problema è questo: ho quattro moduli e l'utente deve riempire o i primi due (XX, YY) o i secondi due (ZZ, JJ). Come glielo faccio capire a PHP??

-
Ehehe non ci crederai ma.. mi gira la testa a leggere questo codice
(MA FORSE SONO IO CHE NON LEGGO BENE)...
mi sembra un po come dire: se non e' giallo potrebbe essere rosso, ma se non e' rosso allora potrebbe essere arancione ma forse anche grigio a meno che non sia blu
o una cosa del genere.Facciamo cosi: inserisci anche i MODULI (che immagino siano in HTML) cosi posso capire meglio. GRASSIEEE.
-
Eccolo qui!

[PHP]<?php
if (isset($_POST["invia"]))
{
$errori=array();if (!isset($_POST['xx']) || empty($_POST['xx']))
{ $errori[]='xx'; }
//e gli altri...:)if (!empty($errori))
{$messaggio = "Errore nella compilazione dei campi del form";
}
else
{
$messaggio = "ok";
}
}
?><form id="form1" name="form1" method="post" action="">
<p>xx
<input type="text" name="xx" id="xx" />
yy
<input type="text" name="yy" id="yy" />
</p>
<p>oppure</p>
<p>zz
<input type="text" name="zz" id="zz" />
jj
<input type="text" name="jj" id="jj" />
</p>
<p>
<input type="submit" name="invia" id="invia" value="Invia">
</p></form>[/PHP]
-
per ora te la spiego in italiano in base a come la penso io :), pero' tu mi hai parlato di QUATTRO MODULI ma in realta' ne vedo uno soltanto (sicuramente hai fatto cio per spiegarti in breve) ma andiamo per ordine..
nel programma php direi:
controlla se XX e YY sono compilati, se la risposta e' SI allora fai questo...
poi
controlla se ZZ e JJ sono compilati, se la risposta e' SI allora fai quest'altro....A quanto pare in base al codice che hai scritto tu fai esattamente questo. Ma qui di domande da farti ce ne sarebbero moltissime e quindi:
- Tu vuoi che l'utente compili o SOLO I PRIMI 2 o SOLO I SECONDI 2? Che succede se li compilasse tutti e quattro??
- Se compilasse per ipotesi solo XX e JJ cosa accadrebbe??
Le altre domande te le faccio in base alla tua risposta

Alla prossima CIAOO
-
Ti faccio un esempio:
primi due campi "Sei nato in Italia?", "Dove?"
secondi due: "Sei nato all'estero?", Dove?".
Quindi o sei italiano o sei non italiano (ma a me andrebbe bene anche che tutti i campi fossero riempiti, l'importante è che o 2e2 o tutti e 4!)
-
io risolverei cosi il problema ovvero facendo in questo caso 2 controlli:
[PHP]//Verifica che ENTRAMBI i campi del primo blocco siano compilati
IF (!$_POST['xx']='') || (!$_POST['yy']='') {
fai quello che devi fare
} ELSE {
$messaggio "ERRORE, devi compilare entrambi i campi";
}// Verifica che ENTRAMBI i campi del secondo blocco siano compilati
IF (!$_POST['zz']=='') || (!$_POST['jj']=='') {
fai quello che devi fare
} ELSE {
$messaggio "ERRORE, devi compilare entrambi i campi";
}[/PHP]e a seguire un eventuale controllo del tipo :
[PHP]// Se ha generato errrore e quindi $messaggio non e' vuoto:
IF (!$messaggio=='') {
ECHO "CONTROLLA I DATI INSERITI";
}[/PHP]Fammi sapere se va bene.. giustamente puoi usare un codice SIMILE a questo.. ho pensato a quello piu CAPIBILE.. ma non so se ho capito bene IO ehehe.
-
Perfetto! Grazie al tuo aiuto ho modifica un po' il tuo codice e funziona perfettamente!

[PHP]//XX e YY o WW e ZZ
if ( (!isset($_POST['xx']) || empty($_POST['xx'])) || (!isset($_POST['yy']) || empty($_POST['yy'])) )
{
if ( (!isset($_POST['ww']) || empty($_POST['ww'])) || (!isset($_POST['zz']) || empty($_POST['zz'])) )
{$errori[]='XX e YY o WW e ZZ';
}[/PHP]