Récupérer ID par php via un SELECT html

Petit nouveau ! | 4 Messages

08 janv. 2006, 15:14

Bonjour, je m'explique
Via un formulaire HTML, avec un SELECT, on récupère avec php, la valeur du select, hors moi, il n'y a que l'identifiant correspondant au choix de l'utilisateur qui m'intéresse et que j'aimerais mettre (en clé étrangère) dans ma DB.
Un exemple de code vaut mieux qu'un long blabla :P, donc voici les différent codes (versions simplifiés) :

TABLE MYSQL :

Code : Tout sélectionner

Membre Statut --------- ------- membreID statutID membreNom statutNom statutID (foreign key)
FORMULAIRE XHTML :
<form method="post" action="page.php">
<input type="text" name="membreNom">
<select name="statut">
<?
    //récupèration des données de la table Statut
    mysql_connect("localhost", "root", ""); 
    mysql_select_db("nomDB");
    $sql = "select * from statut" ;  
    $res = mysql_query($sql);
    while ($val = mysql_fetch_array ($res))
   {
       echo "<option>" . $val["statutNom"] . "</option>\n";	
   } 
   mysql_close();
?>
</select>
<input type="submit" />
</form>
PAGE.PHP :
<?
  // Récupèration des valeurs du formulaire :
  $membreNom = $_POST['membreNom'];
  //[color=red]CI-DESSOUS SANS DOUTE L'ERREUR[/color]
  $statutNom = $_POST['statutNom'];
  $statutID="select statutID from Statut where statutNom  = '$statutNom'";
  $staID = mysql_query($statutID);
  mysql_connect("localhost", "root", ""); 
  mysql_select_db("nomDB");
  // Insertion dans la table Membre
  $requete = "insert into Membre values ('', '$membreNom', '$staID''')";
  msql_query ($requete) ;
  mysql_close();
?>
CE QUE J'OBTIENT :
je n'ai pas d'erreur, un nouvel enregistrement est bien inséré dans ma table Membre mais le statutID de cette table reste désespérement à 0

ViPHP
ViPHP | 649 Messages

08 janv. 2006, 15:31

Est-ce que ton champ id est bien auto-increment? Et est-il bien défini comme un clé primaire? À noter aussi que généralement, lorsqu'un champ est auto-increment, on procède plutôt de cette manière pour la requête:
<?
$sql = "INSERT INTO Membre (`nom`,`satutid`)VALUES ('$membreNom', '$staID''')" ;
?>
Cette syntaxe est à validé par PhpMyAdmin.

De plus, tu veux récupérer l'id à partir de ton formulaire, mais en affichant le nom ce qui est tout à fait possible et du coup très simple:

<form method="post" action="page.php">
<input type="text" name="membreNom">
<select name="statut">
<?
//récupèration des données de la table Statut
mysql_connect("localhost", "root", "");
mysql_select_db("nomDB");
$sql = "select * from statut" ;
$res = mysql_query($sql);
while ($val = mysql_fetch_array ($res))
{
echo '<option value="' . $id . '">' . $val["statutNom"] . '</option>\n';
}
mysql_close();
?>
</select>
<input type="submit" />
</form> 
En supposant qu $id contienne la valeur de l'id :wink:
Image

Petit nouveau ! | 4 Messages

08 janv. 2006, 18:34

Bonjour,

merci d'avoir répondu si rapidement
mais ca va tjs pas sniiif.

L'idée de carrément mettre l'id dans le VALUE de l'OPTION, me parait être la solution, mais il ne manque pas une ligne de code ? Comment la variable $id peut deviner quel est l'ID correspondant à statutNom.
C ptet tout bete, mais y'a un truc qui m'échappe :cry:
Si le code que tu m'as mis est complet, comment récupérer la valeur de $id dans ma page de traitement de formulaire ?

pas facile d'etre debutant php lol deja une nuit et une après-midi de passée juste pour ces problèmes d'ID :-s
merci

ViPHP
ViPHP | 649 Messages

08 janv. 2006, 18:36

Et bien tu récupères le nom comme cela: $val['statutNom'] , pourquoi ne pas en faire autant avec l'id?: $id = $val['statutId'] par exemple :wink:
Image

Invité
Invité n'ayant pas de compte PHPfrance

11 janv. 2006, 10:17

:lol: heu oui ct tout simple en fait (fallait qd mm y penser ;-), je te remercie alex, ca marche à merveille