• User Attivo

    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?? :arrabbiato:


  • User

    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.


  • User Attivo

    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]


  • User

    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:

    1. Tu vuoi che l'utente compili o SOLO I PRIMI 2 o SOLO I SECONDI 2? Che succede se li compilasse tutti e quattro??
    2. Se compilasse per ipotesi solo XX e JJ cosa accadrebbe??

    Le altre domande te le faccio in base alla tua risposta 🙂
    Alla prossima CIAOO


  • User Attivo

    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!) 🙂


  • User

    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.


  • User Attivo

    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]