Visualizzazione risultati 1 fino 17 di 17

Discussione: [PHP-MySQL] Prelevare dal DB e stampare in ordine

  1. #1
    Guest

    Talking [PHP-MySQL] Prelevare dal DB e stampare in ordine

    Salve
    Come sempre richiedo il vostro aiuto
    Nel mio database ho una tabella dove vengono inseriti vari dati, il mio problema è: come posso fare per far si che questi dati vengano stampati in ordine di ID?
    Mi spiego meglio:
    Ho la mia tabella (rappresento solo l'ID):
    ID | ALTRE COSE |
    --------------------------
    1 |
    2 |
    3 |

    E così via, adesso vorrei fare in modo di prelevare il valore massimo dell'ID inserito per adesso e, tramite un contatore che decrementa, stampare gli altri valori.

    Però, siccome non voglio semplificarmi le cose ma ragionarci (anche perché scrivendo credo di aver capito), vorrei sapere, per adesso, solo il modo per stampare i dati del mio DB

    Thanks..

  2. #2
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,744

    Predefinito

    È più semplice e performante delegare il lavoro di ordinamento a MySQL stesso: è sufficiente apporre la clausola ORDER BY alla tua query, seguita dal nome della colonna che vuoi ordinare.

  3. #3
    Guest

    Predefinito

    Si, ma in questo modo non lo ordina in ordine crescente?

  4. #4
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,232

    Predefinito

    Citazione Originalmente inviato da mathis Visualizza messaggio
    Si, ma in questo modo non lo ordina in ordine crescente?
    Se lo vuoi in ordine decrescente, puoi aggiungere "DESC" dopo la "ORDER BY":
    Codice:
    SELECT campi FROM tabella WHERE ... ORDER BY campo DESC;
    Utilizzare un contatore PHP e stampara l'i-esimo elemento, non è il massimo, anche perché non è detto che ci siano tutti gli id nel database: se elimini una riga della tabella, lì rimane un "buco".

    Ciao!

  5. #5
    Guest

    Predefinito

    E quindi quale potrebbe essere una soluzione ottimale? :/

  6. #6
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,744

    Predefinito

    Quella che ti ha indicato Alemoppo: usare la clausola ORDER BY specificando l'ordinamento decrescente mediante la clausola DESC.

  7. #7
    Guest

    Predefinito

    Si, ma nel caso di un "buco" nella tabella? con una condizione comunque lo dovrei risolvere giusto?

  8. #8
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,744

    Predefinito

    Beh, sì, ma come ho già scritto è un giro un po' inutile...

  9. #9
    Guest

    Predefinito

    Scusate ma mi sono dedicato ad altre cose, quindi: una volta ordinato la mia tabella con:
    Codice PHP:
    $connect->query("SELECT ID,username,commento FROM tabella WHERE ... ORDER BY ID DESC;");
    Come dovrei fare per stampare i campi username e commento? So che è una domanda sciocca, ma cercando anche online non ho trovato una spiegazione "chiara"

  10. #10
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,232

  11. #11
    Guest

    Predefinito

    Mi andrò a vedere queste guide, ma non avresti qualche guida in italiano da consigliarmi?

  12. #12
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,232

    Predefinito

    Quella è la documentazione ufficiale.
    In ogni caso, anche soltanto gli esempi dovrebbero chiarire...

    Ciao!

  13. #13
    Guest

    Predefinito

    Ok, ho capito come funziona.. e sono riuscito a stampare l'ultimo valore inserito in questo modo:
    Codice PHP:
    $query=("SELECT username,commento FROM tabella ORDER BY ID DESC;");
    $risultato = mysqli_query($connect, $query);

    $array = mysqli_fetch_array($risultato, MYSQLI_ASSOC);
    printf ("USERNAME: %s \n COMMENTO: %s\n", $array["username"], $array["commento"]);
    Il problema adesso sta nello stampare ogni valore della tabella seguendo l'ID..
    stavo pensando ad un ciclo del tipo:
    Codice PHP:
    for($i=ID;$i>=0;$i--){...}
    I problemi sono due:
    1. Come assegnare il valore dell'ID (che nella tabella è stato dichiarato come intero) alla variabile contatore $i?
    2. Come stampare i valori: username e commento, corrispondenti all'ID selezionato?

    Sta notte ho fatto alcune prove ma di scarso successo.. devo ammettere che tutta la notte ho lavorato ad un progetto quindi sono abbastanza "confuso" comunque vi ringrazio
    Ultima modifica di mathis : 14-04-2013 alle ore 15.27.57

  14. #14
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,232

    Predefinito

    Una cosa del genere:

    Codice PHP:
    <?php
    $query
    ='SELECT username,commento FROM tabella ORDER BY ID DESC;';
    $risultato = mysqli_query($connect, $query);
    $totale = mysqli_num_rows($risultato);
    while(
    $array = mysqli_fetch_array($risultato, MYSQLI_ASSOC))
    printf ("%d) USERNAME: %s \n COMMENTO: %s\n",$totale--, $array["username"], $array["commento"]);
    ?>
    p.s: in php è più comoda echo invece della printf.

    Ciao!

  15. #15
    Guest

    Predefinito

    Scusa, credo di non aver capito bene... potresti spiegarmi meglio come funziona il codice?

  16. #16
    L'avatar di alemoppo
    alemoppo è connesso ora Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,232

    Predefinito

    con mysqli_num_rows() ottieni il numero di righe prelevate dal database.

    mysqli_fetch_array() ad ogni "invocazione" restituisce un array rappresentante gli elementi della riga i-esima. Quando le righe son finite, ritorna NULL, quindi è una condizione falsa per il while ed esce.

    Ciao!

  17. #17
    Guest

    Predefinito

    Grazie mille Come sempre di grande aiuto...

Regole di scrittura

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