Visualizzazione risultati 1 fino 5 di 5

Discussione: ordinare un elenco

  1. #1
    pierinik non è connesso Utente
    Data registrazione
    26-03-2010
    Messaggi
    122

    Predefinito ordinare un elenco

    Buongiorno,
    in una tabella del mio db ho salvato un elenco con questo tipo di numerazione:
    1-1
    1-2
    2-1
    2-2 e così via...
    Sono una numerazione di camere e il relativo posto letto.
    Il problema è che voglio elencare tutti i dati inseriti in ordine, quindi partendo dal 1-1 in avanti.
    Nella query che ho fatto ho inserito ORDER BY camera_res, ma arrivato al numero 10-1 questo si posiziona dopo 1-2 e non dopo il 9-3.
    In questo modo:
    1-1
    1-2
    10-1
    10-2
    2-1
    2-2
    2-3
    3-1
    ecc.

    Quindi pensando che ho oltre 50 camere e più di 120 ospiti, mi si crea confusione se l'elenco non viene fatto come ci si aspetta.
    Io ho considerato il valore del campo come VARCHAR, perchè se lo formatto come INT, mi salva solo il numero della camera senza posto letto (cioè 1-1 diventa solo 1, 1-2 diventa anch'esso 1 e così via) per questo ho usato il parametro varchar.
    Come posso risolvere ? Grazie

  2. #2
    pierinik non è connesso Utente
    Data registrazione
    26-03-2010
    Messaggi
    122

    Predefinito

    Dunque, ho fatto questa modifica al codice:
    Codice PHP:
    $query="SELECT * FROM ...";
    $result = $mysqli->query($query);
    $row = $result->fetch_assoc();
    while(
    $row = $result->fetch_array())
    { echo
    '...
    In questo modo mi ordina correttamente l'elenco.

    Ho però ancora un paio di problemi che non so come risolvere.
    A) l'elenco parte dal numero 2, quindi con la seguente numerazione:
    2-1
    2-2
    3-1
    ...
    10-1
    10-2
    11-1
    11-2
    12-1
    ...
    Per ciò come si può vedere manca il numero 1-1 e 1-2 all'inizio.

    B) Inoltre mi segnala :
    Warning: mysqli_result::fetch_array(): Couldn't fetch mysqli_result in .... on line 75
    Nella riga 75 indicata c'è il ciclo while
    Codice PHP:
    while($row = $result->fetch_array())
    Come posso fare ?
    Grazie a tutti e tranquilli che per quest'anno non disturbo più !

  3. #3
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Codice PHP:
    $query = "SELECT * FROM ...";
    Se non specifichi un criterio di ordinamento i risultati non saranno necessariamente ordinati. Nella pratica, i risultati seguono generalmente l'ordine in cui sono stati inseriti o modificati nella tabella: basarsi su questo criterio è rischioso.

    Il problema è che voglio elencare tutti i dati inseriti in ordine, quindi partendo dal 1-1 in avanti.
    [...]
    Io ho considerato il valore del campo come VARCHAR
    L'ordinamento che stai descrivendo non esiste per il tipo di dato VARCHAR.

    Inoltre stai "barando" nel senso che stai usando una singola colonna di tipo VARCHAR per memorizzare due dati di tipo INT: sarebbe più semplice e naturale usare due colonne distinte per camera e posto_letto. In questo modo potresti ottenere l'ordinamento che ti interessa come:
    Codice:
    SELECT * FROM ... ORDER BY camera ASC, posto_letto ASC

    I suggerimenti che do più spesso:


  4. #4
    pierinik non è connesso Utente
    Data registrazione
    26-03-2010
    Messaggi
    122

    Predefinito

    OK. Grazie.
    Infatti ripensandoci in queste ore c'ero arrivato.
    Avevo capito che la mia soluzione non poteva funzionare.
    Mi conforta la tua conferma, per cui adesso separerò i due valori per considerarli ed elaborarli come numeri e non come caratteri.
    Grazie mille nuovamente e tantissimi auguri

  5. #5
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Auguri anche a te !

    I suggerimenti che do più spesso:


Regole di scrittura

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