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

Langage PHP Discussion :

[Tableaux] Renvoi de plusieurs tableaux par une fonction


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 42
    Points : 20
    Points
    20
    Par défaut [Tableaux] Renvoi de plusieurs tableaux par une fonction
    Bonjour à tous,

    Je suis en train d'essayer de faire une fonction qui à la suite d'une requête doit me retourner des tableaux de résultat. En fait le résultat de ma requête à ma BDD comporte plusieurs lignes et je veux donc renvoyer chaque ligne sous forme de tableau.

    Voici ma fonction :

    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
     
    function pignon($type)
    {
    	$req_pignon=mysql_query("SELECT pignon_id,type_id,pas,nb_dents,pignon_etoile,pignon_anneau,anneau FROM pignon 
    		WHERE type_id=$type");
    	while($result_pignon=mysql_fetch_row($req_pignon))
    		{
    		$tableau_pignon=array();
    		$tableau_pignon[0]=$result_pignon[2];
    		$tableau_pignon[1]=$result_pignon[3];
    		$tableau_pignon[2]=$result_pignon[4];
    		$tableau_pignon[3]=$result_pignon[5];
    		$tableau_pignon[4]=$result_pignon[6];
    		return $tableau_pignon;
    		}
    }
    Et voici mon 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
     
    echo "<br><br><strong>PIGNON DE CHAINE</strong><br><br>";
    	if($p!='')
    		{echo "Pas : ".$p."<br>";}
    	if($nb_dents!=0)
    		{echo "Nombre de dents : ".$nb_dents."<br>";}
    	if($pignon_etoile!='')
    		{echo "Référence du pignon étoile : ".$pignon_etoile."<br>";}
    	if($pignon_anneau!='')
    		{echo "Référence du pignon anneau : ".$pignon_anneau."<br>";}
    	if($anneau!='')
    		{echo "Référence de l'anneau associé : ".$anneau."<br>";}
    	if(($p=='')&&($nb_dents==0)&&($pignon_etoile=='')&&($pignon_anneau=='')&&($anneau==''))
    		{echo "Aucun Pignon de chaîne ne correspond à cet article.";}
    Le problème est que je n'obtient que la première ligne en résultat. Que dois-je faire ????

    Merci d'avance.

    ...Benoit...

  2. #2
    Membre éclairé
    Avatar de efficks
    Inscrit en
    Septembre 2005
    Messages
    712
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 712
    Points : 776
    Points
    776
    Par défaut
    Un peu de compréhension de ce que l'on fait aide toujours à comprendre notre problème!!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function pignon($type)
    {
    	$req_pignon=mysql_query("SELECT pignon_id,type_id,pas,nb_dents,pignon_etoile,pignon_anneau,anneau FROM pignon WHERE type_id=$type");
     
    	$tableau_pignon=array();
    	$i=0;
    	while($result_pignon=mysql_fetch_row($req_pignon))
    		{
    			$tableau_pignon[$i]=$result_pignon[$i+2];
    			$i++;
    		}
    	return $tableau_pignon;
    }
    Avant de poster : FAQ, tutos, rechercher, google, ... Après :
    Merci

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 42
    Points : 20
    Points
    20
    Par défaut
    Ok, je viens de structurer ma fonction comme tu viens de me le conseiller sauf que tu avais oublié une boucle for, c'est clair que c'est mieux, mais bon ça me donne toujours rien.

    En fait je viens de comprendre mon problème, c'est que je ne fait pas de boucle dans mon affichage, il faudrait que je fasse un while qui dirait tant que la fonction retourne des données, afficher résultat.
    Comment faire ?

    Ma fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    function pignon($type)
    {
    	$req_pignon=mysql_query("SELECT pignon_id,type_id,pas,nb_dents,pignon_etoile,pignon_anneau,anneau FROM pignon 
    		WHERE type_id=318");
    	$tableau_pignon=array();
    	$i=0;
    	while($result_pignon=mysql_fetch_row($req_pignon))
    		{
    		for($i=0;$i<5;$i++)
    			{$tableau_pignon[$i]=$result_pignon[$i+2];}
    		}
    		return $tableau_pignon;
    }
    Mon affichage actuel :

    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
     
    	$resultat_pignon=pignon($essai);
    	//Inscription des réferences des pignons dans des variables
    	echo "<br><br><strong>PIGNON DE CHAINE</strong><br><br>";
    	$p=$resultat_pignon[0];
    	$nb_dents=$resultat_pignon[1];
    	$pignon_etoile=$resultat_pignon[2];
    	$pignon_anneau=$resultat_pignon[3];
    	$anneau=$resultat_pignon[4];
     
    	if($p!='')
    		{echo "Pas : ".$p."<br>";}
    	if($nb_dents!=0)
    		{echo "Nombre de dents : ".$nb_dents."<br>";}
    	if($pignon_etoile!='')
    		{echo "Référence du pignon étoile : ".$pignon_etoile."<br>";}
    	if($pignon_anneau!='')
    		{echo "Référence du pignon anneau : ".$pignon_anneau."<br>";}
    	if($anneau!='')
    		{echo "Référence de l'anneau associé : ".$anneau."<br>";}
    	if(($p=='')&&($nb_dents==0)&&($pignon_etoile=='')&&($pignon_anneau=='')&&($anneau==''))
    		{echo "Aucun Pignon de chaîne

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 42
    Points : 20
    Points
    20
    Par défaut
    Après analyse de mon prog, je ne sais pas si c'est l'affichage que je gère mal ou autre chose.
    Personne n'a d'idée

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 194
    Points : 220
    Points
    220
    Par défaut
    salut,
    tu veux que ton tableau resultat contiennent autant de lignes que de resultats avec pour chaque lignne toutes les colonnes, donc c'est un tableau à 2 dimensions:
    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
     
    function pignon($type)
    {
            // demander les colonnes type_id et pignon_id n'est pas necessaire
    	$req_pignon=mysql_query("SELECT pas,nb_dents,pignon_etoile,pignon_anneau,anneau FROM pignon 
    		WHERE type_id=318"); // tu veux utiliser $type non??
    	$tableau_pignon=array();
    	// $i=0; ceci ne sert à rien vu que tu l'utilises dans la boucles
    	while($result_pignon=mysql_fetch_row($req_pignon))
    		{
                    $ligne = array ();
    		for($i=0;$i<5;$i++)
    			{$ligne[$i]=$result_pignon[$i];}
                    array_push ($tableau_pignon, $ligne);
    		}
    		return $tableau_pignon;
    }
    ensuite pour l'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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    $resultat_pignon=pignon($essai);
    if (count ($resultat_pignon) == 0)
    {
      echo "Aucun Pignon de chaîne ";
    }
    else
    {
    foreach ($resultat_pignon as $un_pignon)
    {
    	//Inscription des réferences des pignons dans des variables
    	echo "<br><br><strong>PIGNON DE CHAINE</strong><br><br>";
    	$p=$un_pignon[0];
    	$nb_dents=$un_pignon[1];
    	$pignon_etoile=$un_pignon[2];
    	$pignon_anneau=$un_pignon[3];
    	$anneau=$un_pignon[4];
    	echo "Pas : ".$p."<br>";
            echo "Nombre de dents : ".$nb_dents."<br>";
            echo "Référence du pignon étoile : ".$pignon_etoile."<br>";
            echo "Référence du pignon anneau : ".$pignon_anneau."<br>";
            echo "Référence de l'anneau associé : ".$anneau."<br>";
    }
    }

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 42
    Points : 20
    Points
    20
    Par défaut
    Merci beaucoup coca25,
    C'était bien ça, j'étais sur la piste d'un tableau à deux dimensions mais je n'y arriver pas.
    COOL !!!!!

    A plus.
    ...Benoit...

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

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    Si tu veux des autres détails, regarde aussi cette discussion :
    http://www.developpez.net/forums/sho...d.php?t=260032

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/04/2009, 08h44
  2. Réponses: 2
    Dernier message: 14/09/2007, 15h33
  3. Peut-on ouvrir plusieurs pages par une fonction JS
    Par Ashleycole dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 31/05/2007, 15h42
  4. Réponses: 14
    Dernier message: 09/03/2007, 12h21
  5. Réponses: 13
    Dernier message: 13/10/2006, 00h15

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