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

fredx76 Messages postés 7 Date d'inscription mardi 29 novembre 2011 Statut Membre Dernière intervention 2 février 2012 - 1 févr. 2012 à 15:39
fredx76 Messages postés 7 Date d'inscription mardi 29 novembre 2011 Statut Membre Dernière intervention 2 février 2012 - 2 févr. 2012 à 11:35
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

cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
1 févr. 2012 à 20:43
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 !
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
1 févr. 2012 à 20:58
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>';

?>
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
1 févr. 2012 à 21:00
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.
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
1 févr. 2012 à 21:25
pourtant tu peux le lire sur la doc officielle

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


Bonne programmation !
0

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

Posez votre question
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
1 févr. 2012 à 21:29
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
0
fredx76 Messages postés 7 Date d'inscription mardi 29 novembre 2011 Statut Membre Dernière intervention 2 février 2012
2 févr. 2012 à 11:35
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
0
Rejoignez-nous