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 :

Une fonction qui renvoie plusieurs valeurs ?


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2010
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 54
    Points : 30
    Points
    30
    Par défaut Une fonction qui renvoie plusieurs valeurs ?
    Bonjour

    Je n'arrive pas à créer une fonction qui me retourne plus de 2 champs d'une table.

    Voici l'explication :

    J'ai crée fonction qui récupère 3 champs de plusieurs valeurs dans une base de données.

    Ma base contient les champs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    id_table
    champ1
    champ2
    J'ai crée une fonction qui recupere les différentes entrées de cette table.

    Dans cette fonction je déclare un tableau
    J'arrive à injecter id_table et champ1 dans ce tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    while ($row = mysql_fetch_array($req)) {
    $id_table = $row["id_table"];
    $champ1 = $row["champ1"];
    $champ2 = $row["champ2"];
    $tableau[$id_table] = $champ1;
    }
    return $tableau;
    Mais comment faire pour récupérer également la valeur de $champ2 ?

    Merci de votre aide !

  2. #2
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    Bonjour,

    il existe plusieurs façon de faire...
    par exemple :

    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
     
     
    function getMaTable() 
    {
       $toReturn=array();
     
       // QUERY
     
       while ($row = mysql_fetch_array($req)) 
       {
          $toReturn[] = array($row["id_table"], $row["champ1"], $row["champ2"]);
       }
     
       return $toReturn;
    }
     
     
    $test= getMaTable();
    foreach($test as $t) {
       list($id_table, $champ1, $champ2) = $t; 
     
       echo "id_table : ".$id_table."<br/>";
       echo "champ1 : ".$champ1."<br/>";
       echo "champ2 : ".$champ2."<br/><br/>";
     
    }

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2010
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 54
    Points : 30
    Points
    30
    Par défaut
    Cool merci, je vais tester et voir si cela fonctionne

    Et comment faire pour afficher les résultats ?

    Car d'habitude je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $mon_tableau = getMaTable() ;
    foreach($mon_tableau as $id_table=>$champ1)
    	    { 	    
    			echo "$id_table : $champ1 ";
    		}
    Mais là je ne vois pas comment afficher aussi champ2

    Merci

  4. #4
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    regardes bien en bas du code que je t'ai mis...

    [edit]
    oups, j'ai mal lu...

    alors tu peux faire aussi comme tu avais l'habitude :

    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
    function getMaTable() 
    {
       $toReturn=array();
     
       // QUERY
     
       while ($row = mysql_fetch_array($req)) 
       {
          $toReturn[] = array("id_table" => $row["id_table"], "champ1" => $row["champ1"], "champ2" => $row["champ2"]);
       }
     
       return $toReturn;
    }
     
     
    $test= getMaTable();
    foreach($test as $t) {
       foreach ($t as $key => $item) { 
          echo $key." : ".stripslashes($item)."<br/>";
       }
    }
    bon développement


    [/edit]


  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    pourquoi pas faire direct :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $toReturn[] = $row;
    avec un mysql_fetch_assoc

  6. #6
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    pourquoi pas faire direct :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $toReturn[] = $row;
    avec un mysql_fetch_assoc
    peut-être parce que cela part d'une question bien précise ( faut y aller en douceur...)


  7. #7
    Nouveau membre du Club
    Inscrit en
    Mai 2010
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 54
    Points : 30
    Points
    30
    Par défaut
    C'est nickel ! Merci

    En effet je n'avais pas vu le code que tu proposais pour afficher les résultats

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    Citation Envoyé par ska_root Voir le message
    peut-être parce que cela part d'une question bien précise ( faut y aller en douceur...)

    c'est plutôt au niveau de la requête de la base qu'il faut le faire, ca sert a rien de récupérer des valeurs dont on ne se sert pas, comme pour le fetch_array ca sert a rien de choisir se mode si on se sert pas de la partie "row"

  9. #9
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    Je ne vais pas débattre des heures la-dessus... je comprends très bien ce que tu dis, mais chuckichucki a une bride de code qu'il veut exploiter d'une façon, il veut comprendre pourquoi ça marche pas.

    M'enfin je crois.

    Évidemment dans un deuxième temps, il serait bon de s'intéresser au fonctionnement et de vouloir optimiser son code, j'en conviens...

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    Citation Envoyé par ska_root Voir le message
    Je ne vais pas débattre des heures la-dessus... je comprends très bien ce que tu dis, mais chuckichucki a une bride de code qu'il veut exploiter d'une façon, il veut comprendre pourquoi ça marche pas.

    M'enfin je crois.

    Évidemment dans un deuxième temps, il serait bon de s'intéresser au fonctionnement et de vouloir optimiser son code, j'en conviens...
    je comprend bien, je me posais juste la question

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 05/02/2015, 14h47
  2. Fonction qui retourne plusieurs valeurs !
    Par casafa dans le forum C++
    Réponses: 20
    Dernier message: 23/04/2014, 16h56
  3. [WD17] Créer une procédure qui renvoie plusieurs valeurs
    Par meganulos dans le forum WinDev
    Réponses: 9
    Dernier message: 27/02/2013, 20h21
  4. Fonction d'une DLL qui retourne plusieur valeur
    Par vtk37 dans le forum Débuter
    Réponses: 9
    Dernier message: 27/05/2009, 10h01
  5. [Système] Fonction qui renvoie plusieurs valeurs
    Par sebhm dans le forum Langage
    Réponses: 6
    Dernier message: 26/01/2007, 08h43

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