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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Récupérer ID par php via un SELECT html

par Invité » 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

par alexbad » 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:

par TurricanII » 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

par alexbad » 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:

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

par TurricanII » 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