Visualizzazione risultati 1 fino 9 di 9

Discussione: Impaginazione query

  1. #1
    Guest

    Predefinito Impaginazione query

    Salve a tutti, ho bisogno di un aiuto, devo impaginare le categorie e sottocategorie della mia directory, rispettivamente nella tabella categ e subcateg del mio database, vorrei ottenere una cosa del genere:

    Categoria 1
    Subcateg 1
    Subcateg 2
    Subcateg 3
    etc..

    Vorrei inoltre che a fianco al nome delle categorie principali comparisse il numero dei siti presenti in quella categoria. Es:

    Categoria 1 (10)

    So come fare il conteggio ma come posso eseguirlo per ogni categoria e poi scriverlo a fianco della giusta categoria ?

    Spero di essere stato abbastanza chiaro, grazie

  2. #2
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    La maniera più semplice è quella di utilizzare due query (la seconda eseguita per il numero delle categorie):
    Codice PHP:
    <?php
    $risultato
    =mysql_query("SELECT categ.nomecategoria AS nomecategoria,COUNT(*) AS num,categ.id AS id FROM categ,subcateg WHERE categ.id=subcateg.categoria GROUP BY categ.id");
    while(
    $result=mysql_fetch_array($risultato)) {
    echo
    "<p /><strong>{$result['nomecategoria']} ({$result['num']}</strong>";
    $ris2=mysql_query("SELECT nomesubcategoria FROM subcateg WHERE categoria='{$result['id']}'");
    while(
    $res2=mysql_fetch_array($ris2))
    echo
    "<br />{$res2['nomesubcategoria']}";
    }
    ?>
    Non l'ho testato quindi non sono sicuro al 100% del funzionamento.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  3. #3
    Guest

    Predefinito

    Ti ringrazio molto per avermi risposto, non ho ben chiara una cosa che riguarda il conteggio, potresti spiegarmi meglio come hai fatto a contare i siti con una determinata categoria ? Grazie ancora

  4. #4
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    A dir la verità ho contato le varie sottocategorie, comunque il principio è lo stesso.
    Con COUNT ho contato tutte le righe raggruppate attraverso GROUP BY. Per una spiegazione migliore ti conviene dare una lettura alle numerose guide sul codice SQL che troverai in Internet.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  5. #5
    Guest

    Predefinito

    Ti ringrazio tanto, ora provo, ciao

    EDIT----------------------------------------------

    Ho modificato il codice con i nomi delle mie tabelle ma non visualizza nessun risultato

    Codice PHP:
    <?php
    $risultato
    =mysql_query("SELECT categ.categName AS categName,COUNT(*) AS num,categ.categId AS categId FROM categ,subcateg WHERE categ.categId=subcateg.subcategCateg GROUP BY categ.categId");
    while(
    $result=mysql_fetch_array($risultato)) {
    echo
    "<p /><strong>{$result['categName']} ({$result['num']}</strong>";
    $ris2=mysql_query("SELECT subcategName FROM subcateg WHERE cotegName='{$result['categId']}'");
    while(
    $res2=mysql_fetch_array($ris2))
    echo
    "<br />{$res2['subcategName']}";
    }
    ?>
    Ultima modifica di alterlinks : 27-02-2008 alle ore 11.14.39

  6. #6
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Non visualizzi niente perché scorri il result set della prima query ($risultato) con mysql_fetch_array() che restituisce un array con indici numerici e i valori delle colonne, mentre poi pretendi di stamparli come se avessi un array associativo $result['nome colonna'] = 'valore'. Ti conviene usare mysql_fetch_assoc() e leggerti la guida del PHP in merito a mySQL.

    Inoltre cosa vuol dire "<p />"??? Il paragrafo è un contenitore, se lo usi come spaziatore perde di senso.

    Riallego il codice corretto.

    Codice PHP:
    <?php
    $risultato
    =mysql_query("SELECT categ.categName AS categName,COUNT(*) AS num,categ.categId AS categId FROM categ,subcateg WHERE categ.categId=subcateg.subcategCateg GROUP BY categ.categId");
    while(
    $result=mysql_fetch_assoc($risultato)) {
    echo
    "<p><strong>{$result['categName']} ({$result['num']}</strong>";
    $ris2=mysql_query("SELECT subcategName FROM subcateg WHERE cotegName='{$result['categId']}'");
    while(
    $res2=mysql_fetch_assoc($ris2))
    echo
    "<br />{$res2['subcategName']}";
    echo
    "</p>";
    }
    ?>


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  7. #7
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Hai scritto "cotegName" nella seconda query.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  8. #8
    Guest

    Predefinito

    Ora visualizza solo le categorie che hanno una sottocategoria

  9. #9
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Citazione Originalmente inviato da alterlinks Visualizza messaggio
    Ora visualizza solo le categorie che hanno una sottocategoria
    Perché hai anche delle categorie vuote? Allora devi sostituire la prima query con:

    Codice PHP:
    $risultato=mysql_query("SELECT categ.categName AS categName,COUNT(*) AS num,categ.categId AS categId FROM categ LEFT JOIN subcateg ON categ.categId=subcateg.subcategCateg GROUP BY categ.categId");


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •