Pagina 3 di 3 primaprima 1 2 3
Visualizzazione dei risultati da 21 a 29 su 29

Discussione: problema con un if

  1. #21
    Oramai mi ha incuriosito questa storia, appena ho un pò di tempo ricreo la stessa tabella e faccio le prove

  2. #22
    Ok, allora ti preparo il codice per ricrearle e te lo posto.
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  3. #23
    Ecco il codice per creare le tabelle

    codice:
    CREATE TABLE catalogo_prodotti
    	(
    		id int (10) NOT NULL auto_increment,
    		nome varchar (255),
    		categoria int (10),
    		PRIMARY KEY (id)
    	);
    In categoria ci va l'id della categoria di cui fa parte il prodotto

    codice:
    CREATE TABLE catalogo_categorie
    	(
    		id int (10) NOT NULL auto_increment,
    		nome varchar (255),
    		padre int (10),
    		PRIMARY KEY (id)
    	);
    Per inserire le categorie devi usare il metodo ricorsivo. Per es se io ho i seguenti path

    webmaster/php/guide
    webmaster/php/tutorials
    webmaster/asp/guide
    webmaster/asp/tutorials
    programmazione/C/guide
    programmazione/C/tutorials
    programmazione/pascal/guide
    programmazione/pascal/tutorials

    il databse sarà organizzato così

    codice:
    +------+----------------+-------+
    | id   | NOME           | PADRE |
    +------+----------------+-------+
    |    1 | Webmaster      |     0 |
    +------+----------------+-------+
    |    2 | Programmazione |     0 |
    +------+----------------+-------+
    |    3 | PHP            |     1 |
    +------+----------------+-------+
    |    4 | Guide          |     3 |
    +------+----------------+-------+
    |    5 | Tutorials      |     3 |
    +------+----------------+-------+
    |    6 | ASP            |     1 |
    +------+----------------+-------+
    |    7 | Guide          |     6 |
    +------+----------------+-------+
    |    8 | Tutorials      |     6 |
    +------+----------------+-------+
    |    9 | C              |     2 |
    +------+----------------+-------+
    |   10 | Guide          |     9 |
    +------+----------------+-------+
    |   11 | Tutorials      |     9 |
    +------+----------------+-------+
    |   12 | Pascal         |     2 |
    +------+----------------+-------+
    |   13 | Guide          |    12 |
    +------+----------------+-------+
    |   14 | Tutorials      |    12 |
    +------+----------------+-------+
    Spero di essere stato chiaro! Se ci sono problemi fammi sapere.
    La funzione penso sia abbastanza chiaro che fa! Grazie per l'aiuto!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  4. #24

    Codice PHP:
    function isproductincat($id){
        global 
    $db;
        
    $query "SELECT id,nome,categoria FROM catalogo_prodotti WHERE categoria = '$id'";
        
    $result mysql_query($query,$db);
        if (
    mysql_num_rows($result) > 0){
            return 
    true;
        }
        else{
            
    $query "SELECT id,nome,padre FROM catalogo_categorie WHERE padre = '$id'";
            
    $result mysql_query($query,$db);
            while (
    $row mysql_fetch_array($result)){
                if(
    isproductincat($row['id'])){
                    return 
    true;
                }
            }
        }

    Corretto e funzionante, restutuisce true se il valore passato esiste altrimenti restituisce false. Usavi la funzione ricorsiva, quindi bisogna controllare anche quando la seconda chiamata restituisce true e fermare il codice. Se ci sono problemi fammi sapere. tempo impiegato 7 minuti troppi no?

  5. #25
    Ma scusa, quando fa la ricorsione non incontra di nuovo il blocco con il true? E non dovrebbe pensare a quello? Cmq grazie per l'aiuto! Credo che non ci sarei mai arrivato!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  6. #26
    Si ma restituisce true solo al ciclo while che continua fino a che non si è finito di processare i record, quindi restituisce true ma non viene catturato dall'if esterno alla funzione. Terminato il ciclo while termina anche la funzione e non restituisce nulla, l'if esterno lo prende come false. Invece in quel modo viene restituito true anche dentro al ciclo che lo blocca


  7. #27
    Ho capito. Grazie!
    eCommerceRS.NET - Commerciante, vendi on-line!
    Il mio nick è mircov e non mirco!!!

  8. #28
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,373
    Originariamente inviato da jeck
    Si ma restituisce true solo al ciclo while che continua fino a che non si è finito di processare i record, quindi restituisce true ma non viene catturato dall'if esterno alla funzione. Terminato il ciclo while termina anche la funzione e non restituisce nulla, l'if esterno lo prende come false. Invece in quel modo viene restituito true anche dentro al ciclo che lo blocca

    Ma non ritorna mai false !!!

  9. #29
    Infatti, ho scritto che non rstituisce nella, ma è l'if che richiama la funzione che lo interpreta come false

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