Probleme de formatage de date et de comparaison

Résolu
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 - Modifié par msi79 le 2/07/2014 à 20:09
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 - 2 juil. 2014 à 22:12
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

jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 344
2 juil. 2014 à 20:22
Hello.

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

0
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 1
2 juil. 2014 à 21:05
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
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 344
2 juil. 2014 à 21:39
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


0
msi79 Messages postés 509 Date d'inscription lundi 24 août 2009 Statut Membre Dernière intervention 2 mai 2023 1
2 juil. 2014 à 22:12
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');


?>
0
Rejoignez-nous