Visualizzazione risultati 1 fino 14 di 14

Discussione: Ordinare per lettera i dati di un db

  1. #1
    Guest

    Predefinito Ordinare per lettera i dati di un db

    Scusate la poca chiarezza nel titolo, ma non avrei saputo fare di meglio.

    Vorrei fare uno script che mi mostri una lettera e sotto tutti i campi ordinati prelevati da un db.
    Questo per tutte le lettere


    ES:

    A

    Alfredo
    Alvise

    B

    Bernardo
    Bianca

    ecc..

    come posso fare?

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Cosa c'è di diverso da questa situazione?

    http://forum.it.altervista.org/php-m...liniziale.html

  3. #3
    Guest

    Predefinito

    Quindi tu dici di lanciare una query per ogni lettera dell'afabeto? Magari con un for e un'array e poi stampare solo le lettere che hanno un risultato?

  4. #4
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    Fai un order by...
    LE letere poi le metti da codice.
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

  5. #5
    Guest

    Predefinito

    Si, ma come faccio a sapere dove inserire una lettera? Dopo l'order by mi mostrerà tipo


    caio
    sempronio
    tizo

    come faccio a metter la c prima di caio, s prima di sempronio e t prima di tizio?

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

    Predefinito

    A prescindere da mysql, se hai un array di stringhe ad es:

    $array[] (
    0 => "caio"
    1 => "sempronio"
    2 => "tizio"
    )

    puoi fare:

    Codice PHP:
    $lettera = 0;

    foreach (
    $array as $stringa)
    {
    if(
    substr($stringa,0,1) > $lettera)
    {
    $lettera = substr($stringa,0,1);
    echo
    $lettera.'<br>';
    }
    echo
    $stringa.'<br>';
    }

    ...non l'ho provato e non so se funziona...l'ho scritto direttamente qui sul forum ^^


    Ciao!

  7. #7
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    Citazione Originalmente inviato da enkantar Visualizza messaggio
    Quindi tu dici di lanciare una query per ogni lettera dell'afabeto? Magari con un for e un'array e poi stampare solo le lettere che hanno un risultato?
    No, sei tu che alla fine di quel thread dici di aver risolto in quel modo, non confondiamoci.

    Citazione Originalmente inviato da enkantar Visualizza messaggio
    Si, ma come faccio a sapere dove inserire una lettera? Dopo l'order by mi mostrerà tipo

    caio
    sempronio
    tizo

    come faccio a metter la c prima di caio, s prima di sempronio e t prima di tizio?
    sort? ksort?

  8. #8
    Guest

    Predefinito

    Si, ma con sort o ksort come faccio ad assegnare ad ogni parola dell'array la propria iniziale?

  9. #9
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Puoi fare in questo modo:
    Codice PHP:
    <?php
    $nomi
    = array('Tizio', 'Caio', 'Cesare', 'Aldo', 'Alfredo', 'Sempronio'); // nomi estratti dal database
    sort($nomi);

    $i = strtoupper($nomi[0]{0}); // iniziale

    echo '<h2>', $i, '</h1><ul>';

    foreach(
    $nomi as $nome) {
    if(
    $i != strtoupper($nome{0})) {
    $i = strtoupper($nome{0});
    echo
    '</ul><h2>', $i, '</h2><ul>';
    }

    echo
    '<li>', $nome, '</li>';
    }

    echo
    '</ul>';
    ?>
    Se vuoi vedere il risultato dello script: link
    Ultima modifica di javascripter : 13-09-2010 alle ore 11.09.52

  10. #10
    Guest

    Predefinito

    Allora, ho un pò adattato il tuo codice alle mie esigenze, ma mi dà un problema:

    mi mostra esempio:

    A

    Aldo
    Aldo

    A

    Alberto
    Alberto

    B

    Bianca
    Bianca

    Questo è il codice:

    Codice PHP:
    $query = "SELECT DISTINCT (category) FROM immagini ORDER BY category ASC";
    $result = mysql_query($query) or die ("Errore");
    while (
    $nomi = mysql_fetch_array($result)) {
    sort($nomi);
    $i = strtoupper($nomi[0]{0}); // iniziale
    echo '<h2>', $i, '</h1><ul>';

    foreach(
    $nomi as $nome) {

    if(
    $i != strtoupper($nome{0})) {
    $i = strtoupper($nome{0});
    echo
    '</ul><h2>', $i, '</h2><ul>';
    }

    echo
    '<li>', $nome, '</li>';

    }

    echo
    '</ul>';
    }

  11. #11
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Ma i nomi dovresti prima salvarli in un array:
    Codice PHP:
    $query = "SELECT DISTINCT (category) FROM immagini ORDER BY category ASC";
    $result = mysql_query($query) or die ("Errore");
    $nomi = array();

    while (
    $r = mysql_fetch_array($result)) {
    $nomi[] = $r[0];
    }

    sort($nomi);

    $i = strtoupper($nomi[0]{0}); // iniziale

    echo '<h2>', $i, '</h1><ul>';

    foreach(
    $nomi as $nome) {
    if(
    $i != strtoupper($nome{0})) {
    $i = strtoupper($nome{0});
    echo
    '</ul><h2>', $i, '</h2><ul>';
    }

    echo
    '<li>', $nome, '</li>';
    }

    echo
    '</ul>';

  12. #12
    Guest

    Predefinito

    Perfetto tranne una cosa: ho perso l'ordine alfabetico: mi mostra le lettere A, T, S, C.

  13. #13
    L'avatar di Xsescott
    Xsescott non è connesso AlterGuru
    Data registrazione
    08-02-2004
    Messaggi
    1,413

    Predefinito

    Scusate,
    order by category restituisce giò un array ordinato a quanto ne so io

    te le puoi raccogliere con un:


    Codice PHP:
    for ($index = 0,$r = mysql_fetch_array($result); count($r)>0;$r = mysql_fetch_array($result),$index++) {
    $nomi[index] = $r['category'];
    }
    e ci fai quello che vuoi...
    "Quando il potere dell'amore supererà l'amore per il potere il mondo conoscerà la pace" Jimmy Hendrix


    [ Richiesta: http://www.unibologna.eu/ ] --> [Risposta: http://www.magazine.unibo.it/Magazin...al_Portale.htm Morale] -->[ http://www.anti-phishing.it/news/art...s.13062007.php ]
    consoliwebsite.altervista.org

  14. #14
    Guest

    Predefinito

    Non ho capito...

Regole di scrittura

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