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

    ORDER BY data (dove il mese deve essere numerico)

    Salve a tutti

    Devo interagire con un db in cui i campi sono data, mese e anno.
    Il mese è alfabetico ma io devo ordinare la select cronologicamente, quindi il campo mese deve avere necessariamente i mesi (Gennaio, Febbraio..) in formato numerico (01,02..)

    Ho provato a fare un array per trasformarli in numeri e funziona ma poi non so come collegare le due cose!

    Questa è la select per i mesi che trasforma i mesi in numero:
    Codice PHP:
    $trova_mesi"SELECT * FROM Modulo_DataDyn_Entita_2";
    $result mysql_query($trova_mesi);
    $num_righe mysql_num_rows($result);
    if (
    $num_righe<1){     echo "[i]no info[/i]
    "
    ;     }
    else{ 
    while (
    $riga mysql_fetch_assoc($result)) { 
    $mese=$riga["Field30"];  
    $data=$riga["Field31"];  
    $anno=$riga["Field32"];   
    $arr_mesi = array('Gennaio' => '01',  'Febbraio' => '02',  'Marzo' => '03',  'Aprile' => '04',  'Maggio' => '05',  'Giugno' => '06',  'Luglio' => '07',  'Agosto' => '08',  'Settembre' => '09',  'Ottobre' => '10',  'Novembre' => '11',  'Dicembre' => '12'); 
    $num_mese $arr_mesi[$mese];  
         

    echo 
    "$giorno $data $num_mese
    "

    ...ma io devo ordinare per data la query che mi scrive le aperture (si tratta di aperture di un locale)
    Codice PHP:
    $aperture_straordinarie"SELECT * FROM Modulo_DataDyn_Entita_2     
    WHERE Field29 = 'Domenica'"
    ;    
    $result mysql_query$aperture_straordinarie);     
    $num_righe mysql_num_rows($result);      
    if (
    $num_righe<1){     echo "[i]aperture straordinarie non previste[/i]
    "
    ;     }
    else{ 
    while (
    $riga mysql_fetch_assoc($result)) { 
    $giorno=$riga["Field29"];  
    $mese=$riga["Field30"];  
    $data=$riga["Field31"];   //data intesa come numero del giorno
    $anno=$riga["Field32"];  
    $dalle=$riga["Field33"];  
    $alle=$riga["Field34"];  

    echo 
    "<div class=\"data\">$giorno $data $mese</div> 
    <div class=\"ora\">dalle ore 
    $dalle:00 alle ore $alle:00</div>
    <br style=\"clear:both\" />"
    ;     
    //while     
    // else 
    Come posso fare per ordinare la select $aperture_straordinarie per data (creata da anno, mese, data)?

    So di dover inserire un ORDER BY ma non riesco a capire come legare insieme il numero del mese alla selezione ordinata..

    Grazie

  2. #2
    Perchè non ristruttri la tabella e crei un unico campo DATE?

  3. #3
    Purtroppo non posso modificare più di tanto il db... però ho risolto in un altro modo, mettendo i mesi in numero e poi associando il numero al nome del mese tramite array:

    $arr_mesi = array( '1' => 'Gennaio', '2' => 'Febbraio', '3' => 'Marzo',
    '4' => 'Aprile', '5' => 'Maggio', '6' => 'Giugno', '7' => 'Luglio',
    '8' => 'Agosto', '9' => 'Settembre', '10' => 'Ottobre',
    '11' => 'Novembre', '12' => 'Dicembre');

    $aperture_straordinarie= "SELECT * FROM Modulo_DataDyn_Entita_2
    WHERE Field29 = 'Domenica' ORDER BY Field32,Field30,Field31"; //aaaa - mm - gg

    poi impostando: $mese=$riga["Field30"];
    e .. $mm = $arr_mesi[$mese];

    Grazie dell'attenzione

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.