Page 1 sur 2

Renseigner une liste déroulante à partir d'une base access

Posté : 29 juil. 2005, 14:26
par Reel Big Spike
Salut à vous, j’ai un piti souci :

J’ai créé une liste déroulante dans un formulaire, et l’idée consiste à aller chercher des informations dans ma base Access pour les mettre dans cette liste déroulante.

Alors d’abord je fais évidemment la connexion à la base :

Code : Tout sélectionner

$selectClient = ("SELECT Client FROM Societes") ; $reselectClient = odbc_exec($connexion,$selectClient) or die("Ne peut pas exécuter la requête.") ;
Puis je mets en place ma liste déroulante :

Code : Tout sélectionner

if ($reselectClient) { echo "<form method=\"post\">\n"; echo "<select name=\"Liste\">\n"; while (odbc_fetch_row ($reselectClient)) { } }
Et mon gros souci, c’est que rien de ce que je mets dans mon "tant que" ne tien la route. Alors si vous avez une piste...

Posté : 29 juil. 2005, 14:31
par zeus
if ($reselectClient)
{
    echo "<form method=\"post\">\n";
    echo "<select name=\"Liste\">\n";
    while ($tab_result = odbc_fetch_row ($reselectClient))
    {
            echo "<option>".$tab_result[0]."</option>";
    }
    echo "</select>";
}

Posté : 29 juil. 2005, 14:53
par Reel Big Spike
Fiou, encore une fois, quelle rapidité, zeus ! :D

Bon, j’ai essayé, et ça marche plus ou moins. Le plus vient du fait que lorsque je clique sur le bouton fléché de ma liste déroulante, je vois un petit ascenseur qui indique que j’ai bien toutes les occurrences de mes clients. Le moins, c’est que je n’arrive pas à élargir ma liste déroulante pour afficher les noms des clients, ce qui fait que je ne vois que du blanc.

Ensuite, j’ai essayé de récupérer la valeur de la liste, mais ça passe pas. Je suppose qu’il faut autre chose qu’un $_POST, non ?

En tout cas, un grand merci pour m'avoir déjà donné une grosse partie de la solution. :pouce:
J'y retourne en attendant...

Posté : 29 juil. 2005, 14:55
par zeus
Et si tu regarde le code HTML généré, tu as quoi ?

Si la liste déroulante et pas assez large, c'est qu'elle est vide parce qu'elle s'adapte à la largeur de son contenu

EDIT ---
Cette fois ci, 2mn, la derniere fois 6mn
T'as raison, je suis FULGURANT. (pour le dieu de la foudre, c'est un comble) :langue:

Posté : 29 juil. 2005, 15:02
par Reel Big Spike
Effectivement, je viens de regarder le code, et j'ai une foule de :

Code : Tout sélectionner

<option></option><option></option><option></option>
qui s'enchaîne. Ca vient bien de là, ma liste est pas assez large pour afficher les résultats, mais le code est quand même exécuté

Et ouaip, t'es vraiment un rapide. Tu risques même de répondre aux questions avant qu'on les pose à ce niveau là... :D

Posté : 29 juil. 2005, 15:25
par zeus
Dans la boucle while met un
print_r($tab_result);
Et ouaip, t'es vraiment un rapide. Tu risques même de répondre aux questions avant qu'on les pose à ce niveau là... :D
:langue: :pouce:

Posté : 29 juil. 2005, 15:35
par Reel Big Spike
On sent que ça te fait plaisir d'être le plus rapide. Et ça lève pas trop le ton avec les autres membres, qui n'ont pas le temps de répondre ? :D

Sinon, j'ai essayé, voici mon code maintenant :

Code : Tout sélectionner

while ($tab_result = odbc_fetch_row ($reselectClient)) { echo "<option>".print_r($tab_result[0])."</option>" ; }
Et maintenant, j'ai bien quelque chose dans ma liste. Touuuuuuute une succession de 1. Partout, plein. Par contre, ça a légèrement augmenté la largeur de la liste.

Posté : 29 juil. 2005, 15:38
par mere-teresa
Et ça lève pas trop le ton avec les autres membres, qui n'ont pas le temps de répondre ?
En fait, il est dopé.

Posté : 29 juil. 2005, 15:47
par Reel Big Spike
Maintenant que tu le dis... Ca expliquerait bien des choses. :-k

Je suppose que les grands sportifs ont tous une face cachée peu glorieuse. C’est la rançon de la gloire ! :mrgreen:

Posté : 29 juil. 2005, 16:28
par zeus
En fait, cyrano est encore plus rapide que moi mais il se bat avec un virus ...

Sinon, je voulais que tu fasse
while (...) {
  print_r($tab_result);
  echo ...;
}
Et que tu nous donnes le code HTML généré

Posté : 01 août 2005, 08:05
par Reel Big Spike
Désolé pour le retard, week end occupé oblige... :)

C’est ce que j’avais fait la première fois, mais comme il n’y avait pas eu d’évolution visuellement, j’ai préféré essayer autre chose.

Bon, j’ai regardé le code généré, et j’obtiens ceci :

Code : Tout sélectionner

<td> <form method="post"> <select name="choix"> 111111111111111111111111111111......................... </select> </td>
Il y a toute une ribambelle de 1 qui se suivent. Visiblement, ils correspondent aux nombres d’occurrences retournés par ma requête.

L'idée serait donc de remplacer ces fameux 1 par les noms de mes clients...

Posté : 01 août 2005, 08:29
par Cyrano
Estu bien sûr qu'ils sont dans ta base tes client ? Si tu exécutes ta requête dans MS-Access, tu as bien une liste normale ?

Ce que je ne comprends pas, c'est d'où sortent ces "1" ni à quoi ils peuvent bien correspondre... :-k

Posté : 01 août 2005, 08:51
par Reel Big Spike
Et bien écoute, je viens de vérifier, et tout concorde.

Je mets des copier-coller pour que vous puissiez voir s’il y a une faute de frappe. Voici déjà ma requête en php :

Code : Tout sélectionner

$selectClient = ("SELECT Client FROM Societes") ; $reselectClient = odbc_exec($connexion,$selectClient) or die("Ne peut pas exécuter la requête.") ;
Ensuite, dans ma base, on peut trouver la table :
Societes
Et enfin, dans la table Societes, j’ai un champ :
Client
Donc tout concorde. Le champ Client est renseigné avec des noms, des vrais, aucun chiffre. De plus, je viens de compter le nombre de 1 retourné par le code généré, et il concorde exactement avec le nombre de clients présents dans la table société. :|

Posté : 01 août 2005, 09:04
par Cyrano
Bon, j'ai l'impression qu'il manque des trucs : essaye avec ça :
<?php
$selectClient = ("SELECT Client FROM Societes") ;
$reselectClient = odbc_exec($connexion,$selectClient) or die("Ne peut pas exécuter la requête.") ;
?>
<form method="post" action="">
<select name="Liste">
<?php
while ($tab_result = odbc_fetch_array ($reselectClient))
{
?>
  <option value="<?php echo($tab_result['Client']); ?>"><?php echo($tab_result['Client']); ?></option>
<?php
}
?>
</select>
<!-- .... reste de ton code de formulaire ... -->

Posté : 01 août 2005, 09:35
par Reel Big Spike
Waouh, parfait, ça marche ! Comme toujours, c’est quand on la solution sous les yeux que ça paraît limpide. Un grand merci à toi, divinité du savoir indienne ! Image


Merci aussi à vous autres qui m'avez aussi aider. C'est vraiment agréable de pouvoir compter sur vous en cas de pépin de ce genre ! :pouce: