Page 1 sur 1

Faire un tableau 2 dimensions à partir d'une table SQL ?

Posté : 13 sept. 2005, 01:41
par sideb
voila je galere j'ai regardé un peu toute les fonctions php qui touche à MySQL et j'arrive pas a trouver la solution à mon problème.

Je voudrais faire une variable tableau a deux dimensions a partir d'une table sql.

1. Mon premier probleme c'est que je vois pas comment recuperer le nom des champs sql pour les mettre sur la premier ligne du tableau.
2. Mon second quel fonction utiliser pour réaliser ceci, je pensais à mysql_fetch_assoc() ou mysql_fetch_array().

(ça fait tres charade hihi)

Voila ce que je voudrais obtenir:
$requete = 'SELECT * FROM Table';
....
$resultat = array[ligne][colonne] ou array [colonne][ligne];

//exemple:
$resultat [0][0] = id; //nom du premier champs
$resultat [0][1] = nom; //nomdu deuxieme champs
...
$resultat [1][0] = 1; //premiere ligne et premier champs de la table
$resultat [1][1] = toto; //premiere ligne et deuxieme champs de la table
...
$resultat [n][0] = n; //ligne n et premier champs de la table
$resultat [n][1] = toto; //ligne en et  deuxieme champs de la table 
Merci d'avance pour votre aide à tous ++

ze solution

Posté : 13 sept. 2005, 02:47
par toto37

$requete = 'SELECT * FROM inscription';
$reponse = mysql_query($requete); 
$nombrechamps = mysql_num_fields($reponse);


for ($j=0;$j<$nombrechamps;$j++)
{
$nomchamp[] = mysql_field_name($reponse,$j);
}

echo "<table border ='1'>";
echo "<tr>";
for ($i=0;$i<$nombrechamps;$i++)
{
echo ('<td>');

echo ('<center>'.$nomchamp[$i].'</center>');
echo ('</td>');
}
echo "</tr>";
while ($result = mysql_fetch_row($reponse))
{
echo ('<tr>');
for ($i=0;$i<$nombrechamps;$i++)
{

echo ('<td>');

echo ('<center>'.$result[$i].'</center>');
echo ('</td>');
}
echo ('</tr>');
}
echo "<table>";
voila : je t'ai fait un script qui permet d'afficher les résultats trouvés pour chaques champs existants dans la table c'est bien ça que tu voulais?

ze solution

Posté : 13 sept. 2005, 02:48
par toto37

$requete = 'SELECT * FROM inscription';
$reponse = mysql_query($requete); 
$nombrechamps = mysql_num_fields($reponse);


for ($j=0;$j<$nombrechamps;$j++)
{
$nomchamp[] = mysql_field_name($reponse,$j);
}

echo "<table border ='1'>";
echo "<tr>";
for ($i=0;$i<$nombrechamps;$i++)
{
echo ('<td>');

echo ('<center>'.$nomchamp[$i].'</center>');
echo ('</td>');
}
echo "</tr>";
while ($result = mysql_fetch_row($reponse))
{
echo ('<tr>');
for ($i=0;$i<$nombrechamps;$i++)
{

echo ('<td>');

echo ('<center>'.$result[$i].'</center>');
echo ('</td>');
}
echo ('</tr>');
}
echo "<table>";
voila : je t'ai fait un script qui permet d'afficher les résultats trouvés pour chaques champs existants dans la table c'est bien ça que tu voulais?

ze solution

Posté : 13 sept. 2005, 02:51
par toto37
Euh...

tu veux afficher un tableau a deux dimension ou tu veux créer une variable a deux dimensions?

moi j'avais compris la 1ere solution.....

Si ca te convien pas dit le moi on va revoir ça!

mais essaye deja ça!

Re: ze solution

Posté : 13 sept. 2005, 07:26
par sideb
Euh...

tu veux afficher un tableau a deux dimension ou tu veux créer une variable a deux dimensions?

moi j'avais compris la 1ere solution.....

Si ca te convien pas dit le moi on va revoir ça!

mais essaye deja ça!
une variable à deux dimensions avec le nom des champs MySQL sur la premiere ligne.

exemple:
$resultat [0][0] = id; //nom du premier champs
$resultat [0][1] = nom; //nomdu deuxieme champs
...
$resultat [1][0] = 1; //premiere ligne et premier champs de la table
$resultat [1][1] = toto; //premiere ligne et deuxieme champs de la table
...
$resultat [n][0] = 1; //ligne n et premier champs de la table
$resultat [n][1] = toto; //ligne en et  deuxieme champs de la table
[/quote]

ze solution

Posté : 13 sept. 2005, 13:49
par toto37
je vois..

En meme temps si tu veux faire un tableau a deux dimension destiné à l'affichage ma solution est parfaite......

Posté : 13 sept. 2005, 14:15
par Tho
<?php
// Connexion à la base
// ???

// Initialisation
$table = "inscription";

// Entete
$requete = "DESCRIBE $table";
$resultat = mysql_query($requete) or die(mysql_error());
while($ligne = mysql_fetch_array($resultat)) 
  $entete[] = $ligne['Field'];

$tableau[] = $entete; // première ligne du tableau

// Données
$requete = "SELECT * FROM $table";
$resultat = mysql_query($requete) or die(mysql_error());
while ($tableau[] = mysql_fetch_row($resultat)) 
  ;  // l'instruction est dans la condition

// Affichage
echo "<pre>".print_r($tableau,true)."</pre>";
?>
qu'en penses-tu ?

ZE solution

Posté : 13 sept. 2005, 18:04
par toto37
j'en sais rien ta essayé? ca marche?

Posté : 14 sept. 2005, 11:01
par Tho
Oui j'ai pas posté sans tester ;)
mais c'est sideb qui devrait répondre.

ZE solution

Posté : 14 sept. 2005, 23:56
par toto37
ok!