Visualizzazione dei risultati da 1 a 10 su 10

Discussione: aiuto query

  1. #1

    aiuto query

    Salve a tutti, chi mi può aiutare a sviluppare questa query?
    Ho un database di articoli così formato:
    Titolo
    Data inizio (in formato DATE 0000-00-00)
    Data fine (in formato DATE 0000-00-00)

    Devo creare in automatico uno script che mi tiri fuori gli eventi della settimana:
    Lo script dovrà:
    1) Scrivere in automatico la settimana corrente esempio: "EVENTI DAL 5 AL 11 FEBBRAIO"
    2) estrapolare dal database tutti gli articoli che si trovano in quella settimana.

    qualcuno ha idea di come si sviluppa?

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Hai visto il mio pvt?

    Prova così

    codice:
    select *
    from tabella where campo_data
    between CURDATE() - INTERVAL WEEKDAY(CURDATE()) DAY 
    and CURDATE() + INTERVAL 6 - WEEKDAY(CURDATE()) DAY
    e se ti servono le date estreme della settimana per la scritta eventi dal ... aggiungi i due campi di sopra alla query e poi li estrai

    codice:
    select *,
    CURDATE() - INTERVAL WEEKDAY(CURDATE()) DAY as inizio, 
    CURDATE() + INTERVAL 6 - WEEKDAY(CURDATE()) DAY as fine
    from tabella where campo_data
    between CURDATE() - INTERVAL WEEKDAY(CURDATE()) DAY 
    and CURDATE() + INTERVAL 6 - WEEKDAY(CURDATE()) DAY

  3. #3
    ciao Nicola
    ho visto il tuo messaggio, ma ho provato e non mi funziona.
    Non ho capito molto di quello che mi hai appena scritto, proviamo a modificare il blocco che attualmente ho e vediamo se inizia a funzionare? Che dici?

    1 PUNTO : Date estreme della settimana (script attuale non corretto)
    Codice PHP:
    <?php
    function eventi() {
    // Restituisce inizio (LUN) e fine (DOM) della settimana corrente e di quella successiva
    $mesi = array(1=>'Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno',
                  
    'Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre');

    $oggi date('Y-n-d');
    list(
    $anno,$mese,$giorno) = explode("-",$oggi);
    $numero_lunedi $giorno date('w') + 1;
    $questo_lunedi $anno.'-'.$mese.'-'.$numero_lunedi;
    $questa_domenica date('Y-n-d',strtotime("$questo_lunedi + 6 days"));
    $prossimo_lunedi date('Y-n-d',strtotime("$questo_lunedi + 1 week"));
    $prossima_domenica date('Y-n-d',strtotime("$questa_domenica + 1 week"));
    list(
    $anno_ql,$mese_ql,$giorno_ql) = explode('-',$questo_lunedi);
    list(
    $anno_pl,$mese_pl,$giorno_pl) = explode('-',$prossimo_lunedi);
    list(
    $anno_qd,$mese_qd,$giorno_qd) = explode('-',$questa_domenica);
    list(
    $anno_pd,$mese_pd,$giorno_pd) = explode('-',$prossima_domenica);

    $questa_settimana = ($mese_ql == $mese_qd) ? "Eventi dal $giorno_ql al $giorno_qd $mesi[$mese_ql] $anno_qd"
                                               
    "Eventi dal $giorno_ql $mesi[$mese_ql] al $giorno_qd
                                                     
    $mesi[$mese_qd] $anno_qd";

    $prossima_settimana = ($mese_pl == $mese_pd) ? "Eventi dal $giorno_pl al $giorno_pd $mesi[$mese_pl] $anno_pd"
                                               
    "Eventi dal $giorno_pl $mesi[$mese_pl] al $giorno_pd
                                                     
    $mesi[$mese_pd] $anno_pd";

    return array(
    $questa_settimana,$prossima_settimana);
    }

    list(
    $questa,$prossima) = eventi();
    echo 
    "<h2>$questa</h2>"
    ?>

    2 PUNTO : QUERY PER ESTRAPOLARE GLI EVENTI
    (cosa strana... lunedì non mi faceva vedere gli eventi di domenica, oggi sì... ????)

    Codice PHP:
    SELECT FROM $table WHERE curdate() BETWEEN data_inizio AND data_fine ORDER BY categoria 

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Lascia perdere la funzione php che è sicuramente "bugata" e da rivedere. La query cos'ha che non va?
    Scrivi qualche esempio di record con le date di inizio e di fine, ciò che vuoi ottenere e i casi in cui hai avuto dei comportamenti anomali.

  5. #5
    A questo punto aspetto lunedì per vedere se mi fa' vedere gli appuntamenti di domenica, poi ti scrivo!
    Riusciamo intanto a sistemare il 1° punto, cioè le date estreme della settimana?
    Se riesci a postarmi la query completa mi faresti un gran piacere!

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Originariamente inviato da scalcodesign
    A questo punto aspetto lunedì per vedere se mi fa' vedere gli appuntamenti di domenica, poi ti scrivo!
    Riusciamo intanto a sistemare il 1° punto, cioè le date estreme della settimana?
    Se riesci a postarmi la query completa mi faresti un gran piacere!
    Non puoi cambiare la data di sistema senza aspettare a lunedì per fare tutte le prove che vuoi?

    Prova questa query per gli estremi della settimana corrente, è la stessa che ti ho già scritto.

    SELECT
    CURDATE() - INTERVAL WEEKDAY(CURDATE()) DAY AS lunedi,
    CURDATE() + INTERVAL 6 - WEEKDAY(CURDATE()) DAY AS domenica

    Guarda anche la funzione di piero.mac per gli estremi della settimana.

    http://forum.html.it/forum/showthrea...light=luned%EC

  7. #7
    grazie dello script
    ma non ho capito cosa segue dopo

    Codice PHP:
    SELECT
    CURDATE
    () - INTERVAL WEEKDAY(CURDATE()) DAY AS lunedi,
    CURDATE() + INTERVAL 6 WEEKDAY(CURDATE()) DAY AS domenica 
    come faccio a dire "Settimana dal 1 al 7 febbraio" ??
    e per la settimana successiva? (dal 7 al 14 febbraio) ??

    Riesci a mandarmelo completo?

    Ho provato la pillola di piero.mac
    mi esce questo a me:


    codice:
    Il giorno Venerd“ 03-02-2007 (OGGI CHE E' GIUSTO) compreso nella settimana 48-.
    Inizio settimana Luned“ 29/11/1999, fine settimana Domenica 05/12/1999 (TOTALMENTE SBAGLIATO)

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Passa la data odierna come argomento alla funzione di Piero.

    $data = date('d/m/Y');
    $day = FirstLastWeek($data);

  9. #9
    cavolo, avevo messo le barrette - invece di / per quello non funzionava!
    grazie della segnalazione, sembra funzionare!
    Ti faccio sapere appena trovo un'anomalia sull'altro script!

  10. #10
    Ho trovato l'anomalia del primo script.
    Praticamente se oggi (lunedì) faccio questa query:

    Codice PHP:
    SELECT FROM $table WHERE curdate() BETWEEN data_inizio AND data_fine ORDER BY categoria 
    non mi estrapola i record che hanno data_inizio e data_fine uguali.

    Esempio 1 ( data_inizio=2007-02-11 | data_fine 2007-02-11 )
    Esempio 2 ( data_inizio=2007-02-05 | data_fine 2007-02-05 )
    Questi record non compaiono nella query.

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.