Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Select riempita da categorie e sottocategorie

    Ciao a tutti,
    sto cercando di riempire una select con delle categorie e sottocategorie prese dal database.
    Le tabelle sono strutturate nel seguente modo

    cat id, nomeCat
    sottoCat id, id_cat ,sottoCat

    e il codice che sto utilizzando per visualizzare la select è il seguente.
    Codice PHP:
    $sqlQuery "SELECT categorie FROM xxx ";
    $rsQuery mysql_query($sqlQuery) or die(mysql_error());

    <
    select name='padreCat'  >
    echo 
    "<option></option>";
        while(
    $rows mysql_fetch_array($rsQuery)){
            
    $id $rows['id'];
            
    $Cat $rows['categorie'];
            echo 
    "<optgroup label='$Cat'>$Cat";
                   
    // cerco le sottocategorie
                   
    $sql "SELECT * FROM xxx WHERE id_cat = ".$id." ";
                   
    $rs mysql_query($sql) or die(mysql_error());
                   
    $max mysql_num_rows($rs);
                   if(
    $max!=0){
                     for(
    $j=0;$j<$max;$j++){
                           
    $rg mysql_fetch_assoc($rs);
                            
    $sottoCat $riga['sottoCat'];
                            
    $iId $riga['iId'];
                       echo 
    "<option value='$iId'>$sottoCat</option>";
                       if(
    $j==$max){ 
                            echo 
    "</optgroup>";
                       }
                     }else{
                      echo 
    "<option>$Cat</option>";
                      }
                        
                  }
        }
        echo 
    "<option value='aggiungi'>Aggiungi una nuova categoria</option>
        </select>"

    purtroppo vedo perfettamente il primo gruppo... poi non vedo + nulla
    Come mai?

  2. #2
    Utente di HTML.it L'avatar di hyde82
    Registrato dal
    Feb 2010
    Messaggi
    243
    C'è un modo più semplice per gestire questa problematica. Di solito non vincolo una categoria ad una sola sottocategoria ma ad infinite....
    ecco un esempio:

    tabella category
    category_id | parent_id | nome categoria
    1 | 0 | Programmazione
    2 | 1 | PHP
    3 | 1 | ASP
    4 | 0 | Cucina
    5 | 0 | Giardinaggio
    6 | 0 | Letteratura
    7 | 6 | Italiana

    Codice PHP:
    //istanza oggetto.....
    //utilizzo metodo prelievo categorie
    $cat $this->getCategories(0);
    //prelievo categorie 
    public function getCategories($parent_id 0) { 
    $categories= array();          
    $query "SELECT * FROM category WHERE parent_id = '" . (int)$parent_id
    //esecuzione query 
    //ciclo elementi                     
    foreach ($row as $result) {                 
    $categories = array( '
    category_id' 
    => $result['category_id'], 
    'name'  => $this->getPath($result['category_id'])),                                  );             //ricorsione                 
    $categories array_merge($categories$this->getCategories($result['category_id']));             }                      
    return 
    $categories;     
    }  

    public function 
    getPath($category_id) {         
    $query "SELECT name, parent_id FROM category  WHERE category_id = '" . (int)$category_id ;         
    //esecuzione query               
     //prelevo elemento         
    if ($row['parent_id']) {
    //ricorsione             
    return $this->getPath($row['parent_id']) .'->' $row['name'];         
    } else {             
    return 
    $row['name'];         
    }     

    in questo esempio la matrice $cat conterrà

    Programmazione
    Programmazione -> PHP
    Programmazione -> ASP
    Cucina
    Giardinaggio
    Letteratura
    Letteratura -> Italiana

    facilmente scandibile per la tua select...

    per chiarimenti puoi leggere questo utile tutorial riguardante
    http://database.html.it/articoli/leg...e-su-database/
    Adjacency model

  3. #3
    Ciao scusa per la risposta tarda ma non sono riuscito a risponderti prima.

    Questa funzione mi potrebbe servire solo per visualizzare le categorie in quanto se creo una select e una persona seleziona l'hgroup non viene associata come categoria ma è obbligata a scegliere una sottocategoria giusto?

  4. #4
    Utente di HTML.it L'avatar di hyde82
    Registrato dal
    Feb 2010
    Messaggi
    243
    no,puoi selezionare sia la categoria padre che le relative sottocategorie

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.