Problème de rêquette avec date Mysql

Signaler
Messages postés
80
Date d'inscription
vendredi 4 avril 2003
Statut
Membre
Dernière intervention
14 octobre 2005
-
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
-
Voila un problème de php et mysql :/ les dates sont récupérées en une liste déroulante avec ce format: 00-00-0000

cette partie de code reforme la date au style: 0000-00-00

$sem=$_POST["semaine"];
$semaine1=substr($sem,0,10);
$semaine2=substr($sem,11,10);
$j=substr($semaine1,0,2);
$m=substr($semaine1,3,2);
$a=substr($semaine1,6,4);
$semaine1=$a.$m.$j;
$j=substr($semaine2,0,2);
$m=substr($semaine2,3,2);
$a=substr($semaine2,6,4);
$semaine2=$a.$m.$j;

/*et voici la rêquête qui plante ! j'ai toujours un résultat avec une date qui n'est pas comprise entre les deux dates du BETWEEN.*/


$requete='
SELECT TS.date_ts, S.nom_salarie, P.abrev_poste, D.libelle_demi_journee
FROM tableau_service TS, poste P, salarie S, demi_journee D
WHERE TS.id_poste_ts=P.id_poste
AND TS.id_praticien_ts=S.id_salarie
AND D.id_demi_journee=TS.id_demi_journee_ts
AND TS.date_ts BETWEEN("'.$semaine1.'" AND "'.$semaine2.'")
AND P.abrev_poste="P"
OR P.abrev_poste="P HS"
OR P.abrev_poste="PSP"
GROUP BY TS.date_ts';

Je vous remercis d'avance!!!

4 réponses

Messages postés
64
Date d'inscription
mardi 14 janvier 2003
Statut
Membre
Dernière intervention
5 août 2005

TS.date_ts BETWEEN("'.$semaine1.'" AND "'.$semaine2.'")



devrait plutôt être



TS.date_ts BETWEEN("'$semaine1'"." AND "."'.$semaine2.'")



ou



TS.date_ts BETWEEN("'$semaine1' AND '$semaine2'")



L'opérateur . sert à concaténer des chaînes de caractères. Il doit donc se trouver en 2 chaînes.

Tu peux aussi bien ne pas l'utiliser comme dans le second exemple où il n'y a qu'une chaîne

(entre " ").

@++


<hr>

Every problem has a solution. The difficulty is to find it out.
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut,



d'où l'intérêt de passer par des dates numériques (format INT ou TIMESTAMP par exemple).




<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
80
Date d'inscription
vendredi 4 avril 2003
Statut
Membre
Dernière intervention
14 octobre 2005

J'ai déjà essayer le numérique ça ne fonctionne pas, j'ai essayé comme au dessus rien du tout aussi :/
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
J'utilise couramment les BETWEEN sur mon forum, ça fonctionne
parfaitement sur des types numériques. Revois l'architecture de ta
table ;-)

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>