|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Jan 2006
Messaggi: 271
|
[PHP, MySQL] problematica mysql_num_rows
Ho un ciclo che mi mostra alcuni articoli del database
Codice PHP:
Codice PHP:
Codice PHP:
Ho provato il codice senza il while e il numero delle righe me le legge. Come potrei fare? |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
|
sapere per esteso la struttura delle tabelle chiarirebbe le cose, comuque ad occhio una soluzione veloce (forse non la migliore) sarebbe per ogni articolo di cui mostri il testo effettuare la query per ottenere il numero di commenti.
sapendo la struttura completa magari è possibile fare la stessa cosa con una query sola utilizzando una join.
__________________
![]() |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Nov 2003
Messaggi: 980
|
Codice PHP:
|
![]() |
![]() |
![]() |
#4 | |
Member
Iscritto dal: Jan 2006
Messaggi: 271
|
Quote:
|
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Nov 2003
Messaggi: 980
|
a, c e num_commenti sono alias, cioè un altro modo di identificare una tabella (articoli -> a, commenti -> c) o un campo (COUNT(commenti.id) -> num_commenti). Se non ti è chiaro, ecco altre 2 soluzioni identiche:
Codice:
SELECT a.*, COUNT(c.id) AS num_commenti FROM articoli AS a LEFT JOIN commenti AS c ON c.link_b = a.id GROUP BY articoli.id LIMIT 0,5 Codice:
SELECT articoli.*, COUNT(commenti.id) FROM articoli LEFT JOIN commenti ON commenti.link_b = articoli.id GROUP BY articoli.id LIMIT 0,5 |
![]() |
![]() |
![]() |
#6 |
Member
Iscritto dal: Jan 2006
Messaggi: 271
|
adesso funziona, però GROUP BY articoli.id me li ordina in maniere crescente, io vorrei che me li ordinasse in maniera decrescente.
Ho provato con un ORDER BY articoli.id DESC ma non funziona, addirittura spariscono gli articoli! |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Nov 2003
Messaggi: 980
|
Sicuramente metti l'ORDER BY nel posto sbagliato, e poi non controlli se la query dà errore o no. L'ORDER BY va dopo il GROUP BY e prima del LIMIT:
Codice:
SELECT a.*, COUNT(c.id) num_commenti FROM articoli a LEFT JOIN commenti c ON c.link_b = a.id GROUP BY a.id ORDER BY a.id DESC LIMIT 0,5 |
![]() |
![]() |
![]() |
#8 |
Member
Iscritto dal: Jan 2006
Messaggi: 271
|
Grazie. Adesso funziona tutto.
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:52.