Probleme de formatage de date et de comparaison [Résolu]

Signaler
Messages postés
500
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
13 avril 2021
-
Messages postés
500
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
13 avril 2021
-
Bonjour,
je voudrais afficher les notes d'une période (un trimestre) .
pour cela dans ma base de donnée j'ai enregistré durement les trimestre et leur date comme le montre l'image :


donc il faut que la date d'enregistrement de note soit comprise entre debut et fin du trimestre.

Ma requête ne fonctionne pas . je veux de l'aide . merci d'avance .
VOICI mon code :
<?php

if(isset($_GET['mat'])); $mat = urldecode($_GET['mat']); //echo $mat;
if(isset($_GET['class'])); $class = urldecode($_GET['class']); //echo $class;
//RECUPERATION DU TRIMESTRE
$sql = "SELECT *
FROM trimestres
WHERE trim = 'TRIM1'
" ;
$req = mysql_query($sql) or die('no');
while($row = mysql_fetch_assoc($req)){
$debut = $row["debut"]; echo $debut.'<br/>';
$fin = $row["fin"];
$debut = date("Y/m/d H:i:s",strtotime($debut));
}
//calcul de moyennes
$q = mysql_query("SELECT *
FROM inscription I
,notes N
,matieres M
WHERE I.id_inscri = N.id_elv
AND M.id = N.id_matiere
AND N.eval = '".$class."'
AND M.matiere = '".$mat."'
AND (N.date_enrg BETWEEN '".$debut."' AND '".$fin."')
ORDER BY I.matricule,N.id_matiere

") or die('no');


?>

voici une image de la table note :

4 réponses

Messages postés
32934
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 juin 2021
351
Hello.

As tu remarqué que les formats de date étaient différents entre tes deux tables ??

Messages postés
500
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
13 avril 2021
1
Oui j'ai remarqué ça c'est pourquoi j'ai essayé de faire :
  $debut = date("Y/m/d H:i:s",strtotime($debut)); 
pour avoir le même format
Messages postés
32934
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 juin 2021
351
Ah oui désolé. ..je n'avais pas vu.

Mais...tu as fais un echo de tes variables ??

Le strtotime ne fonctionne pas sur les dates françaises.
Regarde cette discussion :

http://stackoverflow.com/questions/8051932/convert-a-date-in-french-format-in-a-mysql-datetime-format


Messages postés
500
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
13 avril 2021
1
OUI grand merci ça m'a bien inspiré .
ça marche . voici ce que j"ai fais
<?php

if(isset($_GET['mat'])); $mat = urldecode($_GET['mat']); //echo $mat;
if(isset($_GET['class'])); $class = urldecode($_GET['class']); //echo $class;
//RECUPERATION DU TRIMESTRE
$sql = "SELECT *
FROM trimestres
WHERE trim = 'TRIM1'
" ;
$req = mysql_query($sql) or die('no');
while($row = mysql_fetch_assoc($req)){
$debut = $row["debut"]; echo $debut.'<br/>';
$fin = $row["fin"];
//$debut = date("Y/m/d H:i:s",strtotime($debut));
//FORMATAGE DE DEBUT
$tabDate1 = explode('/' , $debut);
$date_debut = $tabDate1[2].'-'.$tabDate1[1].'-'.$tabDate1[0];
$date_debut = date( 'Y-m-d H:i:s', strtotime($date_debut) );
echo $date_debut.'<br/>';
//FORMATAGE DE DEBUT
$tabDate2 = explode('/' , $fin);
$date_fin = $tabDate2[2].'-'.$tabDate2[1].'-'.$tabDate2[0];
$date_fin = date( 'Y-m-d H:i:s', strtotime($date_fin) );
echo $date_fin;
}
//calcul de moyennes
$q = mysql_query("SELECT *
FROM inscription I
,notes N
,matieres M
WHERE I.id_inscri = N.id_elv
AND M.id = N.id_matiere
AND N.eval = '".$class."'
AND M.matiere = '".$mat."'
AND (N.date_enrg BETWEEN '".$date_debut."' AND '".$date_fin."')
ORDER BY I.matricule,N.id_matiere

") or die('no');


?>