PHP Affichage d'un Tableau Multidimensionnel

Résolu
maverickz Messages postés 49 Date d'inscription   Statut Membre Dernière intervention   -  
TiboleParano Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   -
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.
A voir également:

5 réponses

TiboleParano Messages postés 498 Date d'inscription   Statut Membre Dernière intervention   61
 
... 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   Statut Membre Dernière intervention   61
 
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   Statut Membre Dernière intervention   18
 
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   Statut Membre Dernière intervention   18
 
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   Statut Membre Dernière intervention   61
 
nikel michel :) bonne journée
0