Pb dans une condition d'une requête

cs_amine124 Messages postés 48 Date d'inscription vendredi 20 février 2009 Statut Membre Dernière intervention 5 août 2016 - 17 juin 2011 à 12:31
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 18 juil. 2013 à 09:41
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

Bxapero Messages postés 30 Date d'inscription jeudi 24 mars 2011 Statut Membre Dernière intervention 10 juin 2012
17 juin 2011 à 19:02
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;
?> 
0
cs_amine124 Messages postés 48 Date d'inscription vendredi 20 février 2009 Statut Membre Dernière intervention 5 août 2016
18 juin 2011 à 19:49
merci pour ton aide, mais toujours rien n'est affiché!
0
Bxapero Messages postés 30 Date d'inscription jeudi 24 mars 2011 Statut Membre Dernière intervention 10 juin 2012
18 juin 2011 à 22:50
$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;
0
cs_amine124 Messages postés 48 Date d'inscription vendredi 20 février 2009 Statut Membre Dernière intervention 5 août 2016
19 juin 2011 à 12:08
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
18 juil. 2013 à 09:41
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
0
Rejoignez-nous