Visualizzazione dei risultati da 1 a 3 su 3

Discussione: While e albero dati

  1. #1

    While e albero dati

    Ciao. Allora io ho una tabella categoria con i campi Nome1,Nome2 e Appartenenza così che ci sono Categorie di livello 1 (il nome sta in livello1 e l'appartenenza è vuota) e Categorie di livello 2 quindi sottocategorie (in cui il nome sta nel campo livello2 e l'appartenenza p riempita con il nome sella categoria di livello 1 a cui appunto appartengono).

    Fin qui tutto ok.

    Il problema mi sorge quando devo andare a stampare l'albero delle categorie con le sottocategorie.

    Faccio una query con cui stampo con while tutte le categorie di livello 1.
    Poi all'interno del while tra le // e // ho fatto un'altra query dove seleziono le categorie di livello 2 in cui Appartenenza è uguale al livello 1 in corso nel while.

    Ora non so come stamparle poichè:

    se stampo direttamente con echo il while secondario, mi stampa correttamente tutte le categorie di livello2 ma me le stampa tutte SOPRA la categoria principale a cui appartengono.

    se invece quello che stampo lo inserisco in una variabile e la stampo dopo, non so com'è ma mi stampa una sola sottocategoria e la stessa sotto ogni categoria principale.
    Non so se è chiaro.
    Vi posto il codice:

    Codice PHP:
    <?php
           $query 
    "SELECT * FROM categorie_prodotti WHERE Nome != '' ORDER BY Nome ASC";
           
    $result mysql_query($query$db);
           
           while(
    $row mysql_fetch_array($result)) {
            
    //
            
    $mery "SELECT * FROM categorie_prodotti WHERE Appartenenza = '$row[Nome]' AND Nome2 != '' ORDER BY Nome2 ASC";
            
    $mesult mysql_query($mery$db);
                           while(
    $mow mysql_fetch_array($mesult)) {
                
                
    $subito "<tr><td width='500' align='left'>   [img]../img/freccia.gif[/img] $mow[Nome2]</td><td width='150' align='center'>[url='edit.php?ID=$mow[ID]&TAB=Sub']Modifica[/url]</td><td width='150' align='center'>[url='#']Elimina[/url]</td></tr>
                           }
            //
            echo"
    <tr><td width='500' align='left'$row[Nome]</td><td width='150' align='center'>[url='edit.php?ID=$row[ID]']Modifica[/url]</td><td width='150' align='center'>[url='#']Elimina[/url]</td></tr>";
            echo"
    $subito";


            }
    come risolvo?
    thanks
    http://codecanyon.net/category/all?ref=Manuelandro
    And I bet she told a million people that she'd stay in touch, Well all the little promises they dont mean much,When theres
    memories to be made

  2. #2
    Moderatore di Off Topic, Kickstarter e XML L'avatar di Sky
    Registrato dal
    Jul 2000
    residenza
    Roma
    Messaggi
    1,053
    Hai due strade possibili:

    - sposti l'echo delle categorie di primo livello prima del while() annidato
    - concateni le stringhe generate dal while annidato anteponendo un punto al segno "uguale": $subito .= ecc.ecc. In quest'ultimo caso ricordati di svuotare il contenuto della variabile $subito ad ogni ciclo while principale ($subito = NULL)

    Ciao ciao
    Lo Stato deve dare ai cittadini, come diritto, ciò che la mafia dà come favore.
    Carlo Alberto dalla Chiesa

    Facebook | Twitter | Last.fm | LinkedIn | Quora

  3. #3
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    prova così...

    Codice PHP:
    <?php
           $query
    ="SELECT   * 
                   FROM     categorie_prodotti 
                   WHERE    Nome !=''
                   AND      Appartenenza = Nome
                   AND      Nome2 !=''
                   ORDER BY Nome,Nome2 ASC"
    ;

           
    $result mysql_query($query);
           
           
    $old_nome="";
           while(
    $row mysql_fetch_array($result))
            {
            if (
    $row['nome'] != $old_nome)
              {
              echo 
    "<h3>{$row['Nome']}</h3>";
              }
            echo
    "==>{$row['Nome2']}
    "
    ;
            
    $old_nome=$row['Nome'];
            }
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

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.