Récupérer id d'un <select><option>//php//html

Résolu/Fermé
the_jb Messages postés 651 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 9 mai 2016 - Modifié par the_jb le 14/07/2012 à 19:24
 KIKOFF - 3 avril 2013 à 20:44
Bonjour, j'ai un ptit soucis de récupération de variable très simple sauf que je me creuse la tête pour trouver où est le problème ...

Tout d'abord j'ouvre mon form :
echo"<form action='modif.php' method='POST'>";

Je récupère des données via ma base de donnée :
$requete="select * from tarif";
$resultat=mysql_query($requete)

Après ca je fais :
echo "<select name="id_prix">
while($rows=mysql_fetch_array($resultat))
{
echo"<option value=' ".$rows['id_prix']." '>".rows['desc']." - ".rows['prix']."</option>"
}
echo"</select>";

tout simplement. Cela fonctionne car il me récupère bien tous les tarifs sauf que j'aimerais pouvoir modifier le prix d'un article.

Donc j'ai ajouté :
echo"<input type='text' name='prix'><input type='submit' name='modif' id='modif' value='Modifier'></form>";

Et donc quand je clic sur modifier rien ne se passe.. j'ai fait un echo $_POST['id_prix'] et $_POST['prix']... il m'affiche que le prix. et quand je fais un $rows['id_prix'] dans mon <option> il me les affiche...

A l'evennement submit j'effectue une requete simple :

$sql="UPDATE 'tarif' SET prix='$_POST['prix'] WHERE id_prix='$_POST['id_prix']";
$result=mysql_query($sql);

Je suis proche je le sent mais...
P'tite question : Auriez vous une meilleur solution pour modifier le prix d'un article ?
Merci pour votre aide

11 réponses

tryan44 Messages postés 1288 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 219
14 juil. 2012 à 22:25
$_POST['id_prix'] renvoie $rows['id_prix']
$_POST['prix'] ne peut rien renvoyé puisqu'il est en dehors de la boucle while et ne contient aucune valeur (value).

L'idée serait peut être d'ajouter le prix suite à l'id renvoyé de la value de boucle, d'effectuer un rechargement de la page à la sélection de la liste pour y afficher le champ de modification et de validation, etc...

En gros, non testé et juste pour l'idée :

<form action="modif.php" method="POST">
<?php
$requete="select * from tarif"; 
$resultat=mysql_query($requete);

//rechargement de la page à la sélection
echo '<select name="id_prix" onchange="javascript:submit(this)">';
while($rows=mysql_fetch_array($resultat)) 
{ 
	//insertion de l'id + prix dans le value séparé par un tiret
	echo '<option value="'.$rows['id_prix'].'-'.$rows['prix'].'">'.$rows['desc'].' - '.$rows['prix'].'</option>';
} 
echo '</select>'; 
//à la sélection de la liste
if(isset($_POST['id_prix'])){
    //on effectue un explode du value pour séparer l'id du prix
	$explore = explode('-',$_POST['id_prix']);
	//$explore[0] = id_prix
	//$explore[1] = prix
	//on case le tout dans des champs
	echo '<input type="text" name="id" value="'.$explore[0].'">
<input type="text" name="prix" value="'.$explore[1].'">
<input type="submit" name="modif" id="modif" value="Modifier">';
}
echo '</form>';
//si action de valider
if(isset($_POST['modif'])){
	$sql="UPDATE tarif SET prix=$_POST['prix'] WHERE id_prix=$_POST['id']"; 
	$result=mysql_query($sql); 
}
?>
1
the_jb Messages postés 651 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 9 mai 2016 58
15 juil. 2012 à 10:02
Ok merci pour tout je test quelque chose dans ce genre et je t'en redonne des nouvelles
0
the_jb Messages postés 651 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 9 mai 2016 58
Modifié par the_jb le 15/07/2012 à 10:14
L"idée de la remise du prix concernant l'article etait deja fait mais je ne l'avais pas rajouté à mon post. En tout cas celui ci me fait exactement la meme chose : lors de la selection, il revient toujours à la première valeur cependant il affiche le bon prix de l'article selectionné ..

