Visualizzazione risultati 1 fino 4 di 4

Discussione: Mostrare solo il primo risultato della query

  1. #1
    Guest

    Unhappy Mostrare solo il primo risultato della query

    Dunque, devo mostrare solo la "prossima apertura straordinaria" di un negozio, quindi solo una data che deve avere queste come carattaristiche:
    - deve essere una domenica oppure nel db deve essere definita come apertura straordinaria
    - la data deve essere la più piccola, cioè la prossima (ORDER BY)
    - la data deve essere anche maggiore di quella attuale (ossia deve essere una data futura rispetto ad oggi. Per questo ho usato la differenza tra date)


    Come vedete qui sotto la query è corretta ma mi fa l'echo di tutti i risultati idonei, non solo del primo.
    Se metto la clausola LIMIT 1 non mostra niente (va in conflitto con l'if relativo alla differenza tra date, credo); se invece porto l'if della differenza ed echo fuori dal ciclo while stampa solo una data ma in ordine opposto: infine cambiando a questo punto ORDER ASC in ORDER DESC non mostra nessun record!!

    Come posso fare?


    Questa la mia query:
    Codice PHP:
    <?php

    //quando è domenica [weekday(Field71) = 6]
    //oppure quando è apertura straordinaria [Field36 = 'si']

    $aperture_straordinarie= "
    SELECT *,
    year(Field71) as anno,
    month(Field71) as mese,
    weekday(Field71) as giorno,
    dayofmonth(Field71) as gg

    FROM
    Modulo_DataDyn_Entita_2

    WHERE
    (weekday(Field71) = 6 OR (Field36 = 'si'))

    ORDER BY Field71 ASC"
    ;

    $result = mysql_query($aperture_straordinarie);
    $num_righe = mysql_num_rows($result);

    if (
    $num_righe<1){
    echo
    "<i>Aperture straordinarie non previste</i><br />";
    }else{

    while (
    $riga = mysql_fetch_assoc($result)) {

    $anno=$riga["anno"];
    $mese=$riga["mese"];
    $mm=$arr_mesi[$mese];
    $gg=$riga["gg"];
    $giorno=$riga["giorno"];
    $giorno_settimana=$arr_giorni[$giorno];
    $dalle=$riga["Field33"];
    $alle=$riga["Field34"];


    $differenza =(strtotime("$anno/$mese/$gg") - strtotime(date("Y/m/d")))/(86400);

    if (
    $differenza > 0){
    echo
    "<div class=\"data\">$giorno_settimana $gg $mm</div> <div class=\"ora\">dalle $dalle:00 alle $alle:00</div><br style=\"clear:both\" />";
    }


    }
    //while
    } // else



    ?>
    grazie
    Ultima modifica di ilaextras : 07-09-2009 alle ore 15.19.36

  2. #2
    Guest

    Predefinito

    se fai il while mi sembra logico...
    scorre tutti i risultati della query.
    Ultima modifica di fabio29 : 08-09-2009 alle ore 18.36.12

  3. #3
    Guest

    Predefinito

    ciao fabio29!
    grazie ma guarda...alla fine ho risolto inserendo in un array tutte le date nell'ordine corretto e facendo l'echo solo della data con indice numerico pari a 0, cioè la prima!

  4. #4
    Guest

    Predefinito

    Ma se alla fine della query metti LIMIT 0,1 invece di tutto il passaggio che hai fatto tu non fai prima? Ciao.

Regole di scrittura

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