IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

script moyenne date


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 34
    Par défaut script moyenne date
    Bonjour je revient vers vous car je n arrive pas a faire mon scripte qui calcule moyenne de nombre de jour entre date de demande et la date de remise du dossier .

    je voudrais utiliser AVG(DATEDIFF(date_de_demande, date_de_remise))

    je ca ne fonctionne pas mysql me retourne qu'il ne faut qu'un seul paramètre.

  2. #2
    Membre émérite Avatar de Atomya Rise
    Femme Profil pro
    Développeuse Web
    Inscrit en
    Février 2009
    Messages
    443
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeuse Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2009
    Messages : 443
    Par défaut
    Après quelques petites recherches sur le forum, je pense qu'il ne faut utiliser que le paramètre DATEDIFF et enlever le paramètre AVG.

    Essaye de faire un petit tour sur ce topic histoire de voir si cela pourrais éventuellement t'aider...

    http://www.developpez.net/forums/d86...obleme-format/

    En espérant que cela puisse t'aider !

  3. #3
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    i respectfully dissent

    la structure AVG(DATEDIFF( :date1 , :date2 ) ) me parait correcte dans un context group by (implicite ou non), sans plus de vérification. Est-ce qu'on peut voir l'intégralité du message d'erreur et de la requete?

    EDIT ajoute group by

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 34
    Par défaut
    J ai écris un script pour effectuer la moyenne ,je voudrais votre avis

    (fonction utilisée)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    <?php
    /*                                                                            */
    /* Titre          : Calcul la différence de jour entre 2 dates                */
     
    // NbJours("2000-10-20", "2000-10-21") retourne 2
     
    function NbJours($debut, $fin) {
     
      $tDeb = explode("-", $debut);
      $tFin = explode("-", $fin);
     
      $diff = mktime(0, 0, 0, $tFin[1], $tFin[2], $tFin[0]) - 
              mktime(0, 0, 0, $tDeb[1], $tDeb[2], $tDeb[0]);
     
      return(($diff / 86400)+1);
     
    }
     
    // Comment apeler la fonction
    //$Nombres_jours =  NbJours("2000-10-20", "2000-10-21");
    // Affiche 2
    //echo $Nombres_jours;
     
    ?> 
     
     
     
     
    script calcule moyenne 
     
    //Select Moyenne date de demande
     
    $req = mysql_query("SELECT Date_de_demande,Date_de_réponse FROM dossier_tbl where service='$service'");
     
    while( $ligne = mysql_fetch_array($req)){
     
        $debut = $ligne['Date_de_demande'] ;
     
        $fin = $ligne['Date_de_réponse'] ;
     
        if ($fin != '0000-00-00') {
            $Nombres_jours = NbJours($debut, $fin);
            $temp_nbjours = $Nombres_jours;
            $calcule = $temp_nbjours+$calcule;
            $nombres_dates++ ;
        }
     
    }
    $moyenne = $calcule/$nombres_dates;

  5. #5
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Citation Envoyé par waltcap Voir le message
    je voudrais utiliser AVG(DATEDIFF(date_de_demande, date_de_remise))
    Cette fonction marche chez moi. Montre nous ta requete complète stp

  6. #6
    Membre émérite Avatar de Atomya Rise
    Femme Profil pro
    Développeuse Web
    Inscrit en
    Février 2009
    Messages
    443
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeuse Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2009
    Messages : 443
    Par défaut
    Merci d'utiliser les balises code afin de citer ton code, cela sera bien plus lisible pour nous

    pourquoi ne traites-tu pas la différence entre tes dates directement dans ta requête comme ceci :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $req = mysql_query("SELECT DATEDIFF(Date_de_réponse, Date_de_demande) FROM dossier_tbl where service='$service'");

    tu aurais directement la différence entre tes deux dates...

  7. #7
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Il veut la moyenne des différences des dates, pas les différences des dates

    Sa première requête :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AVG(DATEDIFF(date_de_demande, date_de_remise))

    est bonne, le problème se situe donc dans la partie de la requête qu'il ne nous fournit pas

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 34
    Par défaut
    je voudrais calculer la moyenne du nombre de jour entre la date de demande et la date de remise du dossier.

    j ai utiliser la requête suivante comme vous me l avait conseiller



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req = mysql_query("SELECT DATEDIFF(Date_de_réponse, Date_de_demande) FROM dossier_tbl where service='$service'");

    il me renvoie
    Resource id #7

    dite moi ce que vous voulez savoir ,ce qu'il vous manque

  9. #9
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Pour les requêtes du type SELECT, SHOW, DESCRIBE, EXPLAIN et les autres requêtes retournant un jeu de résultats, mysql_query() retournera une ressource en cas de succès, ou FALSE en cas d'erreur.
    ta variable $req est en fait un jeu de résultat, tu peux pas faire un echo dessus, il faut que tu l'exploites comme ca par exemple :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $req = mysql_query("SELECT DATEDIFF(Date_de_réponse, Date_de_demande)  FROM dossier_tbl where service='$service'");
     
    while($row = mysql_fetch_array($req))
       echo $row[0] . '<br />';

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 34
    Par défaut
    J'ai testé aussi le code suivant


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $req = mysql_query("SELECT AVG(DATEDIFF(date_de_demande, date_de_remise)) FROM dossier_tbl where service='$service'");
     
    echo $req ;
    et dans le echo normalement il devrait me renvoyait la moyenne entre date_de_demande et date_de_remise et la la variable $req et vide pourquoi ?
    C est aussi un jeu de résultat ?

  11. #11
    Membre émérite Avatar de Atomya Rise
    Femme Profil pro
    Développeuse Web
    Inscrit en
    Février 2009
    Messages
    443
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeuse Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2009
    Messages : 443
    Par défaut
    C'est un peu normal, là tu fais une requête sans récupérer le résultat de ta requête !

    essaye plutôt ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $req = mysql_query("SELECT AVG(DATEDIFF(date_de_demande, date_de_remise)) FROM dossier_tbl where service='$service'");.
     
    $res = mysql_fetch_row($req);
     
    echo $res[0] ;

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 34
    Par défaut
    j'ai utilisé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $req = mysql_query("SELECT AVG(DATEDIFF(date_de_demande, date_de_remise)) FROM dossier_tbl where service='$service'");.
     
    $res = mysql_fetch_row($req);
     
    echo $res[0] ;
    et php me renvoi l erreur suivante

    Warning: mysql_fetch_row() expects parameter 1 to be resource, boolean given in C:\Program Files\EasyPHP-5.3.3\www\test walter original sav\statistiques_user.php on line 46

  13. #13
    Membre émérite Avatar de Atomya Rise
    Femme Profil pro
    Développeuse Web
    Inscrit en
    Février 2009
    Messages
    443
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeuse Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2009
    Messages : 443
    Par défaut
    Qu'est ce qu'il y a, a la ligne 46 de la page statistiques_user.php ?

    Est ce que tu as vérifié la requête sql (l'écriture des champs etc..) ?

    Est ce que dans les champs date_de_demande et date_de_remise il y a bien des dates ?

    Est ce que tu as mis des lignes de codes entre ton mysql_query et ton mysql_fetch_row ?

    Essaye de remplacer $req par $req_dateMoyenne et $res par $dateMoyenne (au cas où tu utilise déjà ses variables ailleurs....

    Car là, c'est assez bizarre, on dirais que cela renvoie false ou alors, tu nous montre pas le reste de ton code, il ne dois pas être généré tout seul...

    Essaye de nous fournir ton code au complet stp.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 34
    Par défaut
    voici le code de ma page complète et oui dans ma base le champ et bien inscrit comme date donc je ne peu qu'insérée des dates.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    <?php require_once('connexion.php'); ?>
    <?php
    /*
    -----------------------------------
    ------ SCRIPT DE PROTECTION -------
    -----------------------------------
    */
     
    session_start(); // On relaye la session
    if (session_is_registered("authentification") && $_SESSION['privilege'] == "user"){ // vérification sur la session authentification (la session est elle enregistrée ?)
    // On vérifie également si la session ouverte est bien une session admin et on place ici les éventuelles actions en cas de réussite de la connexion
    }
    else {
    header("Location:index.php?erreur=intru"); // redirection en cas d'echec
    }
    require('fonction_diff_2_date.php');
    $infos = '';
    $nombres_dates ="0";
    $calcule = "0";
     
    //Initialisation des variables du formulaire (mise à '' si elles sont vides)
    empty($_POST['service']) ? $service = '' : $service = $_POST['service'];
    empty($_POST['nb_en_cours']) ? $nb_en_cours = '' : $nb_en_cours = $_POST['nb_en_cours'];
     
     
     {
     $login=$_SESSION['login'];
     
    //Compte le nombre de demande en cours dans la base de donnée
    	mysql_select_db($database_dbprotect, $dbprotect)or die("Erreur de selection de base");
    	$requete1 = mysql_query("SELECT Etat FROM dossier_tbl where Etat='en cours' and service='$login'");
    	$nbreLignes1 = mysql_num_rows($requete1);
     
     
    //Compte le nombre de demande traitées
    	$requete2 = mysql_query("SELECT Etat FROM dossier_tbl where Etat='traité' and service='$login' ");
    	$nbreLignes2 = mysql_num_rows($requete2);
     
    //Select Moyenne date de demande
     
     
     
     
    	$req = mysql_query("SELECT AVG(DATEDIFF(date_de_demande, date_de_remise)) FROM dossier_tbl where service='$service'");
     
    $res = mysql_fetch_row($req);
     
     
     
     
     
     
     }
     
     
     
     //Si le formulaire n'a pas encore été validé, on n'affiche pas les erreurs
      if (empty($_POST['service'])) $infos = '';
     
     //Si il y a eu une erreur ou si le formulaire n'a pas encore été validé (Facile à savoir, tant que le formulaire n'est pas validé,  est vide), on l'affiche
         if ($infos != '' || empty($_POST['service'])):
         //Affichage des informations d'erreur au début du formulaire
         ?>
    <html>
    <head>
    <title>Ajouter une annonce</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <link href="styles.css" rel="stylesheet" type="text/css">
    </head>
    <?php include_once('haut.php'); ?>
    <body>
    <table width="75%" border="0" align="center">
      <tr>
    	    <div class="titre">- : : : Statistiques : : : -</div>
    	 <p align="center">
      </tr>
      <tr>
        <td height="77">
    <div align="left"> 
            <p align="left"><u>Pour visualiser les statistiques selon les services  le nom du service dans la liste deroulante et cliquer sur envoyer. </u></p>
     
          </div>
          </td>
      </tr>
    </table>
    <div align="left"></div>
    <font color="#FF0000" face="Verdana, Arial, Helvetica, sans-serif"><?php echo $infos; ?> 
    </font> 
    <form action="ajouter.php" method="post" enctype="multipart/form-data">
        <table width="75%" border="0" class="tableaux" align="center">
          <tr>
     <td>service :</td >
           <td><span class="service"><?php echo $_SESSION['login']; ?><td>
          </tr>
          <tr>
            <td>Nombres de demandes en cours :</td>
            <td><span class="nb_en_cours"><?php echo $nbreLignes1; ?> en 2010<td> 
          </tr>
          <tr>
            <td>Nombres de demande traitées: </td>
            <td>
    		<td><span class="nb_traitees"><?php echo $nbreLignes2; ?> en 2010 </td>
          </tr>
          <tr>
    	     <td>Délai moyen de transmission dossier:</td>
            <td>
    		<td><span class="dm_trans_doss"><?php echo $res[0] ;  ?> </td>
          </tr>
          <tr>
    	  </tr>
          <tr>
            <td>&nbsp;</td>
            <td><div align="right">
     
              </div></td>
          </tr>
        </table>
    </form>
    <div align="center">
     
      <p>&nbsp;</p>
      <p>&nbsp;</p>
    </div>
    </body>
    </html>
    <?php include_once('bas.php'); ?>
         <?PHP ENDif;
         if ($infos == '' && !empty($_POST['MAX_FILE_SIZE'])){
         ?>
    	 <table width="59%" border="0" align="center">
      <tr>
        <td height="100"><img src="images/Groupe_Hospitalier.gif" width="647" height="98"></td>
      </tr>
    </table>
    <br><br>
    	 <b>Le transfert est réussi et votre annonce est en ligne!</b><br><br>
    	 <table class="tableaux">
    	  <tr>
    	   <td>
    	 	<a href="accueil.php"><img src="images/Retour_Accueil.gif" width="94" height="20"></a>
    	   </td>
    	   <td>
    	 	<a href="index.php?erreur=logout"><img src="images/deconnecter.gif" width="101" height="20"></a>
    	   </td>
    	  </tr>
    	 </table>
    	     	<br><br><center><a href="../index.php"><img src="images/Accueil_site.gif" width="163" height="20"></a></center>
     
         <?PHP  } ?>

  15. #15
    Membre émérite Avatar de Atomya Rise
    Femme Profil pro
    Développeuse Web
    Inscrit en
    Février 2009
    Messages
    443
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeuse Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2009
    Messages : 443
    Par défaut
    Elle est bizarre cette erreur je trouve.... Si tu as bien des dates d'enregistrés, cela ne devrais pas poser de problèmes.

    On va essayer autre chose.

    Tu va ajouter un "or die (mysql_error())" afin de voir qu'elle erreur celui-ci va renvoyer :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $req = mysql_query("SELECT AVG(DATEDIFF(date_de_demande, date_de_remise)) FROM dossier_tbl where service='$service'") or die (mysql_error());
     
    $res = mysql_fetch_row($req);

    Donne nous l'erreur exact qui apparaîtra stp

  16. #16
    Membre émérite Avatar de Atomya Rise
    Femme Profil pro
    Développeuse Web
    Inscrit en
    Février 2009
    Messages
    443
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeuse Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2009
    Messages : 443
    Par défaut
    Suite au MP de Waltcap (@waltcap : merci de continuer exclusivement sur le forum et non par MP) qui m'a donné les codes suivants :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    --
    -- Structure de la table `dossier_tbl`
    --
     
    CREATE TABLE IF NOT EXISTS `dossier_tbl` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `Nom_du_patient` varchar(50) NOT NULL,
      `Prenom_du_patient` varchar(50) NOT NULL,
      `Date_de_naissance` date NOT NULL,
      `Date_de_demande` date NOT NULL,
      `Medecin_suivant_le_patient_dans_le_service` varchar(50) NOT NULL,
      `demande_adressée_par` varchar(50) NOT NULL,
      `service` varchar(50) NOT NULL,
      `Date_de_réponse` date NOT NULL,
      `nombres_de_pages` varchar(50) NOT NULL,
      `Elements_du_dossier_transmis` varchar(50) NOT NULL,
      `Etat` varchar(50) NOT NULL,
      `adressee_à` varchar(20) NOT NULL,
      `cout_reproduction` varchar(11) NOT NULL,
      `pole` varchar(10) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=106 ;

    et statistiques_users.php :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
     
    <?php require_once('connexion.php'); ?>
    <?php
    /*
    -----------------------------------
    ------ SCRIPT DE PROTECTION -------
    -----------------------------------
    */
     
    session_start(); // On relaye la session
    if (session_is_registered("authentification") && $_SESSION['privilege'] == "user"){ // vérification sur la session authentification (la session est elle enregistrée ?)
    // On vérifie également si la session ouverte est bien une session admin et on place ici les éventuelles actions en cas de réussite de la connexion
    }
    else {
    header("Location:index.php?erreur=intru"); // redirection en cas d'echec
    }
    require('fonction_diff_2_date.php');
    $infos = '';
    $nombres_dates ="0";
    $calcule = "0";
     
    //Initialisation des variables du formulaire (mise à '' si elles sont vides)
    empty($_POST['service']) ? $service = '' : $service = $_POST['service'];
    empty($_POST['nb_en_cours']) ? $nb_en_cours = '' : $nb_en_cours = $_POST['nb_en_cours'];
     
     
     {
     $login=$_SESSION['login'];
     
    //Compte le nombre de demande en cours dans la base de donnée
    	mysql_select_db($database_dbprotect, $dbprotect)or die("Erreur de selection de base");
    	$requete1 = mysql_query("SELECT Etat FROM dossier_tbl where Etat='en cours' and service='$login'");
    	$nbreLignes1 = mysql_num_rows($requete1);
     
     
    //Compte le nombre de demande traitées
    	$requete2 = mysql_query("SELECT Etat FROM dossier_tbl where Etat='traité' and service='$login' ");
    	$nbreLignes2 = mysql_num_rows($requete2);
     
    //Select Moyenne date de demande
     
     
     
     
    	$req = mysql_query("SELECT AVG(DATEDIFF(date_de_demande, Date_de_réponse)) FROM dossier_tbl where service='$service'") or die (mysql_error());
     
     
    $res = mysql_fetch_row($req);
     
     
     
     
     
     
     }
     
     
     
     //Si le formulaire n'a pas encore été validé, on n'affiche pas les erreurs
      if (empty($_POST['service'])) $infos = '';
     
     //Si il y a eu une erreur ou si le formulaire n'a pas encore été validé (Facile à savoir, tant que le formulaire n'est pas validé,  est vide), on l'affiche
         if ($infos != '' || empty($_POST['service'])):
         //Affichage des informations d'erreur au début du formulaire
         ?>
    <html>
    <head>
    <title>Ajouter une annonce</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <link href="styles.css" rel="stylesheet" type="text/css">
    </head>
    <?php include_once('haut.php'); ?>
    <body>
    <table width="75%" border="0" align="center">
      <tr>
    	    <div class="titre">- : : : Statistiques : : : -</div>
    	 <p align="center">
      </tr>
      <tr>
        <td height="77">
    <div align="left"> 
            <p align="left"><u>Pour visualiser les statistiques selon les services  le nom du service dans la liste deroulante et cliquer sur envoyer. </u></p>
     
          </div>
          </td>
      </tr>
    </table>
    <div align="left"></div>
    <font color="#FF0000" face="Verdana, Arial, Helvetica, sans-serif"><?php echo $infos; ?> 
    </font> 
    <form action="ajouter.php" method="post" enctype="multipart/form-data">
        <table width="75%" border="0" class="tableaux" align="center">
          <tr>
     <td>service :</td >
           <td><span class="service"><?php echo $_SESSION['login']; ?><td>
          </tr>
          <tr>
            <td>Nombres de demandes en cours :</td>
            <td><span class="nb_en_cours"><?php echo $nbreLignes1; ?> en 2010<td> 
          </tr>
          <tr>
            <td>Nombres de demande traitées: </td>
            <td>
    		<td><span class="nb_traitees"><?php echo $nbreLignes2; ?> en 2010 </td>
          </tr>
          <tr>
    	     <td>Délai moyen de transmission dossier:</td>
            <td>
    		<td><span class="dm_trans_doss"><?php echo $res ;  ?> </td>
          </tr>
          <tr>
    	  </tr>
          <tr>
            <td>&nbsp;</td>
            <td><div align="right">
     
              </div></td>
          </tr>
        </table>
    </form>
    <div align="center">
     
      <p>&nbsp;</p>
      <p>&nbsp;</p>
    </div>
    </body>
    </html>
    <?php include_once('bas.php'); ?>
         <?PHP ENDif;
         if ($infos == '' && !empty($_POST['MAX_FILE_SIZE'])){
         ?>
    	 <table width="59%" border="0" align="center">
      <tr>
        <td height="100"><img src="images/Groupe_Hospitalier.gif" width="647" height="98"></td>
      </tr>
    </table>
    <br><br>
    	 <b>Le transfert est réussi et votre annonce est en ligne!</b><br><br>
    	 <table class="tableaux">
    	  <tr>
    	   <td>
    	 	<a href="accueil.php"><img src="images/Retour_Accueil.gif" width="94" height="20"></a>
    	   </td>
    	   <td>
    	 	<a href="index.php?erreur=logout"><img src="images/deconnecter.gif" width="101" height="20"></a>
    	   </td>
    	  </tr>
    	 </table>
    	     	<br><br><center><a href="../index.php"><img src="images/Accueil_site.gif" width="163" height="20"></a></center>
     
         <?PHP  } ?>

    ainsi que de son index1.php :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
     
    <?php require_once('connexion.php'); ?>
    <?php
    session_start(); // début de session
     
    if (isset($_POST['login'])){ // execution uniquement apres envoi du formulaire (test si la variable POST existe)
            $login = addslashes($_POST['login']); // mise en variable du nom d'utilisateur
            $pass = addslashes(md5($_POST['pass'])); // mise en variable du mot de passe chiffré à l'aide de md5 
            
    // requete sur la table administrateurs (on récupère les infos de la personne)
    mysql_select_db($database_dbprotect, $dbprotect);
    $verif_query=sprintf("SELECT * FROM utilisateurs WHERE login='$login' AND pass='$pass'"); // requête sur la base administrateurs
    $verif = mysql_query($verif_query, $dbprotect) or die(mysql_error());
    $row_verif = mysql_fetch_assoc($verif);
    $utilisateur = mysql_num_rows($verif);
     
            
            if ($utilisateur) {     // On test s'il y a un utilisateur correspondant
            
                session_register("authentification"); // enregistrement de la session
                    
                    // déclaration des variables de session
                    $_SESSION['privilege'] = $row_verif['privilege']; // le privilège de l'utilisateur (permet de définir des niveaux d'utilisateur)
                    $_SESSION['nom'] = $row_verif['nom']; // Son nom
                    $_SESSION['prenom'] = $row_verif['prenom']; // Son Prénom
                    $_SESSION['login'] = $row_verif['login']; // Son Login
                    $_SESSION['pass'] = $row_verif['pass']; // Son mot de passe (à éviter)
                    
                    header("Location:accueil.php"); // redirection si OK
            }
            else {
                    header("Location:index.php?erreur=login"); // redirection si utilisateur non reconnu
            }
    }
     
     
    // Gestion de la  déconnexion
    if(isset($_GET['erreur']) && $_GET['erreur'] == 'logout'){ // Test sur les paramètres d'URL qui permettront d'identifier un contexte de déconnexion
            $prenom = $_SESSION['prenom']; // On garde le prénom en variable pour dire au revoir (soyons polis :-)
            session_unset("authentification");
            header("Location:index.php?erreur=delog&prenom=$prenom");
    }
    ?>
    <html>
    <head>
    <title>Authentification recrutements</title>
    <link href="styles.css" rel="stylesheet" type="text/css">
    </head>
    <?php include_once('haut.php'); ?>
    <body>
    <form action="" method="post" name="connect">
      <p align="center" class="titre">&nbsp;</p>
      <p align="center" class="title">
        <?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "login")) { // Affiche l'erreur  ?>
        <strong class="erreur">Echec d'authentification !!! &gt; login ou mot de passe incorrect</strong>
        <?php } ?>
        <?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "delog")) { // Affiche l'erreur ?>
        <strong class="reussite">D&eacute;connexion r&eacute;ussie... A bient&ocirc;t <?php echo $_GET['prenom'];?> !</strong>
        <?php } ?>
        <?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "intru")) { // Affiche l'erreur ?>
        <strong class="erreur">Echec d'authentification !!! &gt; Aucune session n'est ouverte ou vous n'avez pas les droits pour afficher cette page</strong>
        <?php } ?>
      </p>
      <p align="center"><u>Merci de vous identifiez avant de diffuser ou de supprimer 
        une annonce</u></p>
      <p align="center">&nbsp;</p>
      <table width="300"  border="0" align="center" cellpadding="10" cellspacing="0" bgcolor="#eeeeee" class="tableaux">
        <tr>
     
    	<?php if($_POST['login1'] == "Pole1") { // Affichage conditionnel : si et seulement si l'utilisateur est connecté avec le privilege utilisateur simple ?>
    	<td width="50%""><div align="right">Identifiant:</div></td>
                     <td><select name="login" id="login">
                     <option value="user">user</option>
             <option value="Endocrinologie">Endocrinologie</option>
             <option value="toto">toto</option>
                     <option value="dir">dir</option>
                     <?php   }?>
                     
                            <?php if($_POST['login1'] == "Pole2") { // Affichage conditionnel : si et seulement si l'utilisateur est connecté avec le privilege utilisateur simple ?>
            <td width="50%""><div align="right">Identifiant:</div></td>
    		 <td><select name="login" id="login">
    		 <option value="user">user2</option>
             <option value="Endocrinologie">Endocrinologie2</option>
             <option value="toto">toto</option>
    		 <option value="dir">dir</option>
    		 <?php   }?>
     
    	<?php if($_POST['login1'] == "Hopital") { // Affichage conditionnel : si et seulement si l'utilisateur est connecté avec le privilege utilisateur simple ?>
    	<td width="50%""><div align="right">Identifiant:</div></td>
                     <td><select name="login" id="login">
                     <option value="dir">dir</option>
                     <?php   }?>
                     
            
                            <?php if($_POST['login1'] == "regi") { // Affichage conditionnel : si et seulement si l'utilisateur est connecté avec le privilege utilisateur simple ?>
            <td width="50%""><div align="right">Identifiant:</div></td>
    		 <td><select name="login" id="login">
    		 <option value="regi">regi</option>
    		 <?php   }?>
     
     
     
        </tr>
        <tr>
          <td width="50%""><div align="right">Mot de passe:</div></td>
          <td width="50%"><input name="pass" type="password" id="pass"></td>
        </tr>
        <tr>
          <td height="34" colspan="2"><div align="center">
              <input type="submit" name="Submit" value="Se connecter">
          </div></td>
        </tr>
      </table>
      <p>&nbsp;</p></form>
     
    </body>
    </html>

    Voici la réponse que je lui apporte :

    Tout d'abord, quelques erreurs sont à modifié impérativement !

    1- tu n'a pas de champ appelé "date_de_remise"
    2- tu as des champs avec accent ce qui est fortement déconseillé.
    3- Ta clause WHERE dans ta requête renvoie null puisque $service est attribué à rien.
    4- ton champs Date_de_demande possède un D et non un d (très important le capitale et minuscule)

    Voici les problèmes principaux.

    D'après ce que j'ai compris, c'est en fonction du login que tu détermine tes statistiques, donc c'est le $login que tu dois utiliser dans ta clause Where.

    Maintenant, pour te montrer que la requête fonctionne bien, remplace ton code pour la moyenne date par celui-ci :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    //Select Moyenne date de demande
    $req = mysql_query("SELECT AVG(DATEDIFF(NOW(), Date_de_demande)) FROM dossier_tbl where service='$login' ") or die (mysql_error());
    $res = mysql_fetch_row($req);

    Et pour l'echo, remets bien le $res[0] ! sinon, tu aura un array automatique si tu enlève [0] !

    Évidement sans champ de Date_de_remise, j'ai dû utiliser NOW() qui signifie en sql maintenant.

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 34
    Par défaut
    Bonjour merci pour votre aide très précieuse.
    Ce que vous m avez envoyé fonctionne parfaitement

    Mais je voudrais faire une moyenne entre Le champ"Date_de_demande" et le champ "Date_de_réponse" en sachant que dans le "champ Date_de_demande" il y a des dates à 0000-00-00 et je voulais savoir aussi si c'était grave ? pour effectuer une moyenne ?

  18. #18
    Membre émérite Avatar de Atomya Rise
    Femme Profil pro
    Développeuse Web
    Inscrit en
    Février 2009
    Messages
    443
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeuse Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2009
    Messages : 443
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Mais je voudrais faire une moyenne entre Le champ"Date_de_demande" et le champ "Date_de_demande"
    Heuuu faire une moyenne d'une même valeur ???


    Je pense qu'il y a un soucis dans la question, où alors....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dans le "champ Date_de_demande" il y a des dates à 0000-00-00
    Oui, c'est gênant, les données vont être complétement faussées...

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 34
    Par défaut
    Vraiment désoler c'est de ma faute...
    Je suis fatigué.

    Je veux effectuer une moyenne de transition du dossier ces à dire la moyenne de 2 champs "Date_de_demande" et "Date_de_réponse" comme un dossier n'est pas transmit tout de suite certain champ "Date_de_réponse" sont a 0000-00-00

    Je voulais savoir si c'était possible sans fausser les résultats ou comment faire ?

  20. #20
    Membre émérite Avatar de Atomya Rise
    Femme Profil pro
    Développeuse Web
    Inscrit en
    Février 2009
    Messages
    443
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeuse Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2009
    Messages : 443
    Par défaut
    Citation Envoyé par waltcap Voir le message
    Je veux effectuer une moyenne de transition du dossier ces à dire la moyenne de 2 champs "Date_de_demande" et "Date_de_réponse"
    Oui, il te suffit de changer le now() par ton champ Date_de_réponse bien que je t'ai expliquer que les accents dans les noms des champs ne sont pas terrible...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req = mysql_query("SELECT AVG(DATEDIFF(Date_de_réponse, Date_de_demande)) FROM dossier_tbl where service='$login' ") or die (mysql_error());
    Citation Envoyé par waltcap Voir le message
    comme un dossier n'est pas transmit tout de suite certain champ "Date_de_réponse" sont a 0000-00-00

    Je voulais savoir si c'était possible sans fausser les résultats ou comment faire ?
    C'est possible bien sûr, mais tes résultats seront automatiquement faussées puisque tu inclus des dates à 0 ta moyenne va baisser..
    Imagine, quand tu va/allais à l'école, et que tu as/avais des 0, ben ta moyenne chute/chutais drôlement ici, c'est pareil ^^

    Enfin, il me semble bien sûr...

    Mais si tu fais la différence entre 0000-00-00 et 0000-00-00 le résultat sera -1
    Donc.. pas terrible...

    Dans ce cas, je pense qu'il faut que tu fasses un tri afin de n'inclure que les dossier qui ont eu une réponse.

    Genre, tu insères un champs supplémentaire en tinynt(1) et si il y a une réponse tu le fixe a 1 sinon 0. Ensuite tu modifie ta requête en conséquence avec une clause WHERE.

Discussions similaires

  1. [MySQL] date et moyenne date
    Par waltcap dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 25/10/2010, 23h10
  2. Déclencher un script à une date précise
    Par sebac dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 29/09/2010, 21h32
  3. Script Modif date systeme à J+1
    Par teknokiki dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 20/05/2010, 14h17
  4. [Shell Script] Récupérer date de modif et touch
    Par lavazavio dans le forum BSD
    Réponses: 2
    Dernier message: 26/11/2008, 17h10
  5. Executer un script à une date précise.
    Par bobchovit dans le forum VBScript
    Réponses: 2
    Dernier message: 12/11/2007, 09h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo