Valeurs de formulaire qui sont des enregistrements SQL

Eléphanteau du PHP | 13 Messages

13 avr. 2006, 09:50

Bonjour a tous

Voila est-il possible de créer une fenetre déroulante dans un formulaire, où s'afficherait les enregistrements d'un champ SQL.

Mon champ = "noms" et donc je veux que les enregistrements de ce champs (martin, lucas,...) sont extrais pour être visible dans une liste déroulante.
si vous pouvez m'éclairer merci

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

13 avr. 2006, 11:26

Commençons par le début : sais-tu faire une requête ? Te connecter à ta base de données depuis PHP ? Faire une requête avec PHP ? Récupérer les résultats de la requête ?
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphanteau du PHP | 13 Messages

13 avr. 2006, 11:44

oui ça, ça va, c'est vraiment l'alimentation de la liste depuis ma données sql que je ne maitrise pas.

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

13 avr. 2006, 11:48

Dans ma signature, j'ai mis :Toujours commencer par le HTML qu'on veut obtenir....toujours !
Cela signifie que avec les résultats de ta base de données (que tu sais donc mettre dans des variables PHP) tu veux faire une chaîne de caractères, qui sera du HTML, et qui sera le HTML qui fait une liste déroulante.
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphanteau du PHP | 13 Messages

13 avr. 2006, 12:23

Voila j'ai suivit ton conseil en commençant par l'HTML
ça donne donc
debite => c'est ma variable
bdargent => ma table sql
noms => le champs de la table

Code : Tout sélectionner

<form> //d'autres input <select name="debite"> <? $SQL = "SELECT * FROM bdargent"; $res = mysql_query($SQL); while($val=mysql_fetch_array($res)) { echo "<option value="$val["noms"]">".$val["noms"]."</option>\n"; } ?> </select> </form>
Donc la liste se crèt bien mais reste vide sans aucun choix

Je sais pas si il faut a chaque fois que j'ouvre un scrip php <? ?> , se connecter a la base de données car je l'ouvre déjà plus haut dans le fichier sans la fermer. Donc j'ai essayer aussi en ouvrant et fermant a chaque fois et ça ne marche toujours pas
Modifié en dernier par DébutantPHP le 13 avr. 2006, 12:26, modifié 1 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

13 avr. 2006, 12:26

Bon début !

Vérifie le nom de colonne (noms) de ta table, et as-tu installé PHPMyAdmin ou autre ?
Pour vérifier que ta requête retourne des enregistrements :) que donne :
SELECT * FROM bdargent

Tu n'as pas besoin de te reconnecter à ta bdd, et si tu avais besoin de le faire, tu aurais une erreur de MySQL
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphanteau du PHP | 13 Messages

13 avr. 2006, 12:29

Pour le nom de la colonne (du champs) c'est bel et bien "noms" (et pas "nom") donc le problème vient pas de là

Enssuite je suis chez iFrance et leur administrateur de SQL je le connais pas mais il est pas mal

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

13 avr. 2006, 12:33

Et quand tu fais afficher la source, qu'as tu ?
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphanteau du PHP | 13 Messages

13 avr. 2006, 12:43

En faisant SELECT * FROM bdargent j'obtient bien les données

Mais :oops: j'ai pas compris ce que tu dis : "afficher la source", car si c'est dans l'AdminSQL ça marche bien et je voit nettement tous ce que je veux dans mon formulaire

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

13 avr. 2006, 12:48

Dans MSIE ou Firefox ou autre.., tu affiches ta page et tu fais afficher la source:)
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphanteau du PHP | 13 Messages

13 avr. 2006, 12:52

J'ai ça (dsl j'avais pas compris ça)

Code : Tout sélectionner

<html> <head> <title></title> </head> <body> <form ACTION="verif.php" METHOD=POST> //d'autres input <select name="debite"> <? $db = mysql_connect('imysql02','i3752636','muyh6uw0ndulboyj'); $SQL = "SELECT * FROM bdargent,noms"; $res = mysql_query($SQL); while($val=mysql_fetch_array($res)) { echo "<option value="$val["noms"]">"$val["noms"]"</option>\n"; } mysql_close(); ?> </select> </form> </body> </html>

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

13 avr. 2006, 12:59

Voila j'ai suivit ton conseil en commençant par ...

Code : Tout sélectionner

<form> //d'autres input <select name="debite"> <? $SQL = "SELECT * FROM bdargent"; $res = mysql_query($SQL); while($val=mysql_fetch_array($res)) { echo "<option value="$val["noms"]">".$val["noms"]."</option>\n"; } ?> </select> </form>
...
Un p'ti problème dans l'echo : les guillemets successifs dans la même chaine PHP sont source d'erreurs, on dit il faut les "échapper" terme barbare qui veut dire les marquer par un \ pour signifier qu'il s'agit d'un caractère fesant partie de la chaine et non un délimiteur.

Correction:
tes chaines affichées sont :
echo "<option value="$val["noms"]">".$val["noms"]."</option>\n";

L'erreur est dans la première chaine en gras, elle contient une succession de guillemets ; la correction donne :
"<option value="$val['noms']">"

Les guillemets internes à échapper sont celles de la clause "value="
par contre l'index nommé du tableau $val peut être délimité par les quotes pour éviter toute ambiguité.

Résultat :
echo "<option value="$val['noms']">".$val["noms"]."</option>\n";
En plus, pour que ce programme fonctionne, il faut nommer la page avec une extension .PHP et il est conseillé de commencer toujours un bloc de code PHP par la signature <?php et non <? tout court pour lever toute ambiguité quant au mappage vers l'interpréteur PHP chargé sur le serveur Web.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphanteau du PHP | 13 Messages

13 avr. 2006, 13:15

Voila j'ai fait comme tu m'as dit en corrigeant le code suivant echo
En plus j'ai mis ce formulaire seul sur un fichier, l'execution du formulaire n'est pas importante c'est l'affichage le problème

Avec le code suivant la boite de la liste s'affiche avec un format réduit au maximum, lorsque je veux la dérouler il n'y a rien a l'intérieur

Code : Tout sélectionner

<html> <head> <title></title> </head> <body> <form> <select name="debite"> <? $db = mysql_connect('imysql02','i3752636','muyh6uw0ndulboyj'); $SQL = "SELECT * FROM bdargent"; $res = mysql_query($SQL); while($val=mysql_fetch_array($res)) { echo "<option value=\"$val['noms']\">"[/b].$val["noms"].[b]"</option>\n"; } mysql_close(); ?> </select> </form> </body> </html>

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

13 avr. 2006, 13:34

t'as oublié d'ouvrir la base de données avec mysql_select_db("tabase") avant de lancer l'ordre d'exécution de la requête et après la connexion.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

13 avr. 2006, 14:25

Là où tu vois ta liste déroulante vide, peux-tu faire CTRL + U (Voir la source HTML) et nous le coller ici ?

edit : pour sadeq : il a dit qu'il le faisait plus haut dans le fichier...la connexion à la base
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.