Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [MySql] Problema con ricerca su date

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,051

    [MySql] Problema con ricerca su date

    Ho un problema con la ricerca tramite date.
    Nel database, per ogni item ho due valori-data: inizio e fine (i campi sono data_in e data_out).
    La ricerca parte inizialmente da due valori-data inseriti via form, ad esempio:
    2017-12-20 e 2017-12-27
    Per estendere il risultato della ricerca, prima di effettuare la query, modifico questi valori-data, creandomi tre variabili:
    $startdata, che è uguale alla data di inizio, meno sette giorni (2017-12-13)
    $startdata2, che è uguale alla data di inizio, più sette giorni (2017-12-27)
    $enddata, che è uguale alla data di fine, più trenta giorni (2018-01-27)
    A questo punto, faccio questa query:

    codice:
    $result2 = mysql_query("SELECT * FROM `offerte` WHERE (`data_in` >= '$startdata' AND `data_in` <= '$startdata2') OR `data_out` <= '$enddata' ORDER BY `inter_pos`,`data_in` ASC");
    Quello che dovrebbe fare, è restituire tutti i record in cui il campo data_in contiene una data maggiore o uguale a 2017-12-13 e inferiore o uguale a 2017-12-27, oppure in cui il campo data_out contiene una data inferiore o uguale a 2018-01-27.
    La query invece mi restituisce una serie di record che non hanno nulla a che vedere con questi parametri (ad esempio: inizio 2017-09-28 e fine 2017-10-08...).
    Il formato delle date è corretto (lo verifico con un echo), quindi perchè il risultato è sballato?
    metatad
    graphic & web design

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,051
    codice:
    <!-- 2017-12-13/2017-12-27/2018-01-27 -->
    metatad
    graphic & web design

  4. #4
    mi aspettavo l'intera query....

    del tipo

    $myQuery = "SELECT * FROM `offerte` WHERE (`data_in` >= '$startdata' AND `data_in` <= '$startdata2') OR `data_out` <= '$enddata' ORDER BY `inter_pos`,`data_in` ASC";
    ----- stampo la query
    $result2 = mysql_query($myQuery);

  5. #5
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,065
    Hai messo un OR quindi ti tira fuori tutti i record con una data_out minore del 2018-01-27 ​indipendentemente di data_in.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,051
    Hai ragione! Sto proprio fuso...
    Grazie, cmq...
    metatad
    graphic & web design

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 © 2017 vBulletin Solutions, Inc. All rights reserved.