Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25
  1. #1
    Utente bannato
    Registrato dal
    Feb 2011
    Messaggi
    85

    [PHP-MySQL] Numero di prodotti per ogni sottocategoria

    Della serie "a volte ritornano", rieccomi!

    Ho creato un sito riguardante una sanitaria/erboristeria, con database annesso.
    Il sito è strutturato cosi:

    Pagina categoria -> Pagina sottocategorie -> pagina elenco prodotti -> pagina dettaglio prodotto

    Cliccando sul link "categoria (esempio erboristeria, sanitaria, ortopedia ecc ecc)" mi mando sulla pagina "sottocategorie" l'id della categoria scelta in modo che la query mi dia l'elenco delle sottocategorie presenti nella categoria scelta, quindi a disposizione ho l'id della categoria.

    Quel che vorrei realizzare è visualizzare il numero dei PRODOTTI appartenenti ad ognuna delle SOTTOCATEGORIE che ci sono in ogni CATEGORIA, e non riesco a creare una query adatta allo scopo.

    Il DB è composto da 3 tabelle:


    CATEGORIA
    id_cat - nome_cat

    SOTTOCATEGORIA
    id_sottocat - id_cat - nome

    PRODOTTI
    id_prodotto - id_sottocat - id_cat - altri campi...


    Come posso fare?

  2. #2
    Prova una cosa del genere:

    Codice PHP:
    ...
    $query "SELECT p.nome FROM prodotti p, sottocategoria s, categoria c WHERE c.id_cat = s.id_cat AND p.id_sottocat = s.id_sottocat"
    ... 
    Ho dato per scontato che nella tabella prodotti vi sia un campo nome.
    Il campo id_cat nella tabella prodotti credo sia ridondante.

    P.S.
    Non ho provato la query.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente bannato
    Registrato dal
    Feb 2011
    Messaggi
    85
    ciao satifal.

    Questa query non va bene perchè non mi risolve il problema in quanto mi da TUTTI i prodotti contenuti in TUTTE le sottocategorie della categoria scelta, in quanto non ho un id_sottocat, capisci? Sennò era una sciocchezza.

    Probabilmente non sn riuscito a spiegarmi

    Io ho bisogno di sapere per ogni sottocategoria quanti prodotti ci sono.

    Comunque posto il codice cosi capite come funziona la pagina.

    codice:
    $result = mysql_query("SELECT * FROM sottocategoria WHERE id_cat='$_GET[categoria]' ORDER BY nome_sottocat");
    while ($row = mysql_fetch_array($result)) { 
    echo '<div class="box_categorie">'; 
    echo '[img]img/categorie/elenco/' . $row['id_sottocat'] . '.jpg[/img]'; 
    echo '
    
    ' . $row['nome_sottocat'] . '</p>'; 
    echo '</div>'; }

  4. #4
    Ma non basta qualcosa come
    codice:
    SELECT id_sottocat, COUNT(*) FROM prodotti GROUP BY id_sottocat
    ?

  5. #5
    Utente bannato
    Registrato dal
    Feb 2011
    Messaggi
    85
    è quella la soluzione, ma il problema è che id_sottocat non ce l'ho! ho id_categoria, non id_sottocategoria. Capito il problema?

    Ho provato a fare una query nella query, del tipo

    SELECT * FROM prodotti WHERE id_sottocat='$row[id_sottocat]'"

    all'interno del ciclo while stesso, ma non funziona (io l'avevo provato...) ..

  6. #6
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    io uso questa per fare la stessa identica cosa..
    SELECT COUNT(catalogo.Categoria) AS numero, catalogo.*, categorie.* from catalogo left join categorie ON (catalogo.categoria = categorie.id) WHERE eccetera

    adattala e fammi sapere..

  7. #7
    Originariamente inviato da Drummelo
    è quella la soluzione, ma il problema è che id_sottocat non ce l'ho! ho id_categoria, non id_sottocategoria. Capito il problema?
    Boh tu hai scritto che ce lo avevi
    Allora basta una join, ora sto uscendo se non hai risolto dopo te la scrivo.

  8. #8
    Utente bannato
    Registrato dal
    Feb 2011
    Messaggi
    85
    Originariamente inviato da telegio
    io uso questa per fare la stessa identica cosa..
    SELECT COUNT(catalogo.Categoria) AS numero, catalogo.*, categorie.* from catalogo left join categorie ON (catalogo.categoria = categorie.id) WHERE eccetera

    adattala e fammi sapere..
    Non ci ho capito una cippa onestamente O_o Mi è un po confuso sto codice .......

    Originariamente inviato da k.b
    Boh tu hai scritto che ce lo avevi Allora basta una join, ora sto uscendo se non hai risolto dopo te la scrivo.
    Nu, avevo scritto solo id della categoria Ma purtroppo con una semplice join non ci riesco...

    Se guardi il codice vedi che mi visualizza tutte le sottocategorie della categoria scelta in maniera totalmente automatizzata, ma questo tramite l'id_categoria che, inserito nella query, mi estrapola le sottocategorie appartenenti alla categoria con l'id_categoria che ho disponibile, e tutto ovviamente in maniera automatizzata.
    In tutto questo, avendo SOLO e SOLTANTO l'id_categoria, come faccio ad ottenere il conteggio degli oggetti appartenenti ad ogni singola sottocategoria?

    C'è da uscire pazzi con sto php....

  9. #9
    Utente bannato
    Registrato dal
    Feb 2011
    Messaggi
    85
    Niente, mi sa che sto diventando un mago! No davvero, ci sono riuscito, in un modo strano, ma ci sono riuscito perfettamente, cose da pazzi...
    Le parti in rosso sono la mia aggiunta. Funziona alla perfezione, ma se conoscete un modo per fare tutto ciò con una sola query, postate.

    codice:
    $result = mysql_query("SELECT * FROM sottocategoria WHERE id_cat='$_GET[categoria]' ORDER BY nome_sottocat");
    while ($row = mysql_fetch_array($result)) {
    
    $result2 = mysql_query("SELECT * FROM prodotti WHERE id_sottocat='$row[id_sottocat]'");
    $num_prodotti = mysql_num_rows($result2); 
    
    echo '<div class="box_categorie">';
    echo '[img]img/categorie/elenco/' . $row['id_sottocat'] . '.jpg[/img]';
    echo '
    
    ' . $row['nome_sottocat'] . '</p>';
    echo $num_prodotti; 
    echo '</div>';
    }
    PS: grazie infinite, siete sempre disponibilissimi e gentilissimi.

  10. #10
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    così fai un sacco di query inutili.
    prova così
    Codice PHP:
    SELECT COUNT(prodotti.id_sottocat) AS numeroprodotti.*, sottocategoria.* from prodotti left join sottocategoria ON (prodotti.id_sottocat sottocategoria.id_sottocatGROUP BY prodotti.id_sottocat 
    non so se ho beccato tutti i nomi dei campi giusti..

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.