Pb dans une condition d'une requête

Signaler
Messages postés
48
Date d'inscription
vendredi 20 février 2009
Statut
Membre
Dernière intervention
5 août 2016
-
Messages postés
33154
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
30 juillet 2021
-
Bonjour,
j'ai un tableau (absenter) qui contient un champs (tot_hr_abs) représentant le nombre d'heurs d'absence d'élèves de mon application pour chaque jour:
absenter(#code_elv,#id_jour,date_abs,tot_hr_abs)

je veux sélectionner la somme des champs "tot_hr_abs" du tableau absenter dans un mois donné;
j'ai essayé avec le code suivant mais, il n'a rien donné:

<?php
//......
$dte_absS=" -".$mois."-".$annee;
$rqT=mysql_query("SELECT SUM(tot_hr_abs) FROM absenter WHERE code_elv='$id_elv' AND date_abs='$dte_absS'");

$tot_hr_absT_S=mysql_fetch_array($rqT);
$tot_h_absS=$tot_hr_absT_S[0];

echo $tot_h_absS;
?>
Veuillez me dire comment résoudre ce pb, et merci d'avance.

5 réponses

Messages postés
30
Date d'inscription
jeudi 24 mars 2011
Statut
Membre
Dernière intervention
10 juin 2012

essaie comme ça :
<?php
//......
$dte_absS=" -".$mois."-".$annee;
$rqT=mysql_query("SELECT SUM(tot_hr_abs) AS tot_hr_abs FROM absenter WHERE code_elv='$id_elv' AND date_abs='$dte_absS'");

$tot_hr_absT_S=mysql_fetch_array($rqT);
$tot_h_absS=$tot_hr_absT_S['tot_hr_abs'];

echo $tot_h_absS;
?> 
Messages postés
48
Date d'inscription
vendredi 20 février 2009
Statut
Membre
Dernière intervention
5 août 2016

merci pour ton aide, mais toujours rien n'est affiché!
Messages postés
30
Date d'inscription
jeudi 24 mars 2011
Statut
Membre
Dernière intervention
10 juin 2012

$dte_absS=" -".$mois."-".$annee;

pourquoi ne pas utiliser :
$dte_absS=date('-n-Y');

comment ta date est elle écrite dans ta bdd ?
y a t'il un espace avant le mois ?
car tu en met un dans la date que tu veux comparer
$dte_absS=" -".$mois."-".$annee;
$dte_absS="ici-".$mois."-".$annee;
Messages postés
48
Date d'inscription
vendredi 20 février 2009
Statut
Membre
Dernière intervention
5 août 2016

j'ai trouvé la solution, voilà:

<?php
///....
$id_elv=$_GET['id_elv'];
$moisJu="06";
$annee_crtJu=decis_annee($moisJu);

$tab=array();

for($i=1;$i<=30;$i++){
$dte_absS=$i."-".$moisJu."-".$annee_crtJu;

$rqT=mysql_query("SELECT SUM(tot_hr_abs) FROM absenter WHERE code_elv='$id_elv' AND date_abs='$dte_absS'");

$tot_hr_absT_S=mysql_fetch_array($rqT);
$tot_h_absS=$tot_hr_absT_S[0];


if($tot_h_absS=="") { $tot_h_absS="?"; }
else { $tab[$i-1]=$tot_h_absS;}

}

$somm=0;
foreach($tab as $val)
{
$somm+=$val;
}
echo $somm;

mysql_close();
?>

et merci bcp Bxapero.
Messages postés
33154
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
30 juillet 2021
351
Bonjour,

Le sujet date un peu, mais vu qu'il n'est pas marqué comme "RESOLU" je me permet d'y intervenir.

Si votre champ date_abs est au format :'jour-moi-année' (ce qui est une erreur selon moi... il est préférable d'utiliser le format timestamp ou datetime de Mysql )

Pourquoi dans votre requête ne pas faire :

<?php 
///.... 
$id_elv=$_GET['id_elv']; 
$moisJu="06"; 
$annee_crtJu=decis_annee($moisJu);

//Utilisation du % comme caractère Jocker
$dte_absS='%-'.$Mois.'-'.$Annee;

// Utilisation de Like au lieu de '='
$rqT=mysql_query("SELECT SUM(tot_hr_abs) FROM absenter WHERE code_elv='$id_elv' AND date_abs like '$dte_absS' GROUP BY code_elv ")


De cette façon, plus besoin de boucler sur chaque jour, ni de refaire une boucle pour faire la somme.
Tout se fait en une seule fois.


Quoi qu'il en soit, merci de bien vouloir passer cette discussion en "résolu" ( -> Réponse acceptée).
NB: lors de vos prochains messages sur le forum, merci d'utiliser la balise de code (3eme icone en partant de la droite), cela facilite la lecture du message.


Cordialement,
Jordane
_____________________________________________________
Règles du forum à lire avant de poster une question : ICI