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

Eléphanteau du PHP | 19 Messages

29 juil. 2005, 14:26

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...
C'est parce que la vitesse de la lumière est supérieure à celle du son,
Que tant de gens paraissent brillant avant d'avoir l'air con.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

29 juil. 2005, 14:31

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>";
}
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 19 Messages

29 juil. 2005, 14:53

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...
C'est parce que la vitesse de la lumière est supérieure à celle du son,
Que tant de gens paraissent brillant avant d'avoir l'air con.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

29 juil. 2005, 14:55

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:
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 19 Messages

29 juil. 2005, 15:02

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
C'est parce que la vitesse de la lumière est supérieure à celle du son,
Que tant de gens paraissent brillant avant d'avoir l'air con.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

29 juil. 2005, 15:25

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:
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 19 Messages

29 juil. 2005, 15:35

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.
C'est parce que la vitesse de la lumière est supérieure à celle du son,
Que tant de gens paraissent brillant avant d'avoir l'air con.

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

29 juil. 2005, 15:38

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é.

Eléphanteau du PHP | 19 Messages

29 juil. 2005, 15:47

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:
C'est parce que la vitesse de la lumière est supérieure à celle du son,
Que tant de gens paraissent brillant avant d'avoir l'air con.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

29 juil. 2005, 16:28

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é
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 19 Messages

01 août 2005, 08:05

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...
C'est parce que la vitesse de la lumière est supérieure à celle du son,
Que tant de gens paraissent brillant avant d'avoir l'air con.

Mammouth du PHP | 19672 Messages

01 août 2005, 08:29

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
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 19 Messages

01 août 2005, 08:51

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é. :|
C'est parce que la vitesse de la lumière est supérieure à celle du son,
Que tant de gens paraissent brillant avant d'avoir l'air con.

Mammouth du PHP | 19672 Messages

01 août 2005, 09:04

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 ... -->
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 19 Messages

01 août 2005, 09:35

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:
C'est parce que la vitesse de la lumière est supérieure à celle du son,
Que tant de gens paraissent brillant avant d'avoir l'air con.