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 :

Traitement de tous les résultats d'une requete


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Bioinformaticienne
    Inscrit en
    Novembre 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 49
    Par défaut Traitement de tous les résultats d'une requete
    Bonjour à tous!

    J'ai créé une base de données Mysql qui contient 16 tables contenant des informations à propos d'entreprises.
    J'ai créé une interface PHP pour l'interroger. Il y a donc un formulaire d'interrogation pour retrouver toutes les informations d'une entreprise à partir de son nom, en somme ressortir toutes les infos contenues dans ma base.

    Mon problème est que j'ai la sensation que lorqu'il y a plusieurs lignes de résultats d'une requête, elles ne sont pas toutes être traitées. Par exemple, une entreprise peut avoir plusieurs produits. Voici donc mon code épuré afin de faciliter la compréhension :

    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
     
    //Product tables
    	$prodidQuery="SELECT Product_id_product FROM Company_has_Product WHERE Company_id_company=$company_id";
    	$resultat=mysql_query($prodidQuery) or die(mysql_error());
            $resultat_numrows=mysql_num_rows($resultat);//donne le nombre de ligne
    	while($row=mysql_fetch_array($resultat))
            {
    		$product_id=$row['Product_id_product'];
    		echo "product id vaut $product_id\t";
    		$prodQuery="SELECT * FROM Product WHERE id_product=$product_id";
    	        $resultat=mysql_query($prodQuery) or die(mysql_error());
    	        $nbproduits=mysql_num_rows($resultat);//donne le nombre de ligne
    	        while($row=mysql_fetch_array($resultat))
    	        {
    			$champ1=$row['champ1'];
                            $champ2=$row['champ2'];
    			//Assay table
    			$hasAssayQuery="SELECT Assay_id_assay FROM Assay_has_Product WHERE Product_id_product=$product_id";
    			$resultat=mysql_query($hasAssayQuery) or die(mysql_error());
                            $resultat_numrows=mysql_num_rows($resultat);//donne le nombre de ligne
                            while($row=mysql_fetch_array($resultat)){
                                    $assay_id=$row['Assay_id_assay'];
    				echo "assay id vaut $assay_id\n";
    				$assayQuery="SELECT * FROM Assay WHERE id_assay=$assay_id";
    				$resultat=mysql_query($assayQuery) or die(mysql_error());
    	                        $resultat_numrows=mysql_num_rows($resultat);//donne le nombre de ligne
    	                        while($row=mysql_fetch_array($resultat)){
    					$champ3=$row['champ3'];
    					$champ4=$row['champ4'];
    				}
    			}
    		echo "swot id vaut $swot_id\n";	
    			//SWOT Table
                            $swotQuery="SELECT * FROM SWOT WHERE id_SWOT=$swot_id";
                            $resultat=mysql_query($swotQuery) or die(mysql_error());
                            $resultat_numrows=mysql_num_rows($resultat);//donne le nombre de ligne
                            while($row=mysql_fetch_array($resultat)){
                                    $champ5=$row['champ5'];
                                    $champ6=$row['champ6'];
    		}	
    	}
    J'ai laissé les lignes d'echo de test. Mon 1er echo affichant le product id ne s'affiche qu'une seule fois alors qu'en réalité il y a 5 produits...

    Je ne sais pas si j'ai été très claire donc n'hésitez pas à me poser des questions. Aussi toute optimisation ou conseil de code est le bienvenu

    Merci d'avance

  2. #2
    Membre éprouvé Avatar de lou-03
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 156
    Par défaut
    Salut,

    C'est normal. Tu utilises plusieurs fois la variable $resultat et comme tu utilises des while imbriqués tu écrases ta variable.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $resultat = mysql_query($prodidQuery) or die(mysql_error());
    $resultat_numrows = mysql_num_rows($resultat);
    while($row = mysql_fetch_array($resultat)){
        $product_id = $row['Product_id_product'];
        echo "product id vaut $product_id\t";
        $prodQuery = "SELECT * FROM Product WHERE id_product=".intval($product_id);
        $resultat = mysql_query($prodQuery) or die(mysql_error());
        $nbproduits = mysql_num_rows($resultat);
        while($row = mysql_fetch_array($resultat))
        // [...]
    Le $resultat bleu écrase ce que tu avais dans le &resultat violet. Il faut que tu donne à chaque variable résultat des noms différents.

  3. #3
    Membre averti
    Profil pro
    Bioinformaticienne
    Inscrit en
    Novembre 2009
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 49
    Par défaut
    Et voilà ce qui arrive quand on passe trop de temps sur un bout de code : on ne voit plus les évidences!!!!!!!!!!!!!

    En tout cas, mille mercis!!! Je me sens un peu bête du coup

  4. #4
    Membre éprouvé Avatar de lou-03
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 156
    Par défaut
    T'inquiètes pas ça arrive à tout le monde ce genre d'erreurs

Discussions similaires

  1. Réponses: 6
    Dernier message: 01/08/2012, 12h47
  2. [SQL] Comment je peux mettre les résultat d'une requete dans un fichier
    Par Maria1505 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 10/12/2006, 21h44
  3. Réponses: 3
    Dernier message: 04/07/2006, 16h34
  4. recupérer tous les id d'une requete d'insertion etendue
    Par cmoiscrat dans le forum Requêtes
    Réponses: 5
    Dernier message: 16/02/2006, 17h27
  5. Réponses: 1
    Dernier message: 13/04/2005, 14h41

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