[RESOLU] SELECT avec date

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] SELECT avec date

Re: [RESOLU] SELECT avec date

par moogli » 22 févr. 2017, 10:15

j'allais te proposer quelque chose de similaire mais qui te permet d'utiliser le between SQL.

connais tu les fonctions date et now() de mysql ?

du coup le cas aujourd'hui devient :
and date(date_debut_sortie) = current_date()
demain :
and date(date_debut_sortie) between current_date() and DATE_ADD(current_date(), INTERVAL 1 DAY)
[/sql]

hier
DATE_ADD(current_date(), INTERVAL -1 DAY)
c'est tout de suite plus lisible et compréhensible ? :)

cela va simplifier la partie php et faire travailler un peux plus le sgbd qui est loin de souffrir.
c'est plus simple à maintenir car ta requête SQL est compréhensible simplement dans trop réfléchir.
par contre faut connaitre un poil plus le SQL ;)


@+

Re: SELECT avec date

par yoann38 » 21 févr. 2017, 21:38

Bon j'ai testé de mon côté ça l'air de fonctionner ;)
case "aujourdhui" :
		$sql .= " AND (DATE_FORMAT(`loisirs`.`date_debut_sortie`, '%Y-%m-%d') <= '".date('Y-m-d h:i:s',strtotime('today'))."' AND DATE_FORMAT(`loisirs`.`date_fin_sortie`, '%Y-%m-%d') >= '".date('Y-m-d h:i:s',strtotime('today'))."')";
		break;

Re: SELECT avec date

par yoann38 » 21 févr. 2017, 18:41

Bon je sais d' où vient le problème.

Enfait dans ma requete je lui demande d'afficher les entrées avec une date supérieur ou égale à aujourd'hui mais également inférieur ou égal à aujourd'hui.

Si on demande que inférieur à aujourd'hui ca marche.
Mais le problème c'est que du coup ca me rerourne des résultats qui ne sont plus d'actualité.
Exemple :
Date_debut_sortie :2017-02-11 00:00:00
Date_din_sortie: 2017-02-11 00:00:00

Alors qu'on se moque de se résultat car dans le cas présent cette date est dépassé et ne correspond à la requete qui à pour but d'afficher uniquement les entrées qui on commencé en gros peut importe quand mais qui s'arrete surtout aujourd'hui....
Reste à trouver la solution

Re: SELECT avec date

par moogli » 21 févr. 2017, 16:58

hum tu parles de date_debut_sortie mais ta requête porte sur date_fin_sortie, il y a quoi dans ce champ ?

en considérant que c'est
date_debut_sortie : 2017-01-04 00:00:00
date_fin_sortie : 2017-02-22 00:00:00

seule la requête N°1 peux retourne un cette ligne.

Dans PMA si tu test la requête brute tu dois avoir le même résultat qu'en php :)

@+

Re: SELECT avec date

par yoann38 » 21 févr. 2017, 16:37

Oui moogli car :
J'ai dit au début :
Je sais que en BDD il y a des données qui correspondent mais ne parviens pas à les afficher
Ca ne revoir rien dans PMA mais pourtant
Ce que je ne comprends par car par exemple j'ai une entrée avec:
date_debut_sortie : 2017-01-04 00:00:00
date_debut_sortie : 2017-02-22 00:00:00

Donc cette entrée devrait apparaitre normalement puisque les dates correspondent à la requete demandé de plus elle apparait bien dans la requete suivante :
// Requete pour demain
SELECT * FROM `loisirs` JOIN regions ON regions.region_id = loisirs.id_region WHERE loisirs.date_fin_sortie >= NOW() AND loisirs.valide = 1 AND regions.url = 'rhone-alpes' AND loisirs.date_fin_sortie <= '2017-02-22 12:00:00'
//Requete pour aujourd'hui qui ne marche pas
SELECT * FROM `loisirs` JOIN regions ON regions.region_id = loisirs.id_region WHERE loisirs.date_fin_sortie >= NOW() AND loisirs.valide = 1 AND regions.url = 'rhone-alpes' AND loisirs.date_fin_sortie <= '2017-02-21 12:00:00'
Pour rapel mes requetes :
// Gestion par date rapide
	if (!empty($_GET['date'])) {
		switch ($_GET["date"]) :
		default:
		case "toutes" :
		$sql .= "";
		break;
		
		case "aujourdhui" :
		$sql .= " AND loisirs.date_fin_sortie <= '".date('Y-m-d h:i:s',strtotime('today'))."'";
		break;
	
		case "demain":
		$sql .= " AND loisirs.date_fin_sortie <= '".date('Y-m-d h:i:s',strtotime('tomorrow'))."'";
		break;
		
		case "weekend" :
		$sql .= " AND loisirs.date_fin_sortie <= '".date('Y-m-d',strtotime('next Monday'))."'";
		break;
		endswitch;
	}

Re: SELECT avec date

par moogli » 21 févr. 2017, 15:15

salut,

as tu testé la requête dans un client SQL ?

tu pourras la modifier pour voir si tu arrives à afficher les données que tu souhaites.

@+

Re: SELECT avec date

par Spols » 21 févr. 2017, 01:48

et si tu formate tes dates sans les heures ?

Re: SELECT avec date

par yoann38 » 21 févr. 2017, 00:15

aucun changement ....

Re: SELECT avec date

par Spols » 20 févr. 2017, 23:06

Pas sur, mais si tu as fait ta requète cet après-midi, il n'y a rien qui soit aprés NOW() (donc dés demain) et avant ce midi .

commence par mettre un = juste avant le NOW()

SELECT avec date

par yoann38 » 20 févr. 2017, 22:02

Salut tout le monde, voilà je bloque sur un SELECT avec une date dans une table.

Je sais que en BDD il y a des données qui correspondent mais ne parviens pas à les afficher.
Ma requete est la suivante :
// Gestion par date rapide
	if (!empty($_GET['date'])) {
		switch ($_GET["date"]) :
		default:
		case "toutes" :
		$sql .= "";
		break;
	
               // Rien n'est retourné pour aujourd'hui ..... ( ??????? )
		case "aujourdhui" :
		$sql .= " AND loisirs.date_fin_sortie <= '".date('Y-m-d h:i:s',strtotime('today'))."'";
		break;
		
		case "demain":
		$sql .= " AND loisirs.date_fin_sortie <= '".date('Y-m-d h:i:s',strtotime('tomorrow'))."'";
		break;
		
		case "weekend" :
		$sql .= " AND loisirs.date_debut_sortie <= '".date('Y-m-d',strtotime('next Saturday'))."' AND loisirs.date_fin_sortie >= '".date('Y-m-d',strtotime('next Monday'))."'";
		break;
		endswitch;
	}
Ma requete complete généré est :
SELECT * FROM `loisirs` JOIN regions ON regions.region_id = loisirs.id_region WHERE loisirs.date_fin_sortie > NOW() AND loisirs.valide = 1 AND regions.url = 'ile-de-france' AND loisirs.date_fin_sortie <= '2017-02-20 12:00:00'
Donc en gros je dois pouvoir selectionné toutes les actu de l'ile de france en faisant en sorte de sélectionné uniquement celle dont la date_fin_sortie est inférieur ou égale à la date du jour.

Je ne vois pas pouquoi ça bloque....
Aucun message d'erreur....

Merci à vous