• Super User

    Problema con menù a categorie

    Salve ragazzi, il codice che sto cercando di fare funzionare è questo:

    //CATEGORY SELECT GOES FROM HERE
    mysql_select_db("cms",$connection);
    $query=mysql_query("SELECT * FROM pcategory") or die ("Query error: " . mysql_error());
    //TO HERE
    
    
    
    while($fetch=mysql_fetch_array($query))
    {
        $id=$fetch['id'];
        $name=$fetch['name'];
        $sql=mysql_query("SELECT * FROM pages WHERE id='$id' or puser='$name' LIMIT 500") or die ("Query error: " . mysql_error());
        $fetcha=mysql_fetch_array($sql);
        print '<br />';
        print '<b>- ' . $fetch['name'] . ' -</b><br />';
        print '<a href="p/' . $fetcha['title'] . '.php">' . $fetcha['title'] . '</a>';
    }
    
    ```In pratica si dovrebbe visualizzare un menù diviso per categorie e ogni categoria contiene varie pagine che le vengono assegnate. Il problema è che le pagine vengono assegnate a caso partendo dalla prima categoria e massimo una per categoria... cosa sto sbagliando nello script?

  • User Attivo

    Ad una prima occhiata manca il ciclo while all'altezza della seconda query.


  • Super User

    L'ho modificato aggiungendo il secondo ciclo while:

    //CATEGORY SELECT GOES FROM HERE
    mysql_select_db("cms",$connection);
    $query=mysql_query("SELECT * FROM pcategory") or die ("Query error: " . mysql_error());
    //TO HERE
     
    while($fetch=mysql_fetch_array($query))
    {
     $id=$fetch['id'];
     $name=$fetch['name'];
     $sql=mysql_query("SELECT * FROM pages WHERE content='$id' or puser='$name'") or die ("Query error: " . mysql_error());
           
     print '<br />';
     print '<b>- ' . $fetch['name'] . ' -</b>';
     print '<br />';
     while($fetcha=mysql_fetch_array($sql))
     {
       print '<a href="p/' . $fetcha['title'] . '.php">' . $fetcha['title'] . '</a>';
     }
     
     }
    

    Il problema è che visualizza massimo una pagina per categoria, per esempio se io assegno alla prima categoria 2 pagine lui trova la prima, si visualizza e si ferma. Se la cetegoria sotto è vuota la visualizza li altrimenti niente. Come posso fare per fargli continuare la cerca dopo che ha trovato il primo risultato fino al fondo della tabella?
    max


  • User Attivo

    Ciao, prova a usare questo codice:

    $categoria = "SELECT * FROM pcategory";
    mysql_select_db("cms",$connection);
    $sel_categoria=mysql_query($categoria, $connection) or die(mysql_error());
    $row_sel_categoria = mysql_fetch_assoc($sel_categoria);
    $totalRows_sel_categoria = mysql_num_rows($sel_categoria);

    if ($totalRows_sel_categoria > 0) { // Show if recordset not empty
    do {
    $id = $row_sel_categoria['id'];
    $name=$row_sel_categoria['name'];

    print '<br />';
    print '<b>- ' . $name . ' -</b>';
    print '<br />';
    
        $pagine = "SELECT * FROM pages WHERE content=".$id." or puser='".$name."'":
        $sel_pagine=mysql_query($pagine, $connection) or die(mysql_error());
        $row_sel_pagine = mysql_fetch_assoc($sel_pagine);
        $totalRows_sel_pagine = mysql_num_rows($sel_pagine);
        if ($totalRows_sel_pagine > 0) { // Show if recordset not empty 
        do {
            $title = $row_sel_pagine['title'];
            print '<a href="p/'.$title.'.php">'.$title.'</a>';
        } while ($row_sel_pagine = mysql_fetch_assoc($sel_pagine));
    

    } while ($row_sel_categoria = mysql_fetch_assoc($sel_categoria));

    } // Show if recordset not empty ?>

    if ($totalRows_sel_categoria == 0) { // Show if recordset empty

    } // Show if recordset empty