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

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    février 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : février 2011
    Messages : 6
    Points : 5
    Points
    5

    Par défaut Requête imbriquée (utiliser valeur d'une première requête dans la seconde)

    Bonjour,

    Je cherche depuis plusieurs jours à résoudre un problème probablement assez simple pour certains visiteurs de ce forum.

    Je désir faire une requête imbriquée et ma "sous-requête" utilise un paramètre résultant de la première requête.

    Je m'explique. J'ai deux tables, soit :

    Services
    id
    fr
    en

    donc en gros :
    id | fr
    ---------------------
    1 | Produit 1
    2 | Produit 2
    3 | Produit 3

    chartetarifaires
    Cette table contient plusieurs colonnes, soit, la colonne id ainsi qu'une colonne pour chaque id de service de la table Services. Donc :

    id | 1 | 2 | 3
    ---------------------------------------------
    1 | 125$ | 135$ | 145$
    2 | 110$ | 120$ | 130$
    3 | 100$ | 110$ | 120$
    4 | 90$ | 100$ | 110$

    Je souhaite créer une requête qui listera, pour un id de charte tarifaire choisi, tous les services et le prix. Ce que j'ai jusqu'à présent, c'est ceci :
    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
     
    <?php
    $selectservices="SELECT * FROM services ORDER BY fr ASC";
    	$servicesquery=pg_query($dblocale,$selectservices) or die ('Error in query procedural --> '.pg_last_error());
     
     
    		while($resultservices=pg_fetch_array($servicesquery)) {
    		$idservice=$resultservices['id'];
    		$selectcharte="SELECT * FROM chartestarifaires WHERE id='$id'";
    		$chartequery=pg_query($dblocale,$selectcharte) or die ('Error in query procedural --> '.pg_last_error());
    		$resultcharte=pg_fetch_array($chartequery);
    		$prix='$resultcharte[\''.$idservice.'\'];';
    		$idserv='\''.$idservice.'\'';
     
     
    	?>
        <tr style="border:solid">
          <td style="vertical-align:top;text-align:left"><?php echo $resultservices['fr']; ?></td>
          <td style="vertical-align:top;text-align:left"><?php echo $resultcharte[$idserv]; ?>"/></td>
        </tr>
        <?php
    	 }
    	 ?>
    Mon problème se situe avec l'affichage de $resultcharte[$idserv]. La valeur que je souhaites afficher est donc le prix du service mais je ne parvient pas à afficher la valeur contenu dans cette fichue colonne.

    Est-ce que quelqu'un aurait une solution miracle ? Ou encore, il est aussi fort possible que la structure des tables soit mauvaise, je suis ouvert à toute proposition.

    Merci à l'avance.

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    juin 2003
    Messages
    7 120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2003
    Messages : 7 120
    Points : 11 207
    Points
    11 207

    Par défaut

    il y a là 2 questions à découper en 2 discussions si vous voulez utiliser au mieux ce forum

    1re question : question PHP pour lire le résultat de la requête
    2e question : question base de données pour améliorer la table "chartetarifaires" qui n'est pas du tout optimale (cette question se pose plutôt dans ce sous-forum : http://www.developpez.net/forums/f62...sation/schema/)

    pour la 1re question, affichez le résultat de la requête pour voir ce que vous obtenez. cela se fait avec la fonction http://php.net/var_dump par exemple

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/11/2010, 08h21
  2. Réponses: 4
    Dernier message: 25/02/2009, 14h22
  3. Réponses: 3
    Dernier message: 19/05/2008, 10h36
  4. Réponses: 0
    Dernier message: 25/02/2008, 15h31
  5. Réponses: 3
    Dernier message: 08/08/2006, 15h15

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