begin process at 2012 05 30 21:08:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

fonction sql avec retour de valeur mensuelle


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

fonction sql avec retour de valeur mensuelle

lundi 12 juin 2006 à 14:20:54 | fonction sql avec retour de valeur mensuelle

gabs77

bonjour,
je cherche a faire une fonction sql en php qui me retournerai le nb de fois qu'apparait une donnée dans une table sur un etendue de mois
cad que g une table avec un id et qq propriété ainsi qu'une date
et je voudrai savoir le nb de fois que figure dans la base de donnée cette propriété en janvier, février, mars ...
je voudrais que sa me donne un truc du style 
janvier : 3 fois,
fevrier : 2 fois, 
mars : 0 fois, 
...
voici pour le moment ma fonction:
====================== 

function requete_date($champ)
{
  $sql1 = "SELECT COUNT(*) FROM histo".
    " WHERE date_fin BETWEEN '$date' AND '$date2' AND $champ ";
  $req1 = mysql_query($sql1) or die(mysql_error());
  if ($data1 = mysql_result($req1,0))
   {
   return $data1['date'];
   }
}
lundi 12 juin 2006 à 14:24:05 | Re : fonction sql avec retour de valeur mensuelle

gabs77

le fait est que je l utilise deja bcp dans mon script selon different criteres mais je ne parviens pas a le faire comme cela a moins de rappeller la fonction pour chacun des criteres et pour chacun des mois ce ki reviendrai a appeler la fonction
nb de critere * nb de mois
soit par exemple 6 criteres sur 6 mois fait 36 appel ce ki en fait pas mal
il me faudrait un moyen plus simple si c possible
lundi 12 juin 2006 à 14:54:34 | Re : fonction sql avec retour de valeur mensuelle

coockiesch

Salut!
Y'a un champ qui contient le nom du mois? Ou bien une date? En quel format? Quel nom de champ?

Parce que avec GROUP BY et count on doit pouvoir faire qqch! :)

Tu peux nous montrer la structure de ta table?

@++

R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...
"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
lundi 12 juin 2006 à 15:01:11 | Re : fonction sql avec retour de valeur mensuelle

gabs77

voila ma table histo
id_historique INT autoincrement
type_inter  VARCHAR
type_mat  VARCHAR
date_début DATE (donc de la forme 0000/00/00)
date_fin DATE
... ( et encore d autre critères)
 et g fais sa aussi pour recup le mois du champ date
 
$date_temp2  = $data['date_début'];
$annee_temp2  = strtok($date_temp2,"-");
$mois_temp2  = strtok("-");
$jour_temp2  = strtok("-");
qui pouurait nous etre utile pour la suite (enfin je pense !!)
lundi 12 juin 2006 à 15:10:53 | Re : fonction sql avec retour de valeur mensuelle

coockiesch

Oki!
Et tu veux compter sur quel champ, je n'ai pas compris (dsl, boolay d'un jour, boolay tjs, ^^)

@++

R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...
"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
lundi 12 juin 2006 à 15:21:57 | Re : fonction sql avec retour de valeur mensuelle

gabs77

lol en fait je veux compte le nb de fois qu apparait le critere demandé a sur plusieur mois cad si je ve savoir combien de fois de janvier a mars que installation apparait alors le resultat sera par exemple
janvier : 3
fevrier : 2
mars : 5
avec une requete similaire a sa :
function requete_date($champ)
{
  $sql1 = "SELECT COUNT(*) FROM histo".
    " WHERE date_fin BETWEEN '$date' AND '$date2' AND $champ ";
  $req1 = mysql_query($sql1) or die(mysql_error());
  if ($data1 = mysql_result($req1,0))
   {
   return $data1['id_historique'];
   }
}

$install = requete_date("type_inter='installation'");
echo $install;
lundi 12 juin 2006 à 15:38:41 | Re : fonction sql avec retour de valeur mensuelle

coockiesch

Salut!
Et qqch dans le genre, ça marche?

"SELECT count(id_historique) as nb FROM histo WHERE date_fin BETWEEN '$date' AND '$date2' GROUP BY MONTH(date_fin)"

@++

R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...
"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
mardi 13 juin 2006 à 16:16:18 | Re : fonction sql avec retour de valeur mensuelle

gabs77

nan sa ne me donne pas ce ke je voulais mais merci quand mm
g chercher toute la nuit et je suis parvenu a faire ce ke je desirai
++
mardi 13 juin 2006 à 18:31:45 | Re : fonction sql avec retour de valeur mensuelle

coockiesch

Oki... Tu as fait comment?

@++

R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...
"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
mercredi 14 juin 2006 à 09:13:12 | Re : fonction sql avec retour de valeur mensuelle

gabs77

voila ce que g fait, g tout d abord créer 3 fonctions une pour compter le nb de fois qu'il apparait, une pour déterminer en sec l'interval entre la date de début et la date de fin pour chaque donnée enregistré dans l'historique (pour ma part c des dates d interventions pour calculer la durée d intervention)
et enfin une pour convertir les durées des secondes en mois, jour, heures, minutes
par contre ceci n 'est qu'un extrait car les appels de fonctions sont plus nombreuses mais c exactement sa ce ke g fait

voila les fonctions :
============
function requete_date($table,$champ)
{
$sql1 = "SELECT COUNT(*) FROM $table ".
  " WHERE $champ ";
$req1 = mysql_query($sql1) or die('E_req_dep_install '.mysql_error());
if ($data1 = mysql_result($req1,0))
 {
 return $data1['date_fin'];
 break;
 }
}

