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

Messages postés
486
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
15 mars 2019
-
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 :
Afficher la suite 

Votre réponse

4 réponses

Messages postés
25627
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 mai 2019
311
0
Merci
Hello.

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

Commenter la réponse de jordane45
Messages postés
486
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
15 mars 2019
0
Merci
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
Commenter la réponse de msi79
Messages postés
25627
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 mai 2019
311
0
Merci
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


Commenter la réponse de jordane45
Messages postés
486
Date d'inscription
lundi 24 août 2009
Statut
Membre
Dernière intervention
15 mars 2019
0
Merci
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');


?>
Commenter la réponse de msi79