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

Requêtes MySQL Discussion :

variables tableau dans requettes mysql ... et affichage


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 87
    Points : 46
    Points
    46
    Par défaut variables tableau dans requettes mysql ... et affichage
    Bonjour à tous, j'ai un petit problème : je souhaite faire une requette dans une de mes tables (details_profils_agents) afin de prendre tous les identifiants (id agents) correspondant à un profil (profil gassi).
    Cela est fait , maintenant je souhaite prendre tout ces identifiants pour faire une seconde recherche dans une autre table (agents) afin d'afficher tous les agents dont les id sont sortis lors de ma premiere requette.
    Ensuite enfin si cette requette est validée, je fais une requette multitables pour aller chercher differentes valeur.

    Mon probleme est que je n'arrive pas a sortir de ma table agents tous les agents qui corresponde à ma premiere requette voici mon source :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $req = "SELECT IdAgent FROM details_profils_agents WHERE IdProfilGassi LIKE '%$IdProfilGassi%'";
    $res = mysql_query($req) or die('Erreur SQL !<br />'.$req.'<br />'.mysql_error());
    	if(mysql_num_rows($res)<0)
    	{
    	header("location:RechercheAgentProfilGassi.php?error=-2");
    	exit;
    	}
    	else
    	{
    $temp3=mysql_fetch_array($res);
    $requete="SELECT * FROM agents WHERE IdAgent='".$temp3['IdAgent']."'";
    	}
    j'utilise un $requette car j'ai differente requette qui sont appelée selon le type de recherche.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $query=$requete;
    $result = mysql_query($query) or die('Erreur SQL !<br />'.$query.'<br />'.mysql_error());

    enfin j'affiche mes resultats


    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
    echo "<div align='center' class='Titre'>Administration<br /><span class='menu'>Liste des agents</span></div>
    	<table width='720' border='0' align='center' cellpadding='10' cellspacing='1'>
    	<tr valign='top'>
        <th>Nom</th>
        <th >Prénom</th>
        <th >Entité</th>
        <th >Site</th>
        <th >Consulation</th>
    	</tr>";
     
    	while($temp=mysql_fetch_assoc($result)){
    	$query2 = "SELECT agents.IdAgent, agents.Nom, agents.Prenom, entites.Entite, sites.Site FROM agents, entites, sites WHERE agents.IdAgent='".$temp['IdAgent']."'AND entites.IdEntite='".$temp['IdEntite']."' AND sites.IdSite='".$temp['IdSite']."'";
    	$result2 = @mysql_query ($query2) or die (mysql_error());
     
    	while($temp2=mysql_fetch_assoc($result2)){
    	echo "<tr valign='top' class='TDDonnees'>
        <td >".$temp2['Nom']."</td>
        <td >".$temp2['Prenom']."</td>
        <td >".$temp2['Entite']."</td>
        <td >".$temp2['Site']."</td>
        <td ><a href=\"AfficheAgent.php?IdAgent=".$temp2['IdAgent']."\">[Consulter]</a></td>
      </tr>";
      }
     
      echo "</table>";

    je sui paumé au niveau de l'imbriquaction des requettes.

    merci d'avance

  2. #2
    Membre averti
    Avatar de Strab
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 338
    Points : 330
    Points
    330
    Par défaut
    Tel que tu l'as donné, ton code ne sélectionne que les agents correspondants au premier IdAgent trouvé dans la première requête.
    Lorsque tu fais un mysql_fetch_array, la première ligne du résultat est placée dans le tableau temp3.
    Pour obtenir la deuxième ligne et les suivantes, tu dois réitérer l'appel de mysql_fetch_array.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    /* ... */
    else
    {
       while($temp3=mysql_fetch_array($res))
       {
          $requete="SELECT * FROM agents WHERE IdAgent='".$temp3['IdAgent']."'";
          $result = mysql_query($requete) or die('Erreur SQL !<br />'.$query.'<br />'.mysql_error());
          /* affichage des agents correspondants à cet id
              (3e morceau de code que tu as mis) */
       }
    }
    C'est ce que tu voulais ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 87
    Points : 46
    Points
    46
    Par défaut
    Merci beaucoup !!!

    Cela fonctionne bien mis à part qu'il me reaffiche toujours et dans un second tableau, la dernière ligne que j'affiche dans mon premier tableau .Il me recrée un second tableau identique au premier mais qui ne contient que la derniere ligne j'arrive à ce source :




    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
    if(!empty($IdProfilGassi)) 
    {
    $req = "SELECT IdAgent FROM details_profils_agents WHERE IdProfilGassi LIKE '%$IdProfilGassi%'";
    $res = mysql_query($req) or die('Erreur SQL !<br />'.$req.'<br />'.mysql_error());
    	if(mysql_num_rows($res)<0)
    	{
    	header("location:RechercheAgentProfilGassi.php?error=-2");
    	exit;
    	}
    	else 
    { 
     //Insertion du header
    	require_once("../Include/header.php");
    	//Insertion du menu
    	require_once("../Include/menu.php");
     
    echo "<div align='center' class='Titre'>Administration<br /><span class='menu'>Liste des agents</span></div>
    	<table width='720' border='0' align='center' cellpadding='10' cellspacing='1'>
    	<tr valign='top'>
        <th>Nom</th>
        <th >Prénom</th>
        <th >Entité</th>
        <th >Site</th>
        <th >Consulation</th>
    	</tr>";
     
       while($temp3=mysql_fetch_array($res)) 
       { 
         $requete="SELECT * FROM agents WHERE IdAgent='".$temp3['IdAgent']."'"; 
         $result = mysql_query($requete) or die('Erreur SQL !<br />'.$query.'<br />'.mysql_error()); 
     
    	while($temp=mysql_fetch_assoc($result)){
    	$query2 = "SELECT agents.IdAgent, agents.Nom, agents.Prenom, entites.Entite, sites.Site FROM agents, entites, sites WHERE agents.IdAgent='".$temp['IdAgent']."'AND entites.IdEntite='".$temp['IdEntite']."' AND sites.IdSite='".$temp['IdSite']."'";
    	$result2 = @mysql_query ($query2) or die (mysql_error());
     
    	while($temp2=mysql_fetch_assoc($result2)){
    	echo "<tr valign='top' class='TDDonnees'>
        <td >".$temp2['Nom']."</td>
        <td >".$temp2['Prenom']."</td>
        <td >".$temp2['Entite']."</td>
        <td >".$temp2['Site']."</td>
        <td ><a href=\"AfficheAgent.php?IdAgent=".$temp2['IdAgent']."\">[Consulter]</a></td>
      </tr>";
      }
      }
     } 
    echo "</table>";
     
    //insertion du footer
    require_once("../Include/footer.php");    
    } 
    }

  4. #4
    Membre averti
    Avatar de Strab
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 338
    Points : 330
    Points
    330
    Par défaut
    Je n'avais pas fait gaffe au départ car j'avais lu ton code en vitesse, mais j'ai l'impression que Idagent est la clé primaire de agents, c'est le cas ?

    Parce que si oui, alors la 2e boucle while ne sert à rien, car tu as une seule ligne de résultat. De même, si IdSite et IdEntite sont les clés de sites et entites, la 3e boucle ne sert pas.
    Il faut dans ce cas supprimer le while et juste faire une affectation.

    Je n'ai pas trop compris ton nouveau problème, mais peut-être que c'est lié ?

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

Discussions similaires

  1. [MySQL] problème de variable dans requette mysql
    Par luc648 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 15/04/2009, 14h15
  2. afficher une variable tableau dans une JSP
    Par johnnywalker dans le forum Struts 1
    Réponses: 11
    Dernier message: 04/03/2007, 22h02
  3. Insérez variable PHP dans requête Mysql
    Par jeremie74 dans le forum Requêtes
    Réponses: 11
    Dernier message: 22/08/2006, 18h21
  4. concatenation dans requette mysql
    Par mulbek dans le forum Requêtes
    Réponses: 30
    Dernier message: 24/10/2005, 08h56
  5. Réponses: 4
    Dernier message: 12/10/2005, 21h22

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