-
Errore PHP non visibile
Ciao, mi sapete speigare perche se faccio una cosa del genere mi mostra solo il primo risultato della query? mi potete anche indicare un modo per risolvere perfavore?
Codice PHP:
$query = "SELECT * FROM categorie ORDER BY nome";
$result = mysql_query($query);
while ($echo = mysql_fetch_array($result)) {
$query = "SELECT count(*) AS tot FROM articoli WHERE categoria='$echo[id]'";
$result = mysql_query($query);
$articoli = mysql_fetch_array($result);
echo "<a href=index.php?cat=$echo[id]>$echo[nome] ($articoli[tot])</a><br />";
}
Grazie mille, ciaooo...
-
Sostituisci questa riga:
"SELECT count(*) AS tot FROM articoli WHERE categoria='$echo[id]'"
con questa:
"SELECT count(*) AS tot FROM articoli WHERE categoria='".$echo['id']."'"
E questa:
echo "<a href=index.php?cat=$echo[id]>$echo[nome] ($articoli[tot])</a><br />";
con questa:
echo "<a href=index.php?cat=".$echo['id'].">".$echo['nome']." (".$articoli['tot'].")</a><br />";
Ciao!
-
Eseguire una query per ogni categoria trovata nella prima query, è uno spreco di accessi MySQL e quindi di risorse.
Usa una join tra le due tabelle e tira fuori subito tutti i risultati con una sola query:
Codice PHP:
$query = "SELECT categorie.id AS id, categorie.nome AS nome, count(*) as tot FROM categorie, articoli WHERE categorie.id = articoli.categoria GROUP BY categorie.nome ORDER BY categorie.nome";
$result = mysql_query($query);
while ($echo = mysql_fetch_assoc($result))
{
echo "<a href=index.php?cat=" . $echo['id'] . ">" . $echo['nome'] . "(" . $echo['tot'] . ")</a><br />";
}
E come hai visto, non ho usato '*' nella SELECT, ma ho nominato soltanto quei campi che mi servono. Anche questa è buona usanza, e nel caso di join tra tabelle evita problemi se ci sono campi con lo stesso nome nelle diverse tabelle.
-
Ho provato le due varianti, ma stesso risultato di prima, il problema é che mi mostra solo un risultato, cioe il primo, nn so perche faccia cosi! qualche idea?
-
Sicuro che non ci sia un solo record nella tabella o che cmq soddisfi quelle clausole? :dotto:
Ciao!
-
ho 5 categorie nel db, nn so perceh faccia questo...
Codice PHP:
$query = "SELECT * FROM categorie ORDER BY nome LIMIT 0,5";
$result = mysql_query($query);
while ($echo = mysql_fetch_array($result)) {
$query = "SELECT count(*) AS tot FROM articoli WHERE categoria='".$echo['id']."'";
$result = mysql_query($query);
$articoli = mysql_fetch_array($result);
echo "<a href=index.php?cat=".$echo['id'].">".$echo['nome']." (".$articoli['tot'].")</a><br />";
}
Estraggo la categoria, conto quanti articoli ci sono per quella categoria e stampo: "categoria(numeroarticoli)"
Bho....:?:
-
Nel ciclo while stai sovrascrivendo le variabili $query e $result... di conseguenza, quando ritorni all'inizio del ciclo i riferimenti non saranno più quelli iniziali ma quelli hai modificato nel ciclo stesso.
Soluzione: usa nomi diversi per le variabili $query e $result, interne o esterne al ciclo...
Stammi bene...
-
Grazie mille, funziona...
-
Ma stai ancora usando un ciclo nella quale esegui una query per ogni categoria. Fai come vuoi, ma è una soluzione pessima. Uno spreco di risorse.