function requete_duree($table,$champ)
{
$sql =  "SELECT * FROM $table WHERE $champ ";
$req = mysql_query($sql) or die (mysql_error());
$i = 0;
while ($data = mysql_fetch_array($req))
 {
 $date_temp2  = $data['date_début'];
 $annee_temp2  = strtok($date_temp2,"-");
 $mois_temp2  = strtok("-");
 $jour_temp2  = strtok("-");
 $heure_temp2  = $data['heure_début'];
 $H_temp2   = strtok($heure_temp2,":");
 $M_temp2   = strtok(":");
 $date_temp1  = $data['date_fin'];
 $anne_temp1  = strtok($date_temp1,"-");
 $mois_temp1  = strtok("-");
 $jour_temp1  = strtok("-");
 $heure_temp1  = $data['heure_fin'];
 $H_temp1   = strtok($heure_temp1,":");
 $M_temp1   = strtok(":");
 $sec = date("U",mktime($H_temp1,$M_temp1,0,$mois_temp1,$jour_temp1,0))- date("U",mktime($H_temp2,$M_temp2,0,$mois_temp2,$jour_temp2,0));
 $sec = str_replace("-","",$sec);
 $i = $i + $sec;
 }
return $i;
break;
}

function convert_date($sec)
{
if($sec<60)
    {$interval="Moins d'1 minute"; }
elseif($sec<3600)
    {$interval=date("i",$sec)."min"; }
elseif($sec<86400)
    {$interval=(date("H",$sec)-1)."h, ".date("i",$sec)."min "; }
elseif($sec<2678400)
    {$interval=(date("d",$sec)-1)."j, ".date("H",$sec) ."h ".date("i",$sec)."min"; }
else
    {$interval=(date("m",$sec)-1) ." mois, ".date("d",$sec)."j "; }
return $interval;
break;
}


ensuite g effectuer mais appel de fonction avec une boucle pour enregister en chacune des variables avec l indice (c similaire a des arrays) indiquant le mois concerné

 for($i=$mois;$i<=$mois2;$i++)
  { $date = $an.'-'.$i.'-01';
   $date2 = $an .'-'.$i.'-31'; 
    $inst[$i] = requete_duree($table_hist, " Installation  AND date_fin BETWEEN '$date' AND '$date2' ");
    $nb_inst[$i] = requete_date($table_hist, " Installation   AND date_fin BETWEEN '$date' AND '$date2' ");
    $instC[$i] = convert_date($inst[$i]).'('.$nb_inst[$i].')';
    
    $dep[$i] = requete_duree($table_hist," Depannage AND date_fin BETWEEN '$date' AND '$date2' ");
    $nb_dep[$i] = requete_date($table_hist," Depannage AND date_fin BETWEEN '$date' AND '$date2' ");
    $depC[$i] = convert_date($dep[$i]).'('.$nb_dep[$i].')';
   }

 pour finir je refais la mm boucle un pe plus loin pour le mettre sous forme de tableau HTML ce qui affichera autant de tableau kil y a de mois pris en compte 

for($i=$mois;$i<=$mois2;$i++)
 { $date = $an.'-'.$i.'-01';
  $date2 = $an.'-'.$i.'-31';
echo'<table><tr><td>'.$i.'</td></tr>';
echo'<tr><td>Installation/Depannage</td></tr>';
echo'<tr><td>'.$instC[$i].'/'.$depC[$i].'</td></tr>';
echo'</table></td><td>';
 }



Cette discussion est classée dans : fonction, date, mysql, sql, retour


Répondre à ce message

Sujets en rapport avec ce message

Retour à la ligne [ par philagui ] Bonjour,je fais afficher tous les resultats d'un champ d'une DB MySQL par l'intermédiaire du script suivant:$sql="SELECT Titre FROM Tableaux WHERE 1"; pb de SQL [ par DocteurVB ] bonjour à tous !!!j'a un pb j'essai de faire passer cette requette : Create View `vProposer`(`IdPro`,`IdVd`,`IdCont`,`Type`,`Resultat`,`TypeRes`,`Date Affichage de date MySQL [ par mightteam ] Salut a tous,alors voila je cherche une simple fonction qui me permettrais d'inverser les date de MySQLActuellement elle sortent comme suit : AAAA-MM- Date mysql [ par theseif ] Bonjour à vous, Le script ci-dessous me sert à enregistre une date saisie en français dans BD mysql, mais sa ne marche pas.Pouvez-vous me le corriger? modifier format d'une date extraite d'une base SQL [ par titsuisse ] Bonjour,Je pense que ce point a déjà du être aborder cependant je n'ai rien trouvé qui me satisfasse (en faite rien qui marche).Voilà, j'ai une table Problème de comparaison de date ! [ par punkybreizh ] Bonjour à tous, Depuis quelques jours je bloque sur une de mes pages de mon site qui permet en fait de comparer une date se trouvant dans une base de afficher age compris entre 2 valeur grace a une base sql help [ par guigui2mars ] hello voila je veux pouvoir grace a une date de naissance qui est inscrite dans la bas de donnée arrivé a afficher l'intervalle d'age ( ex 18 - 25 ans zut sa fonction besoin d'aide [ par speedylol ] bonjour voilà je créer un script de messagerei online le probléme que j ai c'est que l'update ne fonction pas seirez vous m'aider svp?????$sql = "SELE Fonction php dans fichier à part??? [ par z980x ] Bonjour à tous,je suis en train de travailler sur un projet dans lequel je dois me connecter à une base de données pour récupérer des infos.Pas de pro Compatibilité du timestamp (mysql 4 / 5) [ par christobal ] Bonjour,J'ai une ch'tit fonction pour convertir un timestamp au format 0000-00-00 00:00:00 en FRfunction convert_date($timestamp){ return date('d-m-Y


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,700 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales