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

Messages postés
458
Date d'inscription
lundi 24 août 2009
Dernière intervention
8 décembre 2018
-
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
23555
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 décembre 2018
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
458
Date d'inscription
lundi 24 août 2009
Dernière intervention
8 décembre 2018
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
23555
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 décembre 2018
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
458
Date d'inscription
lundi 24 août 2009
Dernière intervention
8 décembre 2018
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.