Visualizzazione risultati 1 fino 16 di 16

Discussione: [PHP/MySQL] Contare quante volte un campo estratto esiste nella tabella

  1. #1
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito [PHP/MySQL] Contare quante volte un campo estratto esiste nella tabella

    Ehilà ciao,

    avendo una tabella di questo tipo


    x y z

    dato1 5 3
    dato2 1 2
    dato3 5 1
    dato3 5 3
    dato3 5 2
    dato2 1 1

    Avrei bisogno di estrarre tutti i dati dal campo x per poi contare quante volte il dato estratto è presente nel campo x...in poche parole il risultato finale dovrebbe essere:

    dato1 = presente 1 volta
    dato2 = presente 2 volte
    dato3 = presente 3 volte

    Il codice che utilizzo:
    Codice PHP:
    <?php include("includes/mysql.php");
    $sql = mysql_query("SELECT DISTINCT pagina FROM online");
    while(
    $a = mysql_fetch_array($sql)){
    $c = mysql_query("SELECT COUNT (*) FROM online WHERE pagina = '".$a[pagina]."'");
    $query = mysql_result($c,0);
    echo
    "<tr><td style=\"width:605px\">$a[pagina]</td><td>$query</td></tr>";
    }
    ?>
    L'errore:
    Warning: mysql_result(): supplied argument is not a valid MySQL result resource in C:\www12\user-online.php on line 34
    http://miki92.altervista.org/pagina-2.php

    Warning: mysql_result(): supplied argument is not a valid MySQL result resource in C:\www12\user-online.php on line 34
    http://miki92.altervista.org/pagina-3.php

    Warning: mysql_result(): supplied argument is not a valid MySQL result resource in C:\www12\user-online.php on line 34
    Come risolvo?
    Apprezzi l'aiuto? Offrimi un caffè!

  2. #2
    Guest

    Predefinito

    Sostituisci $a[pagina] con $a['pagina'] o $a[0].

  3. #3
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Spiacente, stesso errore.
    Apprezzi l'aiuto? Offrimi un caffè!

  4. #4
    Guest

    Predefinito

    Scusa, hai effettuato la connessione prima di inviare la query? Sul file query.php cosa c'è?

    Comunque alle brutte sostituisci
    $query = mysql_result($c,0);
    con
    $query = mysql_fetch_array($c);
    e usa $query[0] per il risultato.
    Ultima modifica di stoner : 23-11-2008 alle ore 18.20.45

  5. #5
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Se non c'era connessione di sicuro mi veniva restituito un differente errore no?

    E comunque dall'errore si può benissimo capire che la riga 34 è $query = mysql_result($c,0);
    Warning: mysql_result(): supplied argument is not a valid MySQL result resource in C:\www12\user-online.php on line 34
    http://miki92.altervista.org/pagina-3.php
    Apprezzi l'aiuto? Offrimi un caffè!

  6. #6
    Guest

    Predefinito

    Infatti ho modificato leggi la risposta.

  7. #7
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Ora mi dice:
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\www12\users.php on line 34
    http://miki92.altervista.org/pagina-2.php

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\www12\users.php on line 34
    http://miki92.altervista.org/pagina-3.php

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\www12\users.php on line 34
    Apprezzi l'aiuto? Offrimi un caffè!

  8. #8
    Guest

    Predefinito

    ma hai modificato $a[pagina] con $a['pagina'] nella query?

  9. #9
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Si certo.
    Apprezzi l'aiuto? Offrimi un caffè!

  10. #10
    Guest

    Predefinito

    Ok. Forse ho capito il perchè
    tra COUNT e (*) c'è uno spazio. Levalo.

  11. #11
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Mi dispiace il risultato non cambia.
    Apprezzi l'aiuto? Offrimi un caffè!

  12. #12
    Guest

    Predefinito

    -.-
    Vabè. A questo punto ti conviene fare con un'unica query
    Codice:
    SELECT DISTINCT pagina, COUNT(*) as Volte  FROM online
    GROUP BY pagina
    Ina parole povere avresti una cosa del tipo
    Codice PHP:
    <?php
    include("includes/mysql.php");
    $sql = mysql_query("SELECT DISTINCT pagina, COUNT(*) as Volte FROM online GROUP BY pagina");
    while(
    $a = mysql_fetch_array($sql))
    echo
    "<tr><td style=\"width:605px\">$a['pagina']</td><td>$a['Volte']</td></tr>";
    ?>

  13. #13
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Ok grazie stoner, farò cosi...comunque hai mancato le parentesi graffe al while nel codice:

    Codice PHP:
    <?php
    include("includes/mysql.php");
    $sql = mysql_query("SELECT DISTINCT pagina, COUNT(*) as Volte FROM online GROUP BY pagina");
    while(
    $a = mysql_fetch_array($sql)){
    echo
    "<tr><td style=\"width:605px\">$a['pagina']</td><td>$a['Volte']</td></tr>";
    }
    ?>
    Apprezzi l'aiuto? Offrimi un caffè!

  14. #14
    Guest

    Predefinito

    Non sono obbligatorie nel caso in cui hai una sola istruzione ;)

    Comunque ignoro ancora perchè il codice di prima non va asd.
    In ogni modo è meglio così, fai meno query, scrivi meno codice, ed è tutto più pulito.

  15. #15
    Guest

    Predefinito

    ma un mysql_num_rows() non potrebbe andare bene?

  16. #16
    Guest

    Predefinito

    mysql_num_rows restituisce il numero di righe che si ottengono in seguito ad una query.
    A lui serve che per ogni valore distinto di un campo presente nella tabella ritorni il numero di volte che è presente. Quindi, mysql_num_rows non serve a nulla, nel primo caso poteva essere usato in alternativa al count, ma comunque devi fare la query per usare mysql_num rows, lui faceva quindi n query, con n pari al numero di valori distinti (in questo caso del campo 'pagina').
    Nel secondo caso invece si fa una sola query che seleziona i valori distinti del campo e ne conta la cardinalittà.

Regole di scrittura

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