SELECT ET DB

SYLVER
Invité n'ayant pas de compte PHPfrance

27 juil. 2006, 14:23

Salut tout le monde,
voilà je suis super nouveau en php et j'ai un problème avec ma source ou peut être ma base:
Je veux récupérer les valeurs du champ "localite" que j'ai enregistré en type énuméré dans la bd(mysql) mais y'a rien qui apparait dans la champs de selction; voici mon code:
<?
<html>
<head>
</head>
<body>
<table border=1>
<form method="POST" name="enreg" action="pers1.php">

<tr><th>Nom: <input type="text" name="nom"><th><tr>
<tr><th>Prénom: <input type="text" name="prenom"><th><tr>
<tr><th>commentaires: <textarea name="commentaires" cols=10 rows=10></textarea><th><tr>
<tr><th>Agence:<input type=text name=agence></tr></th>

<?
$db=mysql_connect('localhost','root','') ;
mysql_select_db('gesfore',$db) ;
?>
<tr><th>Localité :<select name=local>
<?
$req= "SELECT localité FROM personne";
$result = mysql_query($req);

while($devi = mysql_fetch_array($result))
{
?>
<option><? echo ''.$devi['localite'].'';?> </option>
<?
} mysql_close();
?>
</select></tr></th>


<tr><th>
<input type="submit" value="Soumettre">
</th></tr>   
</form>
</table>
</html>
?>

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

27 juil. 2006, 14:31

Modération : Il est demandé dans le règlement du forum d'encadrer du code PHP par les balises du même nom pour une meilleure lisibilité

J’ai l’ai fait pour toi mais pense-y la prochaine fois

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

27 juil. 2006, 14:32

Tu peux commencer par lire ce topic pour éventuellement dévoiler des erreurs.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

sylver
Invité n'ayant pas de compte PHPfrance

27 juil. 2006, 15:31

après lecture et relecture du topic, je trouve pas de solution à mon problème, la syntaxe a l'air ok mais rien à l'affichage

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

27 juil. 2006, 15:35

As tu remqrqué cette ligne ?
mysql_query($requeteSQL) or die (mysql_error());

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

sylver
Invité n'ayant pas de compte PHPfrance

27 juil. 2006, 15:52

oui j'ai remarqué, la syntaxe est correcte sauf le contrôle que je vais essayer de mettre j'espère hardemment que ça m'aidera ça fait 2 jours je trime sur le même problème

sylver
Invité n'ayant pas de compte PHPfrance

27 juil. 2006, 16:00

Bizare lorsque j'ajoute l'instruction OR DIE... le bouton de validation disparait; là ça me dépasse..

As tu remqrqué cette ligne ?
mysql_query($requeteSQL) or die (mysql_error());

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

27 juil. 2006, 16:08

Ce qui signifie que la condition du "or" est exécutée.... donc un die() qui a pour effet de stoper tout le reste du script.

Allons pour les soluces rapide, essaie ça:
$req= "SELECT `localité` FROM personne";
ou évite les noms de champs ou tables avec des accents !

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

sylver
Invité n'ayant pas de compte PHPfrance

27 juil. 2006, 16:24

en fait l'accent était une erreur, et je l'ai corrigé; et puis j'ai essayé d'exécuter la requête sous phpmyadm que j'utilise et ça me renvois un résultat avec le champ vide; de là je sais maintenant que mon problème vient de ma base, la requête est peut être le problème ...je pense surtout au type énuméré que j'ai utilisé pour définir le champ localité, je sais pas si la requête est mal enoncée..

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

27 juil. 2006, 16:48

la requête est correcte hormis l'accent.

Mais si tu as mis un type ENUM pour toutes les localités... de france ? :shock:

La base contient bien des données ?

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

sylver
Invité n'ayant pas de compte PHPfrance

28 juil. 2006, 11:37

pour les localité je prend nord, est , sud ouest, que j'ai entré en énuméré ; mais je n'avais encore effectué aucun enregistrement et lorsque j'en effectu si je choisi nord comme localite la zone de select prend nord, et puis j'ai l'impression qu'il faille que j'entre d'abord 4 enreg avec des localités différentes pour les avoir ds le select , pourtant je le voulais par défaut sans avoir fait un enreg.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

28 juil. 2006, 11:59

j'ai l'impression qu'il faille que j'entre d'abord 4 enreg avec des localités différentes pour les avoir ds le select
oui logique... la requête affiche le contenu de la base, si elle ne contient rien elle n'affichera rien :wink:

Si tu veux que la liste soit remplie par défaut tu peux soit entrer la liste en dur solution la plus simple, rapide et je ne pense pas qu'on va inventer un nouveau point cardinal :)
donc pas de retouche au code.

Sinon une autre table avec juste un id et la cardinalité. Cette table est remplie avec les cardinalité Nord, Sud, Est et Ouest. Tu fera le lien entre cette table et la table "personne" grâce aux id.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

sylver
Invité n'ayant pas de compte PHPfrance

28 juil. 2006, 12:15

c'est une idée créer une autre table,jcrois que jvais opter pour cette solution.
Merçi, c'est vraiment sympa.

sylver
Invité n'ayant pas de compte PHPfrance

28 juil. 2006, 14:33

Problème résolu , ça a marché.merçi encore.
Sinon une autre table avec juste un id et la cardinalité. Cette table est remplie avec les cardinalité Nord, Sud, Est et Ouest. Tu fera le lien entre cette table et la table "personne" grâce aux id.
:wink: