[PhP]construire un array avec mes clés

Résolu
P@ Messages postés 1137 Date d'inscription   Statut Membre -  
P@ Messages postés 1137 Date d'inscription   Statut Membre -
Bonjour,

voilà, j'ai fait une requete qui fonctionne.
j'ai réussi a avoir tous mes éléments dans un tableau (array) de tableau.
chaque ligne créant un tableau dans mon tableau
hors je voudrais ajouter chaque comme suit
array([id]=>nom,[id]=>nom);
avec pour id, l'id présent dans ma base et pour nom le champ correspondant
j'ajouterait ces éléments grace à un array_unshift.
mais pour l'instant je ne sais pas comment faire pour

pour linstant pour tableau est comme suit: Array ( [0] => Array ( [0] => 1 [1] => Tous ) [1] => Array ( [0] => 2 [1] => libelle2 ) [2] => Array ( [0] => 3 [1] => libelle ))

Quelqu'un saurait-il comment faire ??
je voudrais juste pouvoir faire array([1]=>tous [2]=> libelle2 [3]=> libelle)

Merci de votre aide
P.S.: les données viennent d'un simple select * from table

--
..:::P@ ... a tras, a PoOf ou a chou :::..
L'imagination est plus importante que la connaissance. Albert Einstein
Configuration: Windows XP
Firefox 2.0

