Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21

Discussione: Query con Oder e Limit

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555

    Query con Oder e Limit

    Salve ragazzi,
    vorrei risolvere un piccolo problema. Allora, ho una tabella chiamata eventi. All'interno vi sono tutti i dati relativi ad un determinato spettacolo. Bene, ad ogni evento corrisponde una data. Ad esempio la partita X si giocherà in data 10 aprile 2008.

    La data, al momento dell'inserimento tramite form, viene scelta con delle select: ora, mese, anno, valorizzati come campi INT.

    Ora, cosa voglio fare? Vorrei estrarre tutti gli eventi dalla tabella, ma fare in modo di ordinarli per mese. Inoltre mi piacerebbe che per alcuni si possa inserire una clausola che limita l'estrazione all'ultimo mese, oppure all'ultima settimana. Come posso fare?

  2. #2
    Nel database il campo contenente la data di che tipo è?

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    La data, come detto, viene passata attraverso tre diversi campi. Giorno, mese e anno. Questi tre campi, nella tabella "eventi", sono valorizzati come INT (numero intero quindi)

    Ecco la struttura della tabella

    CREATE TABLE `eventi` (
    `event_id` int(5) unsigned NOT NULL auto_increment,
    `evento` text NOT NULL,
    `luogo` text NOT NULL,
    `giorno` int(2) NOT NULL default '',
    `mese` int(2) NOT NULL default '',
    `anno` int(4) NOT NULL default '',
    `ora` varchar(50) NOT NULL default '',
    `descrizione` text NOT NULL,
    `disponibilita` int(3),
    `prezzo` decimal (5,2),
    `autore` varchar(50) NOT NULL default '',
    `data` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
    `nome` varchar(50) NOT NULL default '',
    `size` varchar(25) NOT NULL default '',
    `type` varchar(25) NOT NULL default '',
    `immagine` longblob NOT NULL,
    `pub` int(1) NOT NULL default '0',
    PRIMARY KEY (`event_id`)
    )

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Nessuno spunto?

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Il primo consiglio è quello di non usare tutti quei campi distinti (giorno, mese, anno, ora) ma di usare un campo di tipo datetime (Si potrebbe risolvere comunque ma toccherebbe concatenare tutti i campi).

    Una volta che hai i dati in quel formato puoi fare tutte le query temporali che vuoi.

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Ciao Nicola,
    lo so, però mi servirebbe rendere l'inserimento semplice, con una select giorno, mese, anno. Come si può fare allora la conversione di questi campi INT in una data?

  7. #7
    Crea un campo di tipo DATE (od equivalente) su cui si possano applicare le funzioni di data:

    Vorrei estrarre tutti gli eventi dalla tabella, ma fare in modo di ordinarli per mese.
    ORDER BY YEAR(data_evento), MONTH(data_evento)

    Inoltre mi piacerebbe che per alcuni si possa inserire una clausola che limita l'estrazione all'ultimo mese
    WHERE YEAR(data_evento)=YEAR(CURDATE()) AND MONTH(data_evento)=MONTH(CURDATE())

    oppure all'ultima settimana
    WHERE YEAR(data_evento)=YEAR(CURDATE()) AND WEEK(data_evento)=WEEK(CURDATE())

    oppure se intendi negli ultimi 7 giorni:

    WHERE data_evento>=DATE_SUB(CURDATE(), INTERVAL 7 DAY);

  8. #8
    Come si può fare allora la conversione di questi campi INT in una data?
    In PHP utilizzi http://www.php.net/mktime, in MySQL utilizzi STR_TO_DATE()

  9. #9
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da marckhh
    Ciao Nicola,
    lo so, però mi servirebbe rendere l'inserimento semplice, con una select giorno, mese, anno. Come si può fare allora la conversione di questi campi INT in una data?
    L'inserimento tramite form puoi lasciarlo anche "spezzettato". Una volta che recuperi i parametri li concateni e li inserisci nel database in un campo di tipo datetime.

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Allora ragazzi,
    scusatemi un momento. Il form è questo (la parte relativa alla data):

    Codice PHP:
          <td>[b]Data dell'evento:[/b]</td>
                    <td></td>
                    <td><select name="giorno">
    <option value=""/>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>

    <option value="9">9</option>
    <option value="10">10</option>
    <option value="11">11</option>
    <option value="12">12</option>
    <option value="13">13</option>
    <option value="14">14</option>
    <option value="15">15</option>
    <option value="16">16</option>
    <option value="17">17</option>

    <option value="18">18</option>
    <option value="19">19</option>
    <option value="20">20</option>
    <option value="21">21</option>
    <option value="22">22</option>
    <option value="23">23</option>
    <option value="24">24</option>
    <option value="25">25</option>
    <option value="26">26</option>

    <option value="27">27</option>
    <option value="28">28</option>
    <option value="29">29</option>
    <option value="30">30</option>
    <option value="31">31</option>
    </select><select name="mese">
    <option value=""/>
    <option value="1">1</option>
    <option value="2">2</option>

    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
    <option value="9">9</option>
    <option value="10">10</option>
    <option value="11">11</option>

    <option value="12">12</option>
    </select><select name="anno">
    <option value=""/>
    <option value="2008">2008</option>
    <option value="2009">2009</option>
    <option value="2010">2010</option>
    <option value="2011">2011</option>
    <option value="2012">2012</option>
    <option value="2013">2013</option>
    <option value="2014">2014</option>
    <option value="2015">2015</option>
    </select></td> 
    Il file che inserisce i dati in tabella è questo:

    Codice PHP:
    <?php
    $evento 
    htmlentities(strip_tags($_POST["evento"]));
    $luogo htmlentities(strip_tags($_POST["luogo"]));
    $giorno htmlentities(strip_tags($_POST["giorno"])); 
    $mese htmlentities(strip_tags($_POST["mese"])); 
    $anno htmlentities(strip_tags($_POST["anno"])); 
    $ora htmlentities(strip_tags($_POST["ora"]));
    $descrizione str_replace("\n""
    "
    ,$_POST["descrizione"]);
    $disponibilita htmlentities(strip_tags($_POST["disponibilita"]));
    $prezzo str_replace(","".",$_POST["prezzo"]);
    $organizzazione htmlentities(strip_tags($_POST["autore"]));

    $type $_FILES['file']['type'];
    $nome $_FILES['file']['name'];
    $size $_FILES['file']['size'];
    $immagine = @file_get_contents($_FILES['file']['tmp_name']);
    $immagine addslashes ($immagine);
    $max_size 100000;

    if(
    $evento=="")
    {
    print (
    "Il nome dell'evento è obbligatorio
    <a href=\"insertevent.php\">indietro</a>
    "
    );
    }
    elseif(
    $luogo=="")
    {
    print (
    "Il luogo dell'evento è obbligatorio
    <a href=\"insertevent.php\">indietro</a>
    "
    );
    }
    elseif(
    $giorno=="")
    {
    print (
    "Il giorno dell'evento è obbligatorio
    <a href=\"insertevent.php\">indietro</a>
    "
    );
    }
    elseif(
    $mese=="")
    {
    print (
    "Il mese dell'evento è obbligatorio
    <a href=\"insertevent.php\">indietro</a>
    "
    );
    }
    elseif(
    $anno=="")
    {
    print (
    "L'anno dell'evento è obbligatorio
    <a href=\"insertevent.php\">indietro</a>
    "
    );
    }
    elseif(
    $ora=="")
    {
    print (
    "L'ora dell'evento è obbligatoria
    <a href=\"insertevent.php\">indietro</a>
    "
    );
    }
    elseif(
    $descrizione=="")
    {
    print 
    "La descrizione è obbligatoria
    <a href=\"insertevent.php\">indietro</a>
    "
    ;
    }
    elseif(
    $disponibilita=="")
    {
    print 
    "Indicare la disposibilità
    <a href=\"insertevent.php\">indietro</a>
    "
    ;
    }
    elseif(
    $prezzo=="")
    {
    print 
    "Devi inserire un prezzo unitario per singolo biglietto
    <a href=\"insertevent.php\">indietro</a>
    "
    ;
    }
    elseif(
    $immagine=="")
    {
    print 
    "L'immagine è obbligatoria
    <a href=\"insertevent.php\">indietro</a>
    "
    ;
    }
    elseif(
    $size $max_size)
    {
    print 
    "L'immagine supera i 100 kb. Il file è troppo grande
    <a href=\"insertevent.php\">indietro</a>
    "
    ;
    }
    else
    {
    include(
    "config.php");
    mysql_connect($db_host,$db_user,$db_password,$db_name) or die ("non riesco a connettermi");
    mysql_select_db("$db_name") or die ("Non riesco a selezionare il database");
    mysql_query("insert into eventi (evento, luogo, giorno, mese, anno, ora, descrizione, disponibilita, prezzo, autore, nome, size, type, immagine) values ('$evento', '$luogo', '$giorno', '$mese', '$anno', '$ora', '$descrizione', '$disponibilita', '$prezzo', '$organizzazione','$nome','$size','$type','$immagine')") or die( mysql_error() . "
    $sql) ;
    $ultimo_id mysql_insert_id();
    mysql_close();
    ?>
    Ora, non ho ben capito come concatenare i campi ora, mese ed anno in modo tale da avere una data.

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.