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 :

récupérer valeur précédente


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 18
    Points : 9
    Points
    9
    Par défaut récupérer valeur précédente
    Bonjour, j'ai un petit problème car j'effectue un requête SQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sql="select nomPatient, prenomPatient, nomMedecin from examen ex, patient p, medecin m, entreprise e where ex.idpatient = p.idPatient and ex.idMedecin=m.idmedecin and ex.idEntreprise = e.idEntreprise and e.idEntreprise = '".$idEntreprise."' and dateTest >= '".$annee1."' AND dateTest <= '".$annee2."' order by dateTest";
    Puis j'affiche les résultats :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    while($data1 = mysql_fetch_array($req2))
    {
            echo '<tr><td><b>'.$data1['nomMedecin'].'</b></td>
            <td><b>'.$data1['nomPatient'].'</b></td>
            <td><b>'.$data1['prenomPatient'].'</b></td></tr>';
    }
    Tous marche bien sauf que je voudrai affiché une seul fois le nom du médecin s'il est le même ou sinon quand il n'est pas le même, afficher le nouveau nom.
    Donc pour cela, je voudrai comparer la valeur précédente avec la nouvelle valeur qui passe dans le while, comme ça, je compare les deux valeurs et si elles sont les mêmes je n'insère pas le nom du médecin et s'ils ne sont pas les mêmes alors j'affiche la nouvelle valeur.

    Mais le problème est que je ne sais pas comment récupérer la valeur précédente pour comparer.
    Je viens donc vers vous pour demander de l'aide.

    Merci d'avance

  2. #2
    Expert éminent sénior

    Avatar de FirePrawn
    Homme Profil pro
    Consultant technique
    Inscrit en
    Mars 2011
    Messages
    3 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique

    Informations forums :
    Inscription : Mars 2011
    Messages : 3 179
    Points : 19 373
    Points
    19 373
    Par défaut
    Bonjour,

    Un DISCTINCT ne suffit pas ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    => LE SQL de A à Z : 4e partie - groupage et ensembles

    1/ modifier la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql="select nomPatient, prenomPatient, nomMedecin from [..] 
    GROUP BY nomMedecin ORDER BY dateTest DESC, nomMedecin ASC, nomPatient ASC";
    2/ affichage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    $nom_medecin_precedent = '';
    while($data1 = mysql_fetch_array($req2))
    {
            if($data1['nomMedecin'] != $nom_medecin_precedent){
                    echo '<tr><td><b>'.$data1['nomMedecin'].'</b></td>';
            } else {
                    echo '<tr><td>&nbsp;</td>';
            }
            $nom_medecin_precedent = $data1['nomMedecin'];
            echo '<td><b>'.$data1['nomPatient'].'</b></td>
            <td><b>'.$data1['prenomPatient'].'</b></td></tr>';
    }
    ?>
    Dernière modification par FirePrawn ; 04/05/2012 à 09h34. Motif: Merci d'utiliser la balise CODE ( bouton # de l'éditeur ) !

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    non ca ne change rien mais est ce que si dans le while je crée une variable où je stock la valeur et que je compare la variable avec la nouvelle valeur, cela va marché ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    while($data1 = mysql_fetch_array($req2))
    {
           //comparaison ici entre la var et data1[nomMedecin]
           echo '<tr><td><b>'.$data1['nomMedecin'].'</b></td>
           <td><b>'.$data1['nomPatient'].'</b></td>
           <td><b>'.$data1['prenomPatient'].'</b></td></tr>
           <tr><td><br /></td></tr>';
           $valeurPrec = $data1['nomMedecin'];    
    }

  5. #5
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    // premiere lecture, pour mettre à jour $valeurPrec
    // car à la première lecture, c sera forcement le premier médecin
    while($data1 = mysql_fetch_array($req2))
    {
           //comparaison ici entre la var et data1[nomMedecin]
           echo '<tr><td><b>'.$data1['nomMedecin'].'</b></td>
           <td><b>'.$data1['nomPatient'].'</b></td>
           <td><b>'.$data1['prenomPatient'].'</b></td></tr>
           <tr><td><br /></td></tr>';
           $valeurPrec = $data1['nomMedecin'];    
    }

  6. #6
    Invité
    Invité(e)

  7. #7
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Ou alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    // Premiere lecture
    // $valeurPrec = $data1[nomMedecin];
    do
     {
           // test si $valeurPrec <> $data1['nomMedecin']
           echo '<tr><td><b>'.$data1['nomMedecin'].'</b></td>
           <td><b>'.$data1['nomPatient'].'</b></td>
           <td><b>'.$data1['prenomPatient'].'</b></td></tr>
           <tr><td><br /></td></tr>';
           $valeurPrec = $data1['nomMedecin'];    
    }
     while( $data1 = mysql_fetch_array($req2));

    Petite question à jreaux62 le GROUP BY s'utilise lorsque nous utilisons des fonctions dans une requête SQL (genre count), nous pouvons l'utiliser comme celà ?

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    ok merci pour votre aide, ça marche maintenant =D

  9. #9
    Invité
    Invité(e)
    Par défaut
    Pour éviter les cases vides, on devrait pouvoir faire ça :
    1/ modifier la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql="select count(*) AS nombreLigne, nomPatient, prenomPatient, nomMedecin from [..] 
    GROUP BY nomMedecin ORDER BY dateTest DESC, nomMedecin ASC, nomPatient ASC";
    nombreLigne sera le nombre de patient PAR medecin.

    2/ affichage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    $nom_medecin_precedent = '';
    while($data1 = mysql_fetch_array($req2))
    {
            echo '<tr>';
    		if($data1['nomMedecin'] != $nom_medecin_precedent){
                echo '<td rowspan="'.$data1['nombreLigne'].'"><b>'.$data1['nomMedecin'].'</b></td>';
            }
            $nom_medecin_precedent = $data1['nomMedecin'];
            echo '<td><b>'.$data1['nomPatient'].'</b></td>
            <td><b>'.$data1['prenomPatient'].'</b></td></tr>';
    }
    ?>
    A tester...

  10. #10
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Hum oui à tester effectivement car dans ta requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $sql="select count(*) AS nombreLigne, nomPatient, prenomPatient, nomMedecin from [..] 
    GROUP BY nomMedecin ORDER BY dateTest DESC, nomMedecin ASC, nomPatient ASC";
    En sortie: Chaque ligne un medecin avec son compte de nombre de ligne (nombre de patient), j'ai peur de l'accro sur la réccupération de nomPatient, prenomPatient.

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    voila comme j'ai fais finalement :
    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
     
     $nom_medecin_precedent = '';
                    while($data1 = mysql_fetch_array($req2))
                    {
     
                        echo '<tr>';
                        if($data1['nomMedecin'] == $nom_medecin_precedent)
                            echo '<tr><td><b></b></td>';
                        else
                            echo '<tr><td><b>'.$data1['nomMedecin'].'</b></td>';
     
     
                        $nom_medecin_precedent = $data1['nomMedecin'];
     
                        echo '<td><b>'.$data1['nomPatient'].'</b></td>
                        <td><b>'.$data1['prenomPatient'].'</b></td></tr>';
                        echo '<tr><td><br /></td></tr>';
     
     
                    }

  12. #12
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Fench Voir le message
    Hum oui à tester effectivement
    @Fench :
    Perso, j'ai rarement (voire pas) eu l'occasion d'utiliser GROUP BY.
    Mais ça me semble bien adapté dans ce cas.
    Cela dit, je ne connais pas bien le fonctionnement, et mon code précédent est peut-être "à coté de la plaque" !
    Et je n'ai pas eu le temps de tester moi-même (la flemme !)

    Citation Envoyé par dicyz Voir le message
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
                            echo '<tr><td><b></b></td>';
    @dicyz :
    évite les balise vides. Mets plutôt un "blanc" : &nbsp;
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
                            echo '<tr><td>&nbsp;</td>';

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer valeur de date précédente
    Par feldi dans le forum SQL
    Réponses: 35
    Dernier message: 06/12/2011, 14h17
  2. Réponses: 1
    Dernier message: 24/04/2010, 18h36
  3. Cibler une valeur et récupérer sa précédente
    Par darontankian dans le forum Requêtes
    Réponses: 1
    Dernier message: 24/04/2008, 23h51
  4. Récupérer valeur précédente
    Par Hbenne dans le forum Access
    Réponses: 1
    Dernier message: 31/07/2006, 09h36
  5. récupérer valeur d'un ID après insertion
    Par rikidi dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/08/2003, 22h21

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