Trier liste déroulante contenant les noms de colonne d'une table mysql

Signaler
Messages postés
7
Date d'inscription
mardi 29 novembre 2011
Statut
Membre
Dernière intervention
2 février 2012
-
Messages postés
7
Date d'inscription
mardi 29 novembre 2011
Statut
Membre
Dernière intervention
2 février 2012
-
Bonjour,

Je cherche à trier les éléments d'une liste déroulante qui contient les noms de colonne d'une table mysql, voici mon code :

$fields=mysql_list_fields("bdd","matable");
$columns=mysql_num_fields($fields);

<SELECT name="lst1" id="lst_1" size="1" disabled>
<?php
for($i=1;$i<$columns;$i++)
{
?><option><?php echo mysql_field_name($fields,$i);?></option><?php
}
?>
</SELECT>
Les noms de colonne s'affiche bien dans ma liste "lst1" mais ne sont pas trié par ordre alphabétique, pouvez vous m'éclairé?

Merci par avance.

fredX76

6 réponses

Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
16
bonsoir

mysql_list_fields est obsoléte

Tapez le texte de l'url ici.

<?php
$result = mysql_query("SHOW COLUMNS FROM sometable");
if (!$result) {
   echo 'Impossible d\'exécuter la requête : ' . mysql_error();
   exit;
}
if (mysql_num_rows($result) > 0) {
   while ($row = mysql_fetch_assoc($result)) {
      print_r($row);
   }
}
?>




Bonne programmation !
Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
12
Salut,

Tu peux simplement mettre le résultat dans un array et trier ce dernier :
<?php

$fields = mysql_list_fields('db', 'table');
$columns = mysql_num_fields($fields);

$lst = array();
for($i = 1; $i < $columns; $i++)
  {
    $lst[] = mysql_field_name($fields,$i);
  }
sort($lst);

echo '<select name="lst1" id="lst_1" size="1" disabled="disabled">';
foreach ($lst as $v)
  {
    echo '<option value="', urlencode($v), '">', $v, '</option>';
  }
echo '</select>';

?>
Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
12
Salut,

mysql_list_fields est obsoléte

Nope, une fonction obsolète est indiquée dans la doc comme l'étant. Par exemple, ereg() est obsolète, un warning est affiché. Après, je t'accorde que les fonctions mysql_* ne sont pas recommandée, mais c'est différent d'être obsolète.
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
16
pourtant tu peux le lire sur la doc officielle

http://php.net/manual/fr/function.mysql-list-fields.php


Bonne programmation !
Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
12
Au temps pour moi, n'ayant pas vu le gros warning je ne m'étais pas attardé à lire la description. T'as le droit de faire un ticket sur le BT pour faire corriger ça ;p
Messages postés
7
Date d'inscription
mardi 29 novembre 2011
Statut
Membre
Dernière intervention
2 février 2012

Je vous remercie bien,
J'ai trouvé la solution voici le code pour ceux que ca intéresse (Sa rejoint l'idée de TychoBrahe) :

<?php
include'Include/Connexion.php';
$fields=mysql_list_fields("bdd","matable");
$columns=mysql_num_fields($fields);
for($i=0;$i<$columns;$i++)
{
$tab[$i]=mysql_field_name($fields,$i);
sort($tab);
}
?>

et j'affiche dans ma liste :
<SELECT name="lst1" id="lst_1" size="1" disabled>
<?php
for($i=0;$i<$columns;$i++)
{
?><option><?php echo $tab[$i]; ?></option><?php
}
?>
</SELECT>
Par ailleurs la fonction mysql_list_fields fonctionne très bien donc je continu à l'utiliser.
Merci.
fredX76