Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Perché php mi costringe ad usare elseif?

    Se uso questo codice:
    Codice PHP:
    // verifico che tutti i campi siano stati compilati
    if (! $name || ! $email || ! $phone || ! $message) {
        
    $test false;
        echo 
    "<p><strong>Tutti i campi del modulo sono obbligatori!</strong></p>";
    // verifico che il messaggio non sia troppo lungo
    elseif (strlen $name ) >= 100 || strlen $email ) >= 100 || strlen $phone ) >= 100 || strlen $message ) >= 5000) {
        
    $test false;
        echo 
    "<p><strong>Il messaggio e' troppo lungo.</strong></p>";
    // verifico che il nome non contenga caratteri nocivi
    elseif (! preg_match '/^[A-Za-z \'-]+$/i'$name )) {
        
    $test false;
        echo 
    "<p><strong>Il nome contiene caratteri non ammessi.</strong></p>";
    // verifico che l'indirizzo email sia valido
    elseif (! filter_var $emailFILTER_VALIDATE_EMAIL )) {
        
    $test false;
        echo 
    "<p><strong>Indirizzo email non corretto.</strong></p>";
    // verifico che il numero di telefono sia un numero senza spazi
    elseif (! is_numeric $phone )) {
        
    $test false;
        echo 
    "<p><strong>Numero di telefono non corretto.</strong></p>";

    nessun problema. Se sostituisco l'ultimo elseif con else come qui di seguito:
    Codice PHP:
    // verifico che tutti i campi siano stati compilati
    if (! $name || ! $email || ! $phone || ! $message) {
        
    $test false;
        echo 
    "<p><strong>Tutti i campi del modulo sono obbligatori!</strong></p>";
    // verifico che il messaggio non sia troppo lungo
    elseif  (strlen $name ) >= 100 || strlen $email ) >= 100 || strlen (  $phone ) >= 100 || strlen $message ) >= 5000) {
        
    $test false;
        echo 
    "<p><strong>Il messaggio e' troppo lungo.</strong></p>";
    // verifico che il nome non contenga caratteri nocivi
    elseif (! preg_match '/^[A-Za-z \'-]+$/i'$name )) {
        
    $test false;
        echo 
    "<p><strong>Il nome contiene caratteri non ammessi.</strong></p>";
    // verifico che l'indirizzo email sia valido
    elseif (! filter_var $emailFILTER_VALIDATE_EMAIL )) {
        
    $test false;
        echo 
    "<p><strong>Indirizzo email non corretto.</strong></p>";
    // verifico che il numero di telefono sia un numero senza spazi
    else (! is_numeric $phone )) {
        
    $test false;
        echo 
    "<p><strong>Numero di telefono non corretto.</strong></p>";

    ottengo questo errore:
    codice:
    Parse error: syntax error, unexpected '{' in ... on line 151
    Ma come è possibile? Perché?!? Non può essere!!!
    Più pratica in futuro...

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,344
    Dopo la else hai sia { sia una sola istruzione. Ecco perche.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Dopo la else hai sia { sia una sola istruzione. Ecco perche.
    Non capisco, a me sembra che le istruzioni siano 2 !?!?

    Codice PHP:
        $test false// prima istruzione
        
    echo "<p><strong>Numero di telefono non corretto.</strong></p>"// seconda istruzione 
    per poter usare else come dovrei correggere il codice?
    Più pratica in futuro...

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,344
    Volevo dire che quando usi else, dopo hai sia { sia un'istruzione. Tu, dopo la else, hai una condizione che il parser analizza come un'istruzione seguita da {


    Codice PHP:
    if (condizione) {
      
    codice
    } else {
      if (
    condizione) {
        
    codice
      
    }

    o
    Codice PHP:
    if (condizione) {
      
    codice
    } elseif (condizione) {
      
    codice

    codice:
    if (! $name || ! $email || ! $phone || ! $message) {
        $test = false;
        echo "<p><strong>Tutti i campi del modulo sono obbligatori!</strong></p>";
    } else {
      if (strlen ( $name ) >= 100 || strlen ( $email ) >= 100 || strlen ( $phone ) >= 100 || strlen ( $message ) >= 5000) {
        $test = false;
        echo "<p><strong>Il messaggio e' troppo lungo.</strong></p>";
      } else { 
        if (! preg_match ( '/^[A-Za-z \'-]+$/i', $name )) {
          $test = false; 
          echo "<p><strong>Il nome contiene caratteri non ammessi .</strong></p>";
        } else { 
          if (! filter_var ( $email, FILTER_VALIDATE_EMAIL )) {
            $test = false;
            echo "<p><strong>Indirizzo email non corretto.</strong></p>";
          } else { 
           if (! is_numeric ( $phone )) {
            $test = false;
            echo "<p><strong>Numero di telefono non corretto.</strong></p>";
           }  
          }
        }
      }
    }
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #5
    quindi molto più semplicemente è una regola, cavolo che strana questa cosa! io pensavo di aver scritto qualcosa di errato nel codice

    grazie mille badaze!
    Più pratica in futuro...

  6. #6
    Quote Originariamente inviata da giannino1995 Visualizza il messaggio
    quindi molto più semplicemente è una regola, cavolo che strana questa cosa! io pensavo di aver scritto qualcosa di errato nel codice

    grazie mille badaze!
    in verità hai scritto una cosa errata.
    l'else non richiede un ulteriore condizione, ma esegue le istruzioni nel caso non si verifichi nessuna condizione precedente.
    questo vale per praticamente qualunqu linguaggio....

  7. #7
    Beh non e' strano, non ha senso mettere una condizione dopo else.

  8. #8
    Quote Originariamente inviata da fermat Visualizza il messaggio
    in verità hai scritto una cosa errata.
    l'else non richiede un ulteriore condizione, ma esegue le istruzioni nel caso non si verifichi nessuna condizione precedente.
    questo vale per praticamente qualunqu linguaggio....
    se provi il ciclo con else scritto sopra ti accorgerai che non funziona ma devi mettere elseif
    a mio avviso con java funzionerebbero entrambi gli script
    Più pratica in futuro...

  9. #9
    non hai capito cosa intendevo.
    io intendevo che questo non si può fare:
    codice:
    else (CONDIZIONE) {
    ..........
    }
    else non vuole una condizione, in nessun linguaggio.
    la sintassi corretta è:
    codice:
    else {
    .......
    }
    e questo perchè else viene eseguito solo se non si è entrati in nessun if/elseif precedente.
    e vale anche per java

    se poi pensi sia il contrario, leggiti qualche guida di base....

  10. #10
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Quote Originariamente inviata da fermat Visualizza il messaggio
    ...
    se poi pensi sia il contrario, leggiti qualche guida di base....
    Ma sei pazzo? Mai proporre di cercare una guida a giannino, ne nascerà una discussione chilometrica!
    Ti propongo per il ban!

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.