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] Déclaration de tableau


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 13
    Points : 13
    Points
    13
    Par défaut [Tableaux] Déclaration de tableau
    Bonjour,

    Une de mes première utilisation de php ... j'essaie de remplir un tableau avec deux éléments. Je voudrais pouvoir ensuite les retrouver facilement.
    Ces éléments sont issus d'une table. Mais je suis perdu dans la syntaxe, pourriez-vous m'aider ?
    Voici ce que j'ai fais:
    Dans ma boucle while, je remplis le tableau avec les deux elements
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $tab[$ligne['idcat']] = $ligne['nomcat'] ;
    J'obtiens un tableau qui fais:
    tab[1]= 'conducteur'
    tab[2]= 'Receptionniste'
    tab[15]= 'Gerant'

    Bien mais maintenant, je voudrais utiliser le contenu de ce tableau dans une requete et voilà ce que j'ai fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    for ($i = 1 ; $i < count($categories)+1; $i++)  // boucle sur mon tableau 
    {
         $recherche = $categories[$i] ;
         $sql= "SELECT nomcat FROM categorie WHERE nomcat = '".$recherche."'";  
     
    		$resultat = mysqli_query($link, $sql);
    		while($ligne = mysqli_fetch_array($resultat))
    		{
    			echo $ligne[nomcat];
                   }
    En fait, avec chaque intitulé, je voudrai récuperer l'Idcat correspondant que j'ai mis dans mon tableau et m'en servir pour ma requete.
    Ca marche en partie mais je ne recupere que 'conducteur' et 'receptioniste' (pas Gerant )
    Je pense que j'ai mal construit mon tableau au depart mais je ne vois pas comment faire !
    En faite, je devrais avoir
    tab[1]= 'conducteur', '1'
    tab[2]= 'Receptionniste', '2'
    tab[3]= 'Gerant', '15'
    qlq chose comme ca mais comment le coder ? et ensuite utiliser la donnée !
    Aie aie aie
    Merci de votre aide

    Pardon mais dans le code ce n'est pas $categories mais bien $tab

  2. #2
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    en fait tu l'as déjà cette structure dans le sens où tu as mis pour chaque élément du tableau le nom de la catégorie en valeur et l'id de la catégorie en clé.

    Tu peux faire ca pour comprendre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    foreach($tab as $cle => $valeur)
    {
    echo "Ma clé est $cle et ma valeur est $valeur<br/>";
    }

  3. #3
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 80
    Points : 54
    Points
    54
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    tab[1]= 'conducteur'
    tab[2]= 'Receptionniste'
    tab[15]= 'Gerant'
    si tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $mes_id = array_keys($tab);
    cela va te retourner un tableau qui a ces valeurs :
    $mes_id = array(1,2,15) ; (et apres tu n'as qu'à parcourir $mes_id comme un simple tableau).

    Je ne saisp a ssi ça a répondu à ta question.... ?



    PS : les tableaux en php commencent à partir de 0, dont ta boucle for il faudrait qu'elle soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for ($i=0; $i<count(tab); $i++)

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 13
    Points : 13
    Points
    13
    Par défaut
    Oui mais le pb, c'est que j'ai l'info "Id" comme index. Et donc quand je balaie ensuite ce tableau avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for ($i = 1 ; $i < count($tab)+1; $i++) 
     
    $recherche = $tab[$i] ;
    J'ai donc 1 tab avec 3 élements dedans, donc je vais faire une boucle ou je vais passer 3 fois (count ($tab)).
    La première fois je vais récupérer $tab[$i] = 'conducteur' (OK)
    La seconde fois $tab[$i] = 'Receptionniste' (OK)
    mais la troisième fois $tab[$i] = '' (KO)
    Je n'irai pas plus loin car on arrive à la fin du count. Et je n'aurai pas récupérer mon élément $tab[15] = 'Gerant' !!!! et c'est cette info qu'il me faut pour ensuite interroger ma base => $recherche = $tab[$i]

  5. #5
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Citation Envoyé par Kiwimenthe
    Et je n'aurai pas récupérer mon élément $tab[15] = 'Gerant' !!!! et c'est cette info qu'il me faut pour ensuite interroger ma base => $recherche = $tab[$i]
    As-tu regardé le foreach dont je t'ai parlé?
    Sinon il faut faire un tableau a deux dimensions pour avoir d'un coté l'id, et de l'autre le nom de la catégorie, mais le foreach est aussi bien.

  6. #6
    Membre du Club
    Inscrit en
    Février 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 80
    Points : 54
    Points
    54
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $tab = array();							
    $tab[1]= 'conducteur';
    $tab[2]= 'Receptionniste';
    $tab[15]= 'Gerant';
     
    $mes_id = array_keys($tab);
    for ($i=0;$i<count($mes_id); $i++){
    	echo "<br>".$tab[$mes_id[$i]]." avec id = ".$mes_id[$i];
    }
    Résultat (j'ai testé) :
    conducteur avec id = 1
    Receptionniste avec id = 2
    Gerant avec id = 15

    car mes_id est comme ça :
    $mes_id[0] = 1
    $mes_id[1] = 2
    $mes_id[2] = 15


    Ca va mieux ?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 13
    Points : 13
    Points
    13
    Par défaut
    Merci Lyna, effectivement j'avais affiché ca mais je dois en faite pouvoir récuperer le nom contenu dans mon tableau et l'ID. Alors je vais me pencher sur la sol proposer par Koopajah

    Si je veux créer un tableau à 2 dimensions (avec des index qui commencent à zéro), je peux écrire ?

    $tab[][$ligne['idcat']] = $ligne['nomcat'] ?


    $tab[][1] = 'conducteur'
    $tab[1][2] = 'Receptionniste'
    $tab[2][15] = 'Gerant'

  8. #8
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Oui tu peux, suffit de tester faut dire
    et j'en déduis que ma solution du foreach (qui semblait etre la plus simple) est passée a la trappe...

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 13
    Points : 13
    Points
    13
    Par défaut
    non, non Koopajah, elle n'est pas passée à la trappe, simplement j'ai constitué mon tableau $tab avec le resultat d'une requete ET pour mon premier index un contenu forcé. J'utilise ce tableau ensuite pour alimenter un combo.
    Voilà ce que cela m'affiche

    Tous les métiers
    conducteur
    Receptionniste
    Gerant

    Et ici, le 'Tous les métiers', c'est moi qui l'ai renseigné avant ma boucle pour remplir le tableau. Tout ca marche bien mais c'est ensuite, quand l'utilisateur fait son choix dans la combo et qu'il appui sur 'valider', moi je récupère le contenu (mettons par exemple 'Gerant') et je vais chercher dans mon tableau la clé associée (l'idcat).
    Mais mon pb se pose si l'utilisateur choisi 'Tous les métiers' car là je dois utiliser tout se qu'il y a à l'intérieur de mon tableau SAUF ... la première ligne que j'ai renseigné à la main et qui ne correspond à rien en table (pas de Idcat) Oulala je sais pas si c'est clair là

    C'est pour ca que je fait (faisait) un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for ($i = 1 ; $i < count($categories)+1; $i++)
    Et du coup le foreach parait bien sauf qu'il va me prendre la première valeur du tableau (qui ne correspond à rien) ...

    Aie aie aie, c'est pas simple.
    Désolé mais je débute et donc au tout début les choses n'apparaissent pas aussi simple qu'après qlq mois d'expérience

    Ok, finalement ca marche très bien avec le foreach. Et j'ai rajouter un test à l'intérieur pour exclure la donnée que je ne voulais pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    foreach($categories as $cle => $valeur) 
    	{
    		if ($cle !== 0){echo 'valeur = '.$valeur;} 
    	}
    Mille merci Koopajah

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

Discussions similaires

  1. [Tableaux] Déclaration tableau multidimension
    Par P4board dans le forum Langage
    Réponses: 2
    Dernier message: 22/10/2007, 21h18
  2. [Tableaux] Déclaration d'un tableau dans une classe
    Par rochenico dans le forum Langage
    Réponses: 4
    Dernier message: 22/12/2006, 11h29
  3. [Tableaux] Déclaration d'un tableau à 2 dimensions
    Par kcizth dans le forum Langage
    Réponses: 5
    Dernier message: 04/01/2006, 15h35
  4. [xslt] déclaration de tableau
    Par nemya dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 29/09/2005, 15h13
  5. Réponses: 3
    Dernier message: 26/09/2005, 22h24

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