Tableau indexé avec des chaînes, ok sous Easyphp, pb chez free

Tableau indexé avec des chaînes, ok sous Easyphp, pb chez free - PHP - Programmation

Marsh Posté le 31-01-2012 à 18:57:06    

Salut salut!
 
Je viens à vous car j'ai un problème dans une page de mon site. J'ai déjà passé plusieurs nuits blanches et usé plusieurs cerveaux sans trouver  :pt1cable:  ... !
Donc, voici mon problème:
 
J'aimerais remplir un tableau avec des données de ma BDD, en indexant le tableau avec les titres des colonnes de la table de la BDD.
Ex: table: arbre, colonnes: feuille=3, branche=1, racine=2.

Code :
  1. $points=mysql_fetch_array($rst01); //après un mysql_query, je récupère les résultats dans $points
  2.  
  3.   for($i=1; $i<mysql_num_fields($rst01); $i++){  //je commence à 1 pour éviter la colonne ID.
  4.     $p[mysql_field_name($rst01,$i)]=$points[$i]; //j'indexe le tableau avec le nom des colonnes, et je le rempli avec leur contenu.
  5.   }

J'obtiens donc: $p[feuille]=3, $p[branche]=1, $p[racine]=2.
Donc, si j'écris $variable=$p["feuille"] j'obtiens $variable vaut 3. Enfin...sous EasyPHP.
 
Par contre, sous free (j'héberge mon site là-bas), il y a un problème:
 
mysql_field_name($rst01,$i) me rend bien "feuille", "racine" ou autre.
$points[$i] me donne bien les bons résultats.
 
Par contre, si je demande $p["feuille"] j'obtiens une valeur fantaisiste...! 0 en général.
:pt1cable:
Et quelques fois, cela fonctionne. Mes colonnes s'appellent "30x20", "30x30", "30x40", etc. quelques uns marchent, pas les autres...


---------------
----** Mon feed-back **----
Reply

Marsh Posté le 31-01-2012 à 18:57:06   

Reply

Marsh Posté le 31-01-2012 à 19:22:29    

http://www.php.net/manual/fr/funct [...] -array.php
Essayes d'ajouter MYSQL_BOTH en deuxième argument.
 
Essayes aussi un print_r( $points ) pour voir...


Message édité par Mara's dad le 31-01-2012 à 19:24:02

---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 31-01-2012 à 20:46:19    

Merci de ta réponse rapide :)
 
J'ai testé avec MYSQL_BOTH, sa ne marche pas mieux.
Par contre, j'ai inséré un print_r($points) et sa donne un truc du genre:
 
Array ( [0] => 2 [id_m] => 2 [1] => 1 [30x20] => 1 [2] => 1 [30x30] => 1 [3] => 1, ...
 
Pourquoi met-il des [0], [1], etc ??


---------------
----** Mon feed-back **----
Reply

Marsh Posté le 06-02-2012 à 08:43:02    

Hig2 a écrit :

Pourquoi met-il des [0], [1], etc ??


 
Avec MYSQL_BOTH, mysql_fetch_array retourne un tableau avec les entrées en double :

  • Les unes indexées numériquement.
  • Les autres indexées avec les noms des colonnes.


Le but du print_r était que tu vérifie que les noms de colonnes retournées sont bien celles que tu attends, avec les bonnes valeurs.
 
Est-ce le cas ?
 
Tu peux aussi essayer d'installer http://www.phpmyadmin.net pour naviguer dans ta base et voir ce qui cloche.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 06-02-2012 à 09:14:59    

ce sera peut être plus propre comme ça :  

Code :
  1. $data = mysql_fetch_assoc($points);
  2. foreach($data as $key=>$value){
  3.    if($key != 'id'){
  4.       $p[$key] = $value;
  5.    }          
  6. }


ou  

Code :
  1. $p = mysql_fetch_assoc($points);
  2. unset($p['id']);

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed