Page 1 sur 1

SELECT ET DB

Posté : 27 juil. 2006, 14:23
par SYLVER
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>
?>

Posté : 27 juil. 2006, 14:31
par Truc
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

Posté : 27 juil. 2006, 14:32
par Truc
Tu peux commencer par lire ce topic pour éventuellement dévoiler des erreurs.

rien

Posté : 27 juil. 2006, 15:31
par sylver
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

Posté : 27 juil. 2006, 15:35
par Truc
As tu remqrqué cette ligne ?
mysql_query($requeteSQL) or die (mysql_error());

Posté : 27 juil. 2006, 15:52
par sylver
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

Posté : 27 juil. 2006, 16:00
par sylver
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());

Posté : 27 juil. 2006, 16:08
par Truc
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 !

Posté : 27 juil. 2006, 16:24
par sylver
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..

Posté : 27 juil. 2006, 16:48
par Truc
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 ?

Posté : 28 juil. 2006, 11:37
par sylver
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.

Posté : 28 juil. 2006, 11:59
par Truc
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.

Posté : 28 juil. 2006, 12:15
par sylver
c'est une idée créer une autre table,jcrois que jvais opter pour cette solution.
Merçi, c'est vraiment sympa.

Posté : 28 juil. 2006, 14:33
par sylver
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: