Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439

    [php4] come posso uscire da un if e un while senza interrompere l'intero script php?

    Come da topic, nel momento in cui $can_do viene impostato su false dovrei uscire dal while e dall'if e passare al controllo successivo.
    Come si fa? Mi pare con break ma non sono sicuro e non conosco bene la sintassi in questo caso...

    Codice PHP:
    <?php

        $can_do 
    true;
        
    $ris = &mysql_query"__query1__" ) or die( mysql_error() );
        
    $row mysql_fetch_row$ris );
        if( 
    $row[0] == '1' ) {
            
    $ris = &mysql_query"__query2__" ) or die( mysql_error() );
            while( 
    $row mysql_fetch_row$ris ) ) {
                
    $inner_ris = &mysql_query"__query3__" ) or die( mysql_error() );
                if( 
    mysql_num_rows$inner_ris ) >$can_do false// a questo punto dovrei uscire dal while e dall'if
            
    }
        }
        
        
    //controllo
        
    if( $can_do ) {
            echo 
    'OK';
        } else {
            echo 
    'NO';
        }

    ?>
    In pratica, nel while possono esserci vari true e vari false, ma per ogni riga quello precedente viene sovrascritto; io invece avrei bisogno di fermarmi al primo false che trova senza però uscire col die()
    わさび

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    698
    se devi uscire dal ciclo devi usare break, non continue

    codice:
    if( mysql_num_rows( $inner_ris ) >0 ) 
    {
    $can_do = false;
    break;
    }
    continue ritorna a valutare la condizione del ciclo ed eventualmente continua le iterazioni

  4. #4
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439
    Codice PHP:
    <?php

        $can_do 
    true;
        
    $ris = &mysql_query"__query1__" ) or die( mysql_error() );
        
    $row mysql_fetch_row$ris );
        if( 
    $row[0] == '1' ) {
            
    $ris = &mysql_query"__query2__" ) or die( mysql_error() );
            while( 
    $row mysql_fetch_row$ris ) ) {
                
    $inner_ris = &mysql_query"__query3__" ) or die( mysql_error() );
                if( 
    mysql_num_rows$inner_ris ) >
                {
                    
    $can_do false;
                    break; 
    // così esco solo dal while?
                
    }
            }
        }
        
        
    //controllo
        
    if( $can_do ) {
            echo 
    'OK';
        } else {
            echo 
    'NO';
        }

    ?>
    come devo mettere break; oppure continue 2; ?
    devo uscire fino al controllo finale if( $can_do ) {
    わさび

  5. #5
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439
    usandoli entrambi sembra funzionare
    ma mi sorge un dubbio

    if( qualcosa) {
    break;
    continue;
    }

    il continue non dovrebbe essere letto...
    わさび

  6. #6
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439
    forse una cosa di questo genere andrebbe meglio
    Codice PHP:
                if( mysql_num_rows$inner_ris ) >) {
                    
    $can_do false;
                    break;
                }
                if( !
    $can_do ) continue; 
    わさび

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    698
    scusa, aspetta un attimo

    con break e continue tu esci da un ciclo

    che vuol dire che vuoi uscire da un if? se ci sei entrato significa che la condizione era soddisfatta...questo tipo di controlli li fai in base alle condizioni booleane

  8. #8
    Utente di HTML.it L'avatar di Trinità76
    Registrato dal
    Jan 2002
    Messaggi
    1,439
    Originariamente inviato da Gil Mour
    scusa, aspetta un attimo

    con break e continue tu esci da un ciclo

    che vuol dire che vuoi uscire da un if? se ci sei entrato significa che la condizione era soddisfatta...questo tipo di controlli li fai in base alle condizioni booleane
    si lo so ma nel mio caso
    mi devo fermare non appena __query3__ restituisce una riga

    con il primo if (quello più dentro) verifico la presenza di una riga,
    poi imposto la variabile su false
    break; -> esco dall'if
    continue; -> esco dal while
    e finalmente passo al controllo più in basso if( $can_do ) {
    わさび

  9. #9
    alcune cose scritte in questo thread fanno paura VVoVe: VVoVe:

    codice:
    if( $row[0] == '1' ) {
            $ris = &mysql_query( "__query2__" ) or die( mysql_error() );
            while( $row = mysql_fetch_row( $ris ) ) {
                $inner_ris = &mysql_query( "__query3__" ) or die( mysql_error() );
                if( mysql_num_rows( $inner_ris ) >0 ) break;
            }
    }
    mettendo il break li si interrompe il ciclo WHILE.

    invece riguardo all'if
    1- non è un ciclo
    2- che senso ha INTERROMPERE un if??? mettendo break dove l'ho messo il codice contina dopo il while ma guarda caso non FA NIENTE ed esce anche dall'if....

    bah
    www.gext.it

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 © 2025 vBulletin Solutions, Inc. All rights reserved.