il ne récupère toujours pas la valeur correspondante (l'id correspondant)...
0
tryan44 Messages postés 1288 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 219
15 juil. 2012 à 12:18
Étonnant... votre formulaire en version simplifié sur le principe de mon dernier poste :
<form action="#" method="POST">
<select name="id_prix" onchange="javascript:submit(this)"> 
<option value="1-100" <?php if($_POST['id_prix']=='1-100'){ echo "selected='selected'";}?>>100</option>
<option value="2-200" <?php if($_POST['id_prix']=='2-200'){ echo "selected='selected'";}?>>200</option>
<option value="3-300" <?php if($_POST['id_prix']=='3-300'){ echo "selected='selected'";}?>>300</option>
</select>
<?php
//à la sélection de la liste
if(isset($_POST['id_prix'])){
	echo 'Value = '.$_POST['id_prix'].'';
	//on effectue un explode du value pour séparer l'id du prix
	$explore = explode('-',$_POST['id_prix']);
	echo '<pre>';
	print_r($explore);
	echo '</pre>';
	//on case le tout dans des champs
	echo 'id:<input type="text" name="id" value="'.$explore[0].'" READONLY><br/>
prix:<input type="text" name="prix" value="'.$explore[1].'"><br/>
<input type="submit" name="modif" id="modif" value="Modifier">';
}
?>
</form>

<?php 
//si action de valider
if(isset($_POST['modif'])){
	echo 'id='.$_POST['id'].'<br/>prix='.$_POST['prix'].'';
	/*ici on a donc l'Update avec redirection vers la même page pour que la liste prenne en compte la modification du prix*/
}
?>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
the_jb Messages postés 651 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 9 mai 2016 58
Modifié par the_jb le 15/07/2012 à 13:13
Je ne comprend pas, pourtant mon id s'affiche bien dans mon input ... j'ai testé ma requete dans phpmyadmin elle fonctionne parfaitement ... Sauf que ma selection reviens toujours par défaut à 0 après l'évenement submit

Je ne sais pas quel est le problème ?
0
tryan44 Messages postés 1288 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 219
15 juil. 2012 à 14:48
Dans vos "option" de votre liste, il faut un élément de comparaison pour rester sur la sélection "selected='selected'" sinon à chaque submit la liste revient par défaut au début.

<option value=valeur" <?php if($_POST['id_prix']=='valeur'){ echo "selected='selected'";}?>>***</option>
0
the_jb Messages postés 651 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 9 mai 2016 58
15 juil. 2012 à 18:40
oww... <option value=valeur ?? oui enfin "echo '<option value="'.$rows['id_prix'].'" renvoi une valeur différente à chaque fois. en l'occurrence 1,2,3,... un simple $rows['id_prix'] placer dans l'option affiche ceci. donc c'est bien que chaque id sont différent. Le truc c'est pourquoi il ne veut pas le garder. Pourtant à l'évenement submit je lui dit d'afficher l'id_prix et il me l'affiche ...

Je vais essayé ce que tu m'as écris ci-dessus pour pouvoir garder l'option selectionnée.
0
tryan44 Messages postés 1288 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 219
15 juil. 2012 à 18:52
ça devrait donner un truc du style :
echo '<option value="'.$rows['id_prix'].'-'.$rows['prix'].'"';
if($_POST['id_prix']==''.$rows['id_prix'].'-'.$rows['prix'].''){ echo "selected='selected'";}
echo '>'.$rows['desc'].' - '.$rows['prix'].'</option>';
0
Bravo et félicitation le code est clair optimal y'a des virgules qui m'echape mais vraiment bravo et merci vraiment merci christophe du b68
0
J'ai jamais vu une tel incrémentation et pour un code simple mais en plus d'être bien pensée c'est optimale ment écrit bravo ça c du programmeur j'en prend plein la vu tu métrise ce langage
Mais ou as tu appris cette syntaxe? quelle formation? autodidacte?
J'aimerais prendre contact et te soumettre quelques lignes de code Je payerai si tu le veux
christophe diebold alsace 68 adresse d.christophe68@ yahoo ou hotmail.fr Merci se serrais vraiment cool de prendre contacts a 1 de C 4 ' j'espere
0
the_jb Messages postés 651 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 9 mai 2016 58
15 juil. 2012 à 19:29
je test ;D.
0
the_jb Messages postés 651 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 9 mai 2016 58
15 juil. 2012 à 22:19
Oui ça fonctionne. ça garde bien l'article selectionné ! Mais ne veut toujours pas modifier =(
0
the_jb Messages postés 651 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 9 mai 2016 58
15 juil. 2012 à 22:26
ça y est, j'ai réussi. Après avoir gardé la selection j'ai modifier la requete en rajouter juste 2 ptits " et ça fonctionne . Merci pour ton aide !
0