Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Ordinare Array scegliendo il valore

    salve, ho questo array

    Codice PHP:
    $elenco[] = array('nome' => 'matteo''messaggi' => 2);
    $elenco[] = array('nome' => 'luigi''messaggi' => 6);
    $elenco[] = array('nome' => 'alberto''messaggi' => 5);
    $elenco[] = array('nome' => 'piero''messaggi' => 1); 
    che poi mostro con

    Codice PHP:
    foreach($elenco as $value) {
    echo 
    "".$value['nome'].": ".$value['messaggi']."
    \n"
    ;

    non riesco ad ordinarli per 'messaggi'. ho risolto invertendo le chiavi e ordinando con rsort($elenco):

    Codice PHP:
    $elenco[] = array('messaggi' => 2'nome' => 'matteo');
    $elenco[] = array('messaggi' => 6'nome' => 'luigi');
    $elenco[] = array('messaggi' => 5'nome' => 'alberto');
    $elenco[] = array('messaggi' => 1'nome' => 'piero'); 

    come faccio a decidere con rsort($elenco) cosa ordinare?
    in genere mi ordina il primo valore (in modo decrescente voluto da me), ovvero i messaggi (e infatti ho ordinato invertendo l'array), ma se avessi voluto ordinare per il valore 'nome'??


    grazie mille

  2. #2
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    ho scritto una fesseria ^_^

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  3. #3
    spiego meglio, tutto questo meccanismo perché ho due tabelle MySQL (a grandi linee):

    codice:
    UTENTI
    ID_UTENTE
    USERNAME
    e

    codice:
    COMMENTI
    ID_COMMENTO
    ID_UTENTE
    TESTO
    e volevo mostrare
    USERNAME: num_commenti
    ordinati per num_commenti per sapere quale utente ha scritto più commenti.
    sicuramente c'è la soluzione direttamente in MySQL, che però mi sfugge

  4. #4
    codice:
    SELECT username, COUNT(*) AS numero
    FROM utenti LEFT JOIN commenti
    ON utenti.id_utente = commenti.id_utente
    GROUP BY commenti.id_utente
    ORDER BY numero DESC

  5. #5
    quindi:
    Codice PHP:
    $query "SELECT username, COUNT(*) AS numero
    FROM utenti LEFT JOIN commenti
    ON utenti.id_utente = commenti.id_utente
    GROUP BY commenti.id_utente
    ORDER BY numero DESC"
    ;
    $result mysql_query($query$db);

    while (
    $row mysql_fetch_array($result)) {
    echo 
    "$row[username]$row[numero]
    "
    ;

    funziona!!!!!!
    GRAZIE

  6. #6
    no, in questa maniera mi restituisce il primo risultato sbagliato, tutti gli altri giusti..
    tipo
    nome utente: 148
    altro utente: 39
    un altro: 35


    solo che il primo ne ha scritti 0, gli altri sono giusti

  7. #7
    è bastato cambiare
    Codice PHP:
    GROUP BY commenti.id_utente 
    in
    Codice PHP:
    GROUP BY utenti.id_utente 

  8. #8
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    Originariamente inviato da ..:: T€O ::..
    spiego meglio, tutto questo meccanismo perché ho due tabelle MySQL (a grandi linee):

    codice:
    UTENTI
    ID_UTENTE
    USERNAME
    e

    codice:
    COMMENTI
    ID_COMMENTO
    ID_UTENTE
    TESTO
    e volevo mostrare
    USERNAME: num_commenti
    ordinati per num_commenti per sapere quale utente ha scritto più commenti.
    sicuramente c'è la soluzione direttamente in MySQL, che però mi sfugge
    errore numero 2! scusami ti sto inzozzando il post!

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

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.