Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    14

    Aiuto selezione prossimo evento in programma

    Salve signori è da un po' di tempo che sto sbattendo ma non riesco proprio a trovare la soluzione...
    Vi pongo il mio quesito:

    Sto creando un sito dove in un determinato spaziettino della pagina mi elenca di settimana in settimana la partita che la squadra proprietaria del sito effettuerà.

    il funzionamento è questo:

    inserisco una partita con data: gg 15, mm 06, aaaa, 2010

    devo far si che questa partita venga visualizzata per l'intera settimana

    quindi mi appresto ad effettuare una select utilizzando il between e fin quì tutt'ok

    Il problema lo riscontro quando devo effettuare la selezione di un range temporale tra:
    es: 28/06/2010 e 04/07/2010

    ovviamente non riesce a fare il between in quando il secondo numero al quale viene effettuato il controllo è inferiore rispetto al primo.

    Vi posto di seguito com'è strutturato il database e la porzione di codice che ho creato.

    Nell'esempio che vi posto il programma funziona, come detto in precedenza il programma non funziona quando deve selezionare un valore compreso da un numero MAGGIORE rispetto al secondo numero MINORE.

    giornata gg mm aaaa squadrauno squadradue fotosquadra1 fotosquadra2
    1 26 06 2010 Maruggio Calcio Gioventu Martina addsponsor.gif addteam.gif

    <?
    ############################ connessione database ############################
    $connessionedb=mysql_connect($host,$usernamedb,$pa ssworddb); #Questa funzione effettua la connessione al database mysql utilizzando i parametri username($usernamedb), password($passworddb), e localhost($host) presi da dentro al config.inc.php.
    if(!$connessionedb){echo "Errore nella connessione del database";exit;}
    $database=mysql_select_db($db);

    $d = 6; //intervallo in giorni
    $t = explode( '/', $data );
    $t = mktime( 1, 1, 1, $t[1], $t[0], $t[2] );
    $t = $t + $d * 60 * 60 * 24;
    $somma=date('d', $t );
    $mese2=date('m', $t );

    ##################### effettuo il controllo dell'esistenza dei dati inseriti dall'utente ########
    $controllo= mysql_query("SELECT * FROM $tbgiornate WHERE gg between '$giorno' AND '$somma' AND mm between '$mese' AND '$mese2' AND aaaa='$anno' AND (squadrauno='$nomeSquadra' OR squadradue='$nomeSquadra')");
    while($righe=mysql_fetch_array($controllo))
    {
    $idincontro=$righe["id"];
    $squadraunoincontro=$righe["squadrauno"];
    $squadradueincontro=$righe["squadradue"];
    $hhincontro=$righe["hh"];
    $minincontro=$righe["min"];
    $fotosquadra1=$righe["fotosquadra1"];
    $fotosquadra2=$righe["fotosquadra2"];


    echo '<table width="100%" height="91" border="0" cellpadding="0" cellspacing="0">
    <tr>
    <th height="11" scope="col"></th>
    </tr>
    <tr>
    <td height="65" align="center" valign="middle">[img]logosquadre/'.$fotosquadra1.'[/img]</td>
    </tr>
    <tr>
    <td height="15" align="center" valign="middle" class="Stile1">'.$squadraunoincontro.'</td>
    </tr>
    </table></th>
    <td width="40" height="111" align="center" scope="col">[img]immagini/maruggiocalcio_123.gif[/img]</td>
    <th width="36%" align="center" scope="col"> <table width="100%" height="91" border="0" cellpadding="0" cellspacing="0">
    <tr>
    <th height="11" scope="col"></th>
    </tr>
    <tr>
    <td height="65" align="center" valign="middle">[img]logosquadre/'.$fotosquadra2.'[/img]</td>
    </tr>
    <tr>
    <td height="15" align="center" valign="middle" class="Stile1">'.$squadradueincontro.'</td>
    </tr>
    </table></th> </tr>
    </table>';

    }
    mysql_close();

    ?>

  2. #2
    ti rispondo io che non sono un esperto ma che in passato ho fatto il tuo stesso errore...
    secondo me sbagli a salvare la data in quel formato.

    salva il risultato della funzione time() in un normalissimo campo int
    in tal caso fare la query con il between è molto più semplice

    e in fase di estrazione potrai convertire il time() salvato con la funzione date()

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    14
    $d = 6; //intervallo in giorni
    $t = explode( '/', $data );
    $t = mktime( 1, 1, 1, $t[1], $t[0], $t[2] );
    $t = $t + $d * 60 * 60 * 24;
    $somma=date('d', $t );
    $mese2=date('m', $t );

    questa funzione non fa altro che estrarre la data attuale e sommare 6 e permettermi di avere la corretta numerazione dei gg ovvero per es: 27+6 = 02 del nuovo mese e non 33 come una semplice somma questo mi permetterà di effettuare l'estrazione tramite la select tra un range di di numeri... numeri che indicano il giorno in cui la partita verrà disputata..

    ieri nel postare il codice ho dimenticato di inserire questo:

    $giorno=(date('d'));
    $mese=(date('m'));
    $anno=(date('o'));
    $data="$giorno/$mese/$anno";

    io penso che l'errore stia proprio nella query sql oppure nella modalità di lettura del between cioè che non riesce a selezionare i valori compresi tra un numero maggiore e un numero minore..
    $controllo= mysql_query("SELECT * FROM $tbgiornate WHERE gg between '$giorno' AND '$somma' AND mm='$mese' AND aaaa='$anno' AND (squadrauno='$nomeSquadra' OR squadradue='$nomeSquadra')");
    while($righe=mysql_fetch_array($controllo))
    {
    $idincontro=$righe["id"];
    $squadraunoincontro=$righe["squadrauno"];
    $squadradueincontro=$righe["squadradue"];
    $hhincontro=$righe["hh"];
    $minincontro=$righe["min"];
    $fotosquadra1=$righe["fotosquadra1"];
    $fotosquadra2=$righe["fotosquadra2"];

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    14
    PENSO di aver risolto in questo modo:


    <?
    ############################ connessione database ############################
    $connessionedb=mysql_connect($host,$usernamedb,$pa ssworddb); #Questa funzione effettua la connessione al database mysql utilizzando i parametri username($usernamedb), password($passworddb), e localhost($host) presi da dentro al config.inc.php.
    if(!$connessionedb){echo "Errore nella connessione del database";exit;}
    $database=mysql_select_db($db);

    $d = 6; //intervallo in giorni
    $t = explode( '/', $data );
    $t = mktime( 1, 1, 1, $t[1], $t[0], $t[2] );
    $t = $t + $d * 60 * 60 * 24;
    $somma=date('d', $t );
    $mese2=date('m', $t );
    if($somma < $giorno){
    $controllo= mysql_query("SELECT * FROM $tbgiornate WHERE gg between '$somma' AND '09' AND mm='$mese2' AND aaaa='$anno' AND (squadrauno='$nomeSquadra' OR squadradue='$nomeSquadra')");
    while($righe=mysql_fetch_array($controllo))
    {
    $idincontro=$righe["id"];
    $squadraunoincontro=$righe["squadrauno"];
    $squadradueincontro=$righe["squadradue"];
    $hhincontro=$righe["hh"];
    $minincontro=$righe["min"];
    $fotosquadra1=$righe["fotosquadra1"];
    $fotosquadra2=$righe["fotosquadra2"];


    echo '<table width="100%" height="91" border="0" cellpadding="0" cellspacing="0">
    <tr>
    <th height="11" scope="col"></th>
    </tr>
    <tr>
    <td height="65" align="center" valign="middle">[img]logosquadre/'.$fotosquadra1.'[/img]</td>
    </tr>
    <tr>
    <td height="15" align="center" valign="middle" class="Stile1">'.$squadraunoincontro.'</td>
    </tr>
    </table></th>
    <td width="40" height="111" align="center" scope="col">[img]immagini/maruggiocalcio_123.gif[/img]</td>
    <th width="36%" align="center" scope="col"> <table width="100%" height="91" border="0" cellpadding="0" cellspacing="0">
    <tr>
    <th height="11" scope="col"></th>
    </tr>
    <tr>
    <td height="65" align="center" valign="middle">[img]logosquadre/'.$fotosquadra2.'[/img]</td>
    </tr>
    <tr>
    <td height="15" align="center" valign="middle" class="Stile1">'.$squadradueincontro.'</td>
    </tr>
    </table></th> </tr>
    </table>';

    }}
    else{
    ##################### effettuo il controllo dell'esistenza dei dati inseriti dall'utente ########
    $controllo= mysql_query("SELECT * FROM $tbgiornate WHERE gg between '$giorno' AND '$somma' AND mm='$mese' AND aaaa='$anno' AND (squadrauno='$nomeSquadra' OR squadradue='$nomeSquadra')");
    while($righe=mysql_fetch_array($controllo))
    {
    $idincontro=$righe["id"];
    $squadraunoincontro=$righe["squadrauno"];
    $squadradueincontro=$righe["squadradue"];
    $hhincontro=$righe["hh"];
    $minincontro=$righe["min"];
    $fotosquadra1=$righe["fotosquadra1"];
    $fotosquadra2=$righe["fotosquadra2"];


    echo '<table width="100%" height="91" border="0" cellpadding="0" cellspacing="0">
    <tr>
    <th height="11" scope="col"></th>
    </tr>
    <tr>
    <td height="65" align="center" valign="middle">[img]logosquadre/'.$fotosquadra1.'[/img]</td>
    </tr>
    <tr>
    <td height="15" align="center" valign="middle" class="Stile1">'.$squadraunoincontro.'</td>
    </tr>
    </table></th>
    <td width="40" height="111" align="center" scope="col">[img]immagini/maruggiocalcio_123.gif[/img]</td>
    <th width="36%" align="center" scope="col"> <table width="100%" height="91" border="0" cellpadding="0" cellspacing="0">
    <tr>
    <th height="11" scope="col"></th>
    </tr>
    <tr>
    <td height="65" align="center" valign="middle">[img]logosquadre/'.$fotosquadra2.'[/img]</td>
    </tr>
    <tr>
    <td height="15" align="center" valign="middle" class="Stile1">'.$squadradueincontro.'</td>
    </tr>
    </table></th> </tr>
    </table>';

    }}
    mysql_close();

    ?>

  5. #5
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    scusa, ma mysql ha il formato date che ti permette di salvare correttamente le date e di fare tutte le operazioni sul "tempo".
    Quindi anche quella che serve a te.

    Per trovare il prox evento fai una query con data>=data attuale, ordinato per data crescente LIMIT 1

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.