• User Attivo

    Controllare variabili da form con empty() o isset()

    Ciao,
    ho un form in php che passa variabili in "get".
    Prima di passarle alal pagina successiva voglio eseguire un controllo per evitare di passare le variabili che sono a zero, quindi faccio:

    while(list($chiave,$valore)=each($_GET)) {
    if (isset($valore)) {
    $stringa_get .= $chiave."=".$valore."&";
    }
    else {

    }
    

    }

    Però non mi funziona...

    Ho provato anche a "saltare" le variabili uguali a zero con:

    while(list($chiave,$valore)=each($_GET)) {
    if ($valore == 0) {
    }
    else {
    $stringa_get .= $chiave."=".$valore."&";
    }
    }

    ma ... si, le variabili pari a 0 le salte ma mi salta anche quelle "non numeriche" (invece quelle numeriche diverse da zero le passa..)

    Mi potete perfavore dare una mano a capire come risolvere?

    Grazie infinite,
    ciao! 🙂


  • ModSenior

    Perchè non fare un controllo lato Client?


  • User Attivo

    Ciao,
    si, lato client con javascript, hai mica per caso qualcosa (tutorial, guida..) da suggerirmi su come fare?

    Comunque, però, la domanda iniziale mia rimane: come mai quel codice PHP non funziona? Dove è l'errore? Ci sarà un modo per farlo funzionare.. 🙂

    Vorrei capire...

    Grazie comunque!
    ciao ciao!


  • ModSenior

    Purtroppo non conosco bene php...
    Ma la sintassi list($chiave,$valore)=each($_GET) è corretta?
    La clausola list vuole che le vengano assegnate due valori, chiave e valore appunto.
    Mentre each ne restituisce due o uno? Non restituisce solo il valore della variabile GET?


  • Super User

    Quella sintassi è giusta.

    In pratica each ritorna un array contenente la chiave ed il valore di uno specifico elemento dell'array, ed avanza il seeker nell'array di un punto. Nel while questa cosa ti permette di avere chiave e valore di ogni elemento.

    Comunque, io userei un foreach, è stato inventato apposta questo costrutto!

    Prova con:
    [php]
    foreach($_GET AS $chiave => $valore)
    if(is_null($valore) OR $valore == '')
    die("Ommioddio, una variabile non settata!!");
    [/php]


  • User Attivo

    Ciao,
    si, la cosa funziona parzialmente, come faceva prima.. ufffffffffff!!
    Il fatto strano che non fa funzionare il ciclo è che sembra non "capire" il tipo di dati...

    Se gli scrivo:
    if(is_null($valore))...
    mi passa ugualmente le variabili che hanno $valore=0

    Se gli scrivo:
    if(is_null($valore) OR $valore==0)....
    mi blocca anche variabili che sono del tipo "WYETR-or-45-nero"

    non riesco veramente avenire a capo di queste bizzarrie... 😞

    grazie ancora!
    ciao!


  • Super User

    Per un controllo esteso al tipo di dati, usa l'operatore ===

    [php]
    /// bla bla bla
    if(is_null($valore) OR $valore == '' OR $valore === 0)
    // bla bla bla
    [/php]


  • User Attivo

    Ciao,
    nulla da fare purtroppo.. 😞

    Il problema è che, se io scrivo:
    if ($valore == 0) {
    ...

    Lui mi interpreta come 0 anche valori come:
    "Q2610A-44.90-comp-Nero"
    "Si"
    "Riepilogo Ordine"

    Se invece scrivo:
    if ($valore === 0) {
    ...

    Allora niente equivale strettamente a zero...

    Non mi abbandonate 🙂
    Grazie infinite,
    ciao!