PHP Affichage d'un Tableau Multidimensionnel

Résolu/Fermé
maverickz Messages postés 49 Date d'inscription lundi 12 octobre 2009 Statut Membre Dernière intervention 10 août 2011 - 12 oct. 2009 à 10:57
TiboleParano Messages postés 498 Date d'inscription mardi 18 mars 2008 Statut Membre Dernière intervention 7 avril 2015 - 12 oct. 2009 à 12:06
Bonjour,

J'ai un problème (tout bête?) pour afficher un tableau multidimensionnel PHP dans un tableau HTML se trouvant dans un autre fichier.
Après pas mal de recherches je n'ai pas vraiment trouvé de réponses.

Voici le code de ma fonction qui se trouve dans le fichier "functions.php" .

function listUser() {
MySQLConnect();
$request = mysql_query('SELECT * FROM users');
while($result = mysql_fetch_array($request)) {
$tab = $result;
return $tab;
}
mysql_close();
}

users dispose de trois champs. (id,login,pass).
le SELECT dans phpMyAdmin me renvois 3 résultats, donc doit normalement me renvoyer 3 lignes dans un tableau.



dans le second fichier "admin.php" je récupère la fonction listUser(); et j'essaye d'afficher tout le contenu dans un tableau HTML avec une boucle for.

<?php
require('../func/functions.php');
$tab=listUser();
?>

<html>
<head><title>Administration</title></head>

<body>

<?php
echo '<table border="1">';
echo '<caption> User List </caption>';

echo '<tr>';
echo '<th> ID </th>';
echo '<th> Login </th>';
echo '<th> Password </th>';
echo '</tr>';


for ($i = 0; $i<sizeof($tab); $i++) {
echo '<tr>';
echo '<th>'.$tab['id'].' </th>';
echo '<th>'.$tab['login'].' </th>';
echo '<th>'.$tab['pass'].' </th>';
echo '</tr>';

echo '</table>';
}
?>
</body>

</html>



Le souci est que le que le tableau ne se remplit que d'un seul résultat et non pas des trois comme il le devrait.

PS : C'est une fonction de test en attendant la définitive je sais qu'il n'est pas commun d'afficher une requête qui renvois le password d'un utilisateur mais j'ai besoin qu'elle fonctionne pour pouvoir continuer.


Merci d'avance pour vos réponses.

5 réponses

TiboleParano Messages postés 498 Date d'inscription mardi 18 mars 2008 Statut Membre Dernière intervention 7 avril 2015 61
12 oct. 2009 à 11:39
... t' t' th'
toutes mes excuses, j'ai bien relu, et donc je viens de comprendre ton expresion "tableau multidimentionnel"
=> tu as un tableau $res qui, dans chaque case, contient un tableau $tab ? *_* chaud, je sais pas si c'est possible, ce que je te proposerai plutôt c'est ...
function listUser() { 
MySQLConnect(); 

$compteur=0;

$request = mysql_query('SELECT * FROM users'); 
while($result = mysql_fetch_array($request)) { 

$tab[3*$compteur] = $result['id'];
$tab[3*$compteur+1] = $result['nom'];
$tab[3*$compteur+2] = $result['pass']; 
$compteur++;

} 
return $tab; 
mysql_close(); 
} 


ce qui donnerai sur l'autre page un truc du genre
for ($i = 0; isset($tab[$i]); $i+=3) { 
echo '<tr>'; 
echo '<th>'.$tab[$i].' </th>'; 
echo '<th>'.$tab[$i+1].' </th>'; 
echo '<th>'.$tab[$i+2].' </th>'; 
echo '</tr>'; 
2
TiboleParano Messages postés 498 Date d'inscription mardi 18 mars 2008 Statut Membre Dernière intervention 7 avril 2015 61
12 oct. 2009 à 11:21
whop op op, tu va devoir utiliser ta fonction plusieurs fois, avant chaque ligne de tableau, isn't it ?
0
maverickz Messages postés 49 Date d'inscription lundi 12 octobre 2009 Statut Membre Dernière intervention 10 août 2011 18
12 oct. 2009 à 11:28
euh pourquoi ? J'appelle la fonction une fois en début de programme et en théorie elle devrait m'afficher tout les résultats non ?


Petit changement dans la fonction , j'ai sorti le return $tab; de la boucle WHILE


// Permet d'afficher la liste complète de tous les utilisateurs.
function listUser() {
MySQLConnect();
$request = mysql_query('SELECT * FROM users');
while($result = mysql_fetch_array($request)) {
$tab[] = $result;

}
return $tab;
mysql_close();
}



ce qui me permet de bien avoir les 3 resultats de l'autre côté dans admin.php

Admin.php
-------------

$tab=listUser();
print_r($tab)


le print_r me donne : Array ( [0] => Array ( [0] => 1 [id] => 1 [1] => logintest [login] => logintest [2] => passtest [pass] => passtest ) [1] => Array ( [0] => 3 [id] => 3 [1] => fze [login] => fze [2] => fez [pass] => fez ) [2] => Array ( [0] => 4 [id] => 4 [1] => azerty [login] => azerty [2] => uiop [pass] => uiop ) )



Mais en ce qui concerne le tableau j'ai 3x cet affichage la sur ma page :


Notice: Undefined index: id in C:\Program Files\EasyPHP 2.0b1\www\prog\admin\admin.php on line 25

Notice: Undefined index: login in C:\Program Files\EasyPHP 2.0b1\www\prog\admin\admin.php on line 26

Notice: Undefined index: pass in C:\Program Files\EasyPHP 2.0b1\www\prog\admin\admin.php on line 27


Une idée ?
0
maverickz Messages postés 49 Date d'inscription lundi 12 octobre 2009 Statut Membre Dernière intervention 10 août 2011 18
12 oct. 2009 à 11:54
c'est parfait, résolu, merci beaucoup pour ton aide Tibo

Je vais enfin pouvoir consacrer mon arrachage de cheveux depuis deux jours à autre chose :-)

Je te souhaite une bonne journée et merci encore.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
TiboleParano Messages postés 498 Date d'inscription mardi 18 mars 2008 Statut Membre Dernière intervention 7 avril 2015 61
12 oct. 2009 à 12:06
nikel michel :) bonne journée
0