Visualizzazione risultati 1 fino 9 di 9

Discussione: Errore PHP non visibile

  1. #1
    Guest

    Predefinito 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...

  2. #2
    Guest

    Predefinito

    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!

  3. #3
    Guest

    Predefinito

    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.

  4. #4
    Guest

    Predefinito

    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?

  5. #5
    Guest

    Predefinito

    Sicuro che non ci sia un solo record nella tabella o che cmq soddisfi quelle clausole?


    Ciao!

  6. #6
    Guest

    Predefinito

    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....

  7. #7
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    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...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  8. #8
    Guest

    Predefinito

    Grazie mille, funziona...

  9. #9
    Guest

    Predefinito

    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.

Regole di scrittura

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