Tableau PHP/MySQL avec noms des champs
Résolu/Fermé
Leinox
Messages postés
227
Date d'inscription
jeudi 5 février 2009
Statut
Membre
Dernière intervention
2 septembre 2015
-
30 avril 2012 à 15:15
Leinox Messages postés 227 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 2 septembre 2015 - 3 mai 2012 à 14:11
Leinox Messages postés 227 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 2 septembre 2015 - 3 mai 2012 à 14:11
A voir également:
- Tableau PHP/MySQL avec noms des champs
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Tableau word - Guide
- Les noms des animaux - Télécharger - Études & Formations
- Trier tableau excel - Guide
5 réponses
Leinox
Messages postés
227
Date d'inscription
jeudi 5 février 2009
Statut
Membre
Dernière intervention
2 septembre 2015
29
3 mai 2012 à 14:11
3 mai 2012 à 14:11
Bien, j'ai obtenu ma réponse sur le siteduzéro.
<?php
function draw_line($line)
{
if ( ! empty($line))
{
echo '<tr>';
foreach ($line as $cell)
{
echo utf8_encode("<td>$cell</td>");
}
echo '</tr>';
}
}
function draw_header($line)
{
if ( ! empty($line))
{
$cell = $line[0];
echo utf8_encode("<th>$cell</th>");
}
}
function draw_table($column_names, $data)
{
if ( ! empty($column_names))
{
echo '<table border=1 cellpadding=10>';
// les entêtes
echo '<thead>';
echo '<tr>';
while ($column_names_draw = mysql_fetch_row($column_names))
{
draw_header($column_names_draw);
}
echo '</tr>';
echo '</thead>';
// les données
echo '<tbody>';
if (isset($data))
{
while ($data_draw = mysql_fetch_row($data))
{
draw_line($data_draw);
}
}
echo '</tbody>';
echo '</table>';
}
}
function ask_sql_and_draw($table_name, $order_by, $database)
{
if ( ! empty($database))
{
$my_query = '';
if ( ! empty ($table_name))
{
$my_query = 'SELECT * FROM '.$table_name.' ';
if ( ! empty ($order_by))
{
$my_query.=' order by '.$order_by;
}
$my_field = 'SHOW columns FROM '.$table_name;
mysql_connect('localhost', 'root', 'root') or die('Pas bien !!!');
mysql_select_db($database) or die('Je suis mauvais...');
$data = mysql_query($my_query) or die(mysql_error());
$column_names = mysql_query($my_field) or die(mysql_error());
mysql_close();
// on dessine le tableau
draw_table($column_names, $data);
}
}
}
// requete
ask_sql_and_draw($db_table, null, $data_base);
Merci "le père" pour ton aide, tu m'as quand même bien aidé !
<?php
function draw_line($line)
{
if ( ! empty($line))
{
echo '<tr>';
foreach ($line as $cell)
{
echo utf8_encode("<td>$cell</td>");
}
echo '</tr>';
}
}
function draw_header($line)
{
if ( ! empty($line))
{
$cell = $line[0];
echo utf8_encode("<th>$cell</th>");
}
}
function draw_table($column_names, $data)
{
if ( ! empty($column_names))
{
echo '<table border=1 cellpadding=10>';
// les entêtes
echo '<thead>';
echo '<tr>';
while ($column_names_draw = mysql_fetch_row($column_names))
{
draw_header($column_names_draw);
}
echo '</tr>';
echo '</thead>';
// les données
echo '<tbody>';
if (isset($data))
{
while ($data_draw = mysql_fetch_row($data))
{
draw_line($data_draw);
}
}
echo '</tbody>';
echo '</table>';
}
}
function ask_sql_and_draw($table_name, $order_by, $database)
{
if ( ! empty($database))
{
$my_query = '';
if ( ! empty ($table_name))
{
$my_query = 'SELECT * FROM '.$table_name.' ';
if ( ! empty ($order_by))
{
$my_query.=' order by '.$order_by;
}
$my_field = 'SHOW columns FROM '.$table_name;
mysql_connect('localhost', 'root', 'root') or die('Pas bien !!!');
mysql_select_db($database) or die('Je suis mauvais...');
$data = mysql_query($my_query) or die(mysql_error());
$column_names = mysql_query($my_field) or die(mysql_error());
mysql_close();
// on dessine le tableau
draw_table($column_names, $data);
}
}
}
// requete
ask_sql_and_draw($db_table, null, $data_base);
Merci "le père" pour ton aide, tu m'as quand même bien aidé !
theshadoo
Messages postés
786
Date d'inscription
samedi 26 mai 2007
Statut
Membre
Dernière intervention
3 mai 2016
123
1 mai 2012 à 00:17
1 mai 2012 à 00:17
ne mélange jamais html et php du moins jamais autant, il faut dissocier la prog du code déclaratif de rendu.
Cela sera bien plus simple pour toi à reprendre par la suite et à y voir plus clair ;)
Cela sera bien plus simple pour toi à reprendre par la suite et à y voir plus clair ;)
Leinox
Messages postés
227
Date d'inscription
jeudi 5 février 2009
Statut
Membre
Dernière intervention
2 septembre 2015
29
2 mai 2012 à 09:08
2 mai 2012 à 09:08
Merci pour le conseil,
Enfin, là il s'agit de fonction permettant d'afficher un tableau, il y a 3 echo de balises html qui se battent en duel ^^
Aucune idée de ce qui peut être la cause de mon problème sinon ?
Enfin, là il s'agit de fonction permettant d'afficher un tableau, il y a 3 echo de balises html qui se battent en duel ^^
Aucune idée de ce qui peut être la cause de mon problème sinon ?
Bonjour
Plusieurs problèmes :
Si $table est vraiment le nom de ta table, alors OK, mais je n'y crois pas. Si c'est une variable, alors tu aurais dû écrire
Ensuite, ta fonction draw_table attend visiblement comme paramètres deux tableaux.
Mais tu ne lui passe pas des tableaux, mais des ressources. Car le résultat de mysql_query n'est pas un tableau, mais une ressource.
Il faut modifier drawtable pour parcourir ces ressources avec mysql_fetch_array() au lieu d'un for. Ça devrait aller mieux après.
Plusieurs problèmes :
ask_sql_and_draw('$table', null, $data_base)
Si $table est vraiment le nom de ta table, alors OK, mais je n'y crois pas. Si c'est une variable, alors tu aurais dû écrire
ask_sql_and_draw($table, null, $data_base)sans apostrophes autour de $table.
Ensuite, ta fonction draw_table attend visiblement comme paramètres deux tableaux.
Mais tu ne lui passe pas des tableaux, mais des ressources. Car le résultat de mysql_query n'est pas un tableau, mais une ressource.
Il faut modifier drawtable pour parcourir ces ressources avec mysql_fetch_array() au lieu d'un for. Ça devrait aller mieux après.
Leinox
Messages postés
227
Date d'inscription
jeudi 5 février 2009
Statut
Membre
Dernière intervention
2 septembre 2015
29
2 mai 2012 à 13:47
2 mai 2012 à 13:47
Merci je vais voir ça
En effet pour le problème dans ask_sql_and_draw le problème à enfait était du a une erreur de copier/coller -_-" pas vraiment un problème donc.
Pour ce qui est de parcourir les ressources avec mysql_fetch_array il va falloir que je me renseigne plus car je suis vraiment pas sur de son utilisation.
En effet pour le problème dans ask_sql_and_draw le problème à enfait était du a une erreur de copier/coller -_-" pas vraiment un problème donc.
Pour ce qui est de parcourir les ressources avec mysql_fetch_array il va falloir que je me renseigne plus car je suis vraiment pas sur de son utilisation.
Leinox
Messages postés
227
Date d'inscription
jeudi 5 février 2009
Statut
Membre
Dernière intervention
2 septembre 2015
29
2 mai 2012 à 14:02
2 mai 2012 à 14:02
Je viens d'essayer avec un fetch array et il me dit que $data est un booleen... comprend pas.
Nouveau code de la fonction :
Nouveau code de la fonction :
function draw_table ($column_names, $data) { if(isset($column_names) && count($column_names)>0) { echo '<table>'; // les entêtes echo '<thead>'; draw_line($column_names); echo '</thead>'; // les données echo '<tbody>'; if(isset($data) && count($data)>0) { while ($data_draw = mysql_fetch_array($data)) { $data_draw = draw_line($data); } } echo '</tbody>'; echo '</table>'; } }
Si $data est un booleen, c'est que ton mysql_query s'est mal passé. Pour avoir plus de détails :
D'autre part, count($column_names)>0, ne veut pas dire grand chose car $column_names n'est pas un tableau, et count compte les éléments d'un tableau. count appliqué à autre chose qu'un tableau (ou un objet) rend 1, ce qui n'a aucun rapport avec le nombre de réponses contenues dans $column_names : il faut utiliser mysql_num_rows($column_names). Idem pour $data, bien sûr.
$data = mysql_query($my_query) or die(mysql_error()); $column_names = mysql_query($my_field) or die(mysql_error());
D'autre part, count($column_names)>0, ne veut pas dire grand chose car $column_names n'est pas un tableau, et count compte les éléments d'un tableau. count appliqué à autre chose qu'un tableau (ou un objet) rend 1, ce qui n'a aucun rapport avec le nombre de réponses contenues dans $column_names : il faut utiliser mysql_num_rows($column_names). Idem pour $data, bien sûr.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Leinox
Messages postés
227
Date d'inscription
jeudi 5 février 2009
Statut
Membre
Dernière intervention
2 septembre 2015
29
2 mai 2012 à 15:49
2 mai 2012 à 15:49
Merci pour l'explication, j'ai effectué les modifications et ça m'a permis de voir que la fonction rownum n'existe pas en MySQL : c'est du Oracle.
J'ai d'ailleurs retiré mes count, je testerai différemment plus tard, ce qui compte pour l'instant c'est afficher enfin ce tableau...
Si ce message à quelque jours, ça fait bien une semaine que je bute sur ce problème...
J'ai d'ailleurs retiré mes count, je testerai différemment plus tard, ce qui compte pour l'instant c'est afficher enfin ce tableau...
Si ce message à quelque jours, ça fait bien une semaine que je bute sur ce problème...