Visualizzazione dei risultati da 1 a 6 su 6

Discussione: abbreviazione if

  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2001
    Messaggi
    1,065

    abbreviazione if

    Non è la stessa cosa? Il primo mi funziona il secondo no
    $pagato può esistere o non esistere (viene passato tramite una checkbox), se esiste $pagato diventa 1 altrimenti $pagato diventa 0 poi il valore 1/0 lo inserisco in un sql.

    codice:
    if ($pagato) { $pagato = '1' } else { $pagato = '0' };
    
    $pagato ? $pagato = '1' : $pagato = '0';
    Credo che nel secondo caso $pagato non viene valutato se esiste o meno, c'è una funzioncina che controlla questa cosa? Tipo exist($pagato)?

    Grazie

  2. #2
    deve esserci un altro problema, la seconda espressione è corretta e funziona.

    la funzione "exists" esiste, ma si applica alle chiavi degli hash non alle variabili scalari
    Marco Allegretti
    shishii@tiscalinet.it
    Lang: PERL, PHP, SQL.
    Linux user n° 268623 Fedora Core 10, Fedora Core 6, Debian Sarge on mips

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2001
    Messaggi
    1,065
    Ho una funzione:

    codice:
    sub funzionemia {
        my $pagato = $_[0];
        $pagato ? $pagato = '1' : $pagato = '0';
        
        # sql + dbi
        # etc etc
    }
    la funzione la richiamo così
    codice:
    &funzionemia( $parametro );
    $parametro è un parametro post che può esistere o meno (dipende dal checkbox).

    Ciao, grazie

  4. #4
    inserisci un print sotto
    my $pagato = $_[0];
    print $pagato;

    e controlla cosa contiene effettivamente.
    Marco Allegretti
    shishii@tiscalinet.it
    Lang: PERL, PHP, SQL.
    Linux user n° 268623 Fedora Core 10, Fedora Core 6, Debian Sarge on mips

  5. #5

    Re: abbreviazione if

    Originariamente inviato da homeworker
    Non è la stessa cosa? Il primo mi funziona il secondo no
    $pagato può esistere o non esistere (viene passato tramite una checkbox), se esiste $pagato diventa 1 altrimenti $pagato diventa 0 poi il valore 1/0 lo inserisco in un sql.

    codice:
    if ($pagato) { $pagato = '1' } else { $pagato = '0' };
    
    $pagato ? $pagato = '1' : $pagato = '0';
    Credo che nel secondo caso $pagato non viene valutato se esiste o meno, c'è una funzioncina che controlla questa cosa? Tipo exist($pagato)?

    Grazie
    Se usi il moduli strict e sei riuscito ad eseguire lo script allora la variabile esiste. Però può essere definita o non definita.
    Il tuo controllo ti permette di vedere solo se la variabile contiene GLi unici tre valori falsi sono ZERO NUMERICO, '' (stringa vuota) e undef (nessun valore). Tutti gli altri valori sono veri.
    Per vedere se una variabile è definita o meno si usa la funzione defined:
    defined($pagato) ? ($pagato=1) : ($pagato=0);

    Però nel caso tuo penso che ti serva solo vedere se un valore è vero o falso.


    Ricordati di includere sempre il modulo strict (minuscolo). I primi tempi tirrerai in terra qualche divinità shintoista ma con il tempo eviterai ogni tipo di errori.

    see you again

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2001
    Messaggi
    1,065
    Grazie ragazzi mi ero scordato del post...

    Si credo che alla fine mi dovrò fare un controllino con my $pagato = $_[0]; print $pagato;.

    Se usi il moduli strict e sei riuscito ad eseguire lo script allora la variabile esiste. Però può essere definita o non definita.
    Si programmo sempre con strict ho inziato con tutorial che consigliavano questa cosa e ho sempre fatto così. In realtà uso un framework che utilizza mod_perl semplificandomi molto l'integrazione anche con pagine complesse.

    In effetti credo che con my $pagato = $_[0]; (esista o meno $_[0]) la variabile $pagato per qualche motivo che ignoro sia non falsa.

    codice:
    sub funzionemia {
        my $pagato; # uso strict
        $_[0] ? $pagato = '1' : $pagato = '0';
        
        # sql + dbi
        # etc etc
    }
    oppure meglio ancora
    codice:
    sub funzionemia {
        my $pagato; # uso strict
        defined($_[0]) ? $pagato = '1' : $pagato = '0';
        
        # sql + dbi
        # etc etc
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.