9 réponses

  1. P@ Messages postés 1137 Date d'inscription   Statut Membre 185
     
    j'ai trouvé le souci
    il ne faut pas mettre des bd dont on a pas besoin dans la requete
    je n'avais pas besoins de folder dans la 2eme requete et du coupe il me sortait les résultat en x exemplaire

    Merci slum-dunk
    @ bientôt
    1
  2. Profil bloqué
     
    je voudrais que tu soit un peu plus précis dans tes explications,en "français" sans code ni rien,ce que tu veux...
    0
  3. P@ Messages postés 1137 Date d'inscription   Statut Membre 185
     
    en fait, je fais un requete ou je prend toute ma table
    je veux la stocker dans un tableau
    ma table a 2 colonne : id et nom
    je voudrais que mon tableau est pour indice les id et pour valeurs les nom
    pour l'instant, je n'arrive pas a construire mon tableau comme il faut

    L'objectif est pour aprés faires des array_search sur les id.

    Je suis plus claire ???
    0
    1. Profil bloqué
       
      je comprends bien.Mais quel est l'objectif de tes array_search?
      0
  4. P@ Messages postés 1137 Date d'inscription   Statut Membre 185
     
    en fait, j'ai une autre table dans laquelle chaque élément peut être raccordé à une liste d'id séparé par des - exemple -10-1-28-
    je dois donc retrouver chaque libellé correspondant id cité dans la liste

    J'ai pu mettre en array ma liste grace a une suite d'explode puis de implode
    maintenant, il me faut un tableau avec toutes les données de la liste d'origine 1->tous 2->libelle pour voire qui va avec quoi
    dans le cas de -1-2-3- je devrais être apte a écrire tous, libelle, libelle2

    donc
    -1-3- = tous, libelle2
    parce que array(1=>tous 2=>libelle 3=>libelle2)

    c'est plus claire ??
    t'as une idée ??
    0
    1. Profil bloqué
       
      si je comprends bien tu voudrais faire des correspondances entre deux tables ,c'est ça?
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. P@ Messages postés 1137 Date d'inscription   Statut Membre 185
     
    C'est ca, mais je ne peut pas le faire avec une requete car dans une table1 j'ai
    1 tous
    2 libelle
    3 libelle3
    4 autre

    et dans l'autre j'ai
    table2
    1 nom -1-2-
    2 2nom -2-3-4-
    ...
    et je dois pourvoir écrire
    1 nom tous, libelle
    2 2nom libelle, libelle3,autre

    Je pensait récupérer table1 dans un tableau et table2 normalement.
    au cours d'un while écrire les éléments de table2 et parcourir le tableau de table1 pour trouver les correspondances.
    0
  7. P@ Messages postés 1137 Date d'inscription   Statut Membre 185
     
    pour l'instant j'ai fait :

    	$chercheServ = mysql_query("SELECT * FROM folder",$link);
    	$ServArray = array ();
    	 while($servicetab= mysql_fetch_array($chercheServ,MYSQL_NUM)) {
    	  array_pop($servicetab);
    	  array_pop($servicetab);
    		$ServNom = $servicetab[1];
    		$ServId = $servicetab[0];
    		$servTest = "[".$ServId."] => ".$ServNom;
    		array_unshift ($ServArray, $servTest);
    	}
    

    mais ca ne va pas du tout car il me renvoie ce type de donné
    Array ( [0] => [2] => libelle [1] => [1] => Tous )
    le 0 est vide, ce qui est bon, mais il inclus 2 a chaque fois 2 les id
    enfin, il y a 2 fois [1], il y a 2 fois [2] ...

    vous avez une idée ...
    ou il y a t il un moyen de suprimer les id sans valeurs ??
    0
  8. P@ Messages postés 1137 Date d'inscription   Statut Membre 185
     
    réctification
    je me suis planté pour mon remplissage de tableaux
    voici, ce que j'ai rééllement dans mon tableau

    0 => valeur [1] => Tous
    1 => valeur [2] => libelle
    2 => valeur [3] => libelle2
    3 => valeur [4] => autre

    ceci a été affiché grâce à la fonction suivante
    while (list($key, $val) = each($ServArray)) {
       echo "$key => valeur $val\n";
       echo"<br/>";
    }


    comment faire, une idée ??
    0
  9. Profil bloqué
     
    escuse du retard ,bon pour ta réponse 6 je te conseille de faire une requéte de jointure entre les deux tables table 1 et table2,pour voir ce que cela donne.
    0
  10. P@ Messages postés 1137 Date d'inscription   Statut Membre 185
     
    oui, mais les données corresponde pas puisque d'un coté j'ai un id et de l'autre une série d'id séparé par des -
    tu crois que je peux faire un like là dessus ??

    j'ai testé ceci

    	SELECT *
    	FROM bd, fonction, folder  
    	WHERE folder.id LIKE '%bd.service%'
    	ORDER BY service
    

    et ca ne me retourne rien
    je ne suis pas sur d'avoir fait correctement la requete
    folder.id sont 1 ou 2
    alors que bd.service est -1-2-3-
    0
    1. Profil bloqué
       
      essai disons ça:
      $req=" SELECT id
      FROM folder" ;qui va te lister dans un mysql_fetch_array tous les id.

      Ensuite utilise un while:
      while($row=mysql_fetch_array( $req))
      {

      SELECT *
      FROM bd, fonction, folder
      WHERE bd.service LIKE '%$row[0]%'
      ORDER BY service
      }
      0
      1. P@ Messages postés 1137 Date d'inscription   Statut Membre 185 > Profil bloqué
         
        ca marche ou presque
        j'ai bien tous les noms d'items

        Mais quand je fait ma requete et que j'essaie de sortir les éléments un par un j'ai au moins 132 fois

        voici ce que j'ai fait pour récuperer le "tout"
        	$chercheServ = mysql_query("SELECT * FROM folder",$link);
        while($row=mysql_fetch_array( $chercheServ))
        {
         $serv = "-";
         $serv .= $row[0];
         $serv .="-";
         echo $serv;
        $QUERYecr= mysql_query("
        	SELECT *
        	FROM bd, fonction, folder  
        	WHERE bd.fonction = fonction.id 
        	AND bd.service LIKE '%$serv%'
        	ORDER BY service
        	",$link);
        	$query_answer=mysql_num_rows($QUERYecr);
        	echo "<li>";
        	echo $row[0];
        	echo mysql_result($chercheServ,$row[0],'folder.folder');
        	echo "  requete SELECT *
        	FROM bd, fonction, folder  
        	WHERE bd.fonction = fonction.id 
        	AND bd.service LIKE '%$serv%'
        	ORDER BY service ". $query_answer;
        	echo "<br />";
        	for($i=0;$i!=$query_answer;$i++){
        	echo " -> ";
        	echo mysql_result($QUERYecr,$i,'bd.id');
        	 echo "</ul>";
        	}
        	echo "</li>";
        }	
        


        je ne comprend pas ...
        0