Probleme formulaire liste déroulante

Résolu/Fermé
nestor94 Messages postés 74 Date d'inscription dimanche 28 février 2021 Statut Membre Dernière intervention 14 octobre 2021 - Modifié le 30 avril 2021 à 10:18
nestor94 Messages postés 74 Date d'inscription dimanche 28 février 2021 Statut Membre Dernière intervention 14 octobre 2021 - 30 avril 2021 à 23:41
Bonjour, ce formulaire ne renvoie rien. Ca doit etre simple mais je ne trouve pas la soluce.
<table>
<td>
<form name="form" method="post" action=" " enctype="multipart/form-data">
<p>
<label for="choix"><b>CHOIX:</b></label>
<select>
<option value="contenant">CONTENANT</option>
<option value="contenu">CONTENU</option>
<option value="objet1">OBJET1</option>
<option value="objet2">OBJET2</option>
<option value="objet3">OBJET3</option>
<option value="vehicule">VEHICULE</option>
</select>
</p>
<div align="center">
<br>
<input type="submit" name="choix" value="VALIDER" />
</td>
</div>
</form>



J'ai essayé avec un input type="select" cela rajoute un champ vide et l'option choisie n'est toujours pas mise a jour en bdd.

9 réponses

jordane45 Messages postés 36586 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 novembre 2022 4 411
30 avril 2021 à 10:20
Bonjour,

Tu n'as pas mis de NAME à ton SELECT


0
KrondaliX Messages postés 376 Date d'inscription mercredi 19 juin 2013 Statut Membre Dernière intervention 1 mai 2022 134
30 avril 2021 à 10:21
Salut,

Ton select n'a pas de name il faut lui en mettre un.
0
nestor94 Messages postés 74 Date d'inscription dimanche 28 février 2021 Statut Membre Dernière intervention 14 octobre 2021
Modifié le 30 avril 2021 à 10:45
<form name="form" method="post" action=" " enctype="multipart/form-data">
<p>
<label for="choix"><b>CHOIX:</b></label>
<select name="choix">
<option value="contenant">CONTENANT</option>
<option value="contenu">CONTENU</option>
<option value="objet1">OBJET1</option>
<option value="objet2">OBJET2</option>
<option value="objet3">OBJET3</option>
<option value="vehicule">VEHICULE</option>
</select>
</p>
<div align="center">
<br>
<input type="submit" name="choix" value="VALIDER" />
</td>
</div>
</form>



la mise à jour ne se fait toujours pas.
0
jordane45 Messages postés 36586 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 novembre 2022 4 411
Modifié le 30 avril 2021 à 10:52
Vide ton cache
Et ajoute, au début de ton script php, un var_dump($_POST); pour nous montrer ce que ça te donne.

Par contre tu parles de mise à jour .... de quoi parles tu ? Ici il n'est question que de l'envoi de la valeur d'un select en POST .. pas de mises à jour !

Tu verras que tu as mis le même nom sur ton bouton et ton form.. il ne faut pas;

NB: Tu peux aussi retirer le enctype="multipart/form-data" vu que tu n'envoies pas de fichier
NB² : Dans l'attribut action, retire l'espace que tu as entre les quotes
NB3 : Tu as quoi d'autre comme code dans ta page ..??
0
KrondaliX Messages postés 376 Date d'inscription mercredi 19 juin 2013 Statut Membre Dernière intervention 1 mai 2022 134
30 avril 2021 à 10:51
C'est normal ton submit a le même name que ton select...
0
nestor94 Messages postés 74 Date d'inscription dimanche 28 février 2021 Statut Membre Dernière intervention 14 octobre 2021
30 avril 2021 à 14:55
Cache vidé.
Tous les var_dump($_POST) sont OK.
enctype="multipart/form-data" supprimé.
espace dans "action" supprimé.

voici le script (épuré)

<?php
session_start();
require_once 'config.php';
$id = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;
$sql = "SELECT decouverte FROM membres WHERE id=:id";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
$resultat = $pdostat->fetch();    
$decouverte = $resultat['decouverte'];
$sql = "SELECT item, usure_item, qte_item FROM map LEFT JOIN membres ON map.pos_x = membres.pos_x AND map.pos_y = membres.pos_y WHERE membres.id= $id";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
$resultat = $pdostat->fetch();    
$item = $resultat['item'];
$usure_item = $resultat['usure_item'];
$qte_item = $resultat['qte_item'];
if(isset($_POST['choix']))  
 {
$contenant = !empty($_POST['CONTENANT']) ? trim($_POST['CONTENANT']) : NULL;
$sql = "UPDATE membres SET  contenant = '$item', usure_contenant= '$usure_item' WHERE id =:id";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();

$contenu_contenant = !empty($_POST['CONTENU']) ? trim($_POST['CONTENU']) : NULL;
$sql = "UPDATE membres SET contenu_contenant = '$item', qte_contenant= '$qte_item' WHERE id =:id";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();

$objet1 = !empty($_POST['OBJET1']) ? trim($_POST['OBJET1']) : NULL;
$sql = "UPDATE membres SET objet1 = '$item', usure_objet1= '$usure_item' WHERE id =:id";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();

$objet2 = !empty($_POST['OBJET2']) ? trim($_POST['OBJET2']) : NULL;
$sql = "UPDATE membres SET objet2 = '$item', usure_objet2 = '$usure_item' WHERE id =:id";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();

$objet3 = !empty($_POST['OBJET3']) ? trim($_POST['OBJET3']) : NULL;
$sql = "UPDATE membres SET objet3 = '$item', usure_objet3= '$usure_item' WHERE id =:id";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();

$vehicule = !empty($_POST['VEHICULE']) ? trim($_POST['VEHICULE']) : NULL;
$sql = "UPDATE membres SET vehicule = '$item', usure_vehicule= '$usure_item' WHERE id =:id";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();

header('Location:page_membre.php');
 }
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>trouvaille</title>
</head>
<body>
<table>
<td>
<form name="form" method="post" action="" enctype="multipart/form-data">
<p>
<label for="choix"><b>DEPLACER:</b></label>
<select name="déplacer">
<option value="contenant">CONTENANT</option>
<option value="contenu">CONTENU</option>
<option value="objet1">OBJET1</option>
<option value="objet2">OBJET2</option>
<option value="objet3">OBJET3</option>
<option value="vehicule">VEHICULE</option>
</select>
</p>
<div align="center">
<br>
<input type="submit" name="choix" value="VALIDER" />
</td>
</div>
</form>
</td>
</table>
<br><br><br><a href="page_membre.php">vers page membre</a></center>
</body>
</html>
0
jordane45 Messages postés 36586 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 novembre 2022 4 411
30 avril 2021 à 15:11
Pas de caractères accentués dans le nom des variable ou dans les attribut HTML !!
0

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

Posez votre question
nestor94 Messages postés 74 Date d'inscription dimanche 28 février 2021 Statut Membre Dernière intervention 14 octobre 2021
30 avril 2021 à 16:42
ah oui, le é de déplacer !
Mais ca ne fonctionne toujours pas !
0
jordane45 Messages postés 36586 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 novembre 2022 4 411
Modifié le 30 avril 2021 à 17:43
Tu ne nous a toujours pas montrer ce que tu affiches le Var_dump ...

Sachant que, pour pouvoir voir les éventuelles erreurs, il faut mettre en commentaire l'instruction de redirection qui se trouve la ligne 57...
0
nestor94 Messages postés 74 Date d'inscription dimanche 28 février 2021 Statut Membre Dernière intervention 14 octobre 2021
30 avril 2021 à 21:15
C:\wamp64\www\action_trouvaille.php:27:
array (size=2)
'déplacer' => string 'contenant' (length=9)
'choix' => string 'VALIDER' (length=7)

C:\wamp64\www\action_trouvaille.php:27:
array (size=2)
'déplacer' => string 'contenu' (length=7)
'choix' => string 'VALIDER' (length=7)

C:\wamp64\www\action_trouvaille.php:27:
array (size=2)
'déplacer' => string 'objet1' (length=6)
'choix' => string 'VALIDER' (length=7)

etc
0
jordane45 Messages postés 36586 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 novembre 2022 4 411
30 avril 2021 à 21:18
Donc le choix que tu fais dans ta liste deroulante est bien transmise en post.
C'était bien là le problème initial de ta question... Et donc c'est résolu...

Si tu rencontres un autre souci, merci d'expliquer en détail ce qui ne fonctionne pas selon toi et précise nous quelle partie du code exactement est concernée.
0
KrondaliX Messages postés 376 Date d'inscription mercredi 19 juin 2013 Statut Membre Dernière intervention 1 mai 2022 134
Modifié le 30 avril 2021 à 21:55
Ouais je comprends mieux pourquoi ça fonctionne pas ton histoire là...

Tu fais des UPDATE sur des POSTS de value="" au lieu des name="" pour ton script PHP ça ne peux pas marcher comme ça.

Tout d'abord entre la ligne 20 et 58, tu lui demande de faire un UPDATE en fonction d'un POST non empty des lignes 73 à 78 et ça c'est faux. Le POST veut des name="" pas des value="" qui elles servent d'information à transmettre dans le POST mais elles ne peuvent pas être le POST lui-même.

Tu peux effacer toutes les lignes de 27 à 55. Ne garde qu'une seule requête et change juste la variable "CONTENANT" pour "déplacer" à la ligne 21 qui prendra le name="déplacer" du <select> qui se trouve à la ligne 72. de plus je te conseille de virer l'accent également.

Après à la ligne 22 j'sais pas comment t'as fait ta bdd et je capte pas trop ton histoire du $item est-ce que tu peux me faire un screenshot de ta bdd que j'puisse voir les colonnes pour mieux capter ce que tu cherches à faire avec ton p'tit PHP ? Merci.
0
nestor94 Messages postés 74 Date d'inscription dimanche 28 février 2021 Statut Membre Dernière intervention 14 octobre 2021
30 avril 2021 à 22:39
Pour ce qui est du $item, laisse tomber je me suis planté avec le script précédent. Voila ce que j'ai corrigé.
<?php
session_start();
require_once 'config.php';
include 'verif_PA.php';
$id = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;
$sql = "SELECT decouverte FROM membres WHERE id=:id";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
$resultat = $pdostat->fetch();    
$decouverte = $resultat['decouverte'];
if(isset($_POST['choix']))  
 {
$contenant = !empty($_POST['deplacer']) ? trim($_POST['deplacer']) : NULL; 
$sql = "UPDATE membres SET contenant = '$decouverte' WHERE id =:id";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
header('Location:page_membre.php');
 }
?> 
<b>VOTRE TROUVAILLE</b>
<br><br><br><?php echo '<img src="'.$decouverte.'">';?> 
<br><br> 
<table>
<td>
<form name="form" method="post" action="">
<p>
<label for="choix"><b>DEPLACER VERS:</b></label>
<select name="deplacer">
<option value="contenant">CONTENANT</option>
<option value="contenu">CONTENU</option>
<option value="objet1">OBJET1</option>
<option value="objet2">OBJET2</option>
<option value="objet3">OBJET3</option>
<option value="vehicule">VEHICULE</option>
</select>
</p>
<div align="center">
<br>
<input type="submit" name="choix" value="VALIDER" />


le soucis, c'est que le form est une liste déroulante. Et tel quel, cela ne fonctionne que pour un cas (en l'occurence "CONTENANT")
Quel autre code pour updater par exemple le choix "OBJET1" ?
0
KrondaliX Messages postés 376 Date d'inscription mercredi 19 juin 2013 Statut Membre Dernière intervention 1 mai 2022 134
30 avril 2021 à 22:50
Je vois,

Entre la ligne 14 et 15 il faut mettre un if voici un exemple:

if($_POST['deplacer'] == "objet1") {Là tu fais l'UPDATE SET en fonction de cette valeur}


Attention dans la ligne 33 ce que retourne le POST c'est value="objet1" et non pas ce qui est entre les balises <option>"OBJET1"</option> donc ton IF == doit être objet1 et non pas OBJET1. à bien noter même si c'est une question de majuscule.
0
nestor94 Messages postés 74 Date d'inscription dimanche 28 février 2021 Statut Membre Dernière intervention 14 octobre 2021
30 avril 2021 à 23:41
Merci beaucoup KrondaliX !
Ca fonctionne impeccable.

<?php
session_start();
require_once 'config.php';
include 'verif_PA.php';
$id = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;
$sql = "SELECT decouverte FROM membres WHERE id=:id";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
$resultat = $pdostat->fetch();    
$decouverte = $resultat['decouverte'];
if(isset($_POST['choix']))  
 {
$contenant = !empty($_POST['deplacer']) ? trim($_POST['deplacer']) : NULL;
if($_POST['deplacer'] == "contenant") 
{
$sql = "UPDATE membres SET contenant = '$decouverte', decouverte= '/objets/rien.gif', usure_decouverte = 0 WHERE id =:id";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
header('Location:page_membre.php');
}
if($_POST['deplacer'] == "contenu") 
{
$sql = "UPDATE membres SET contenu = '$decouverte', decouverte= '/objets/rien.gif', usure_decouverte = 0 WHERE id =:id";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
header('Location:page_membre.php');
}
if($_POST['deplacer'] == "objet1") 
{
$sql = "UPDATE membres SET objet1 = '$decouverte', decouverte= '/objets/rien.gif', usure_decouverte = 0 WHERE id =:id";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
header('Location:page_membre.php');
}
if($_POST['deplacer'] == "objet2") 
{
$sql = "UPDATE membres SET objet2 = '$decouverte', decouverte= '/objets/rien.gif', usure_decouverte = 0 WHERE id =:id";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
header('Location:page_membre.php');
}
if($_POST['deplacer'] == "objet3") 
{
$sql = "UPDATE membres SET objet3 = '$decouverte', decouverte= '/objets/rien.gif', usure_decouverte = 0 WHERE id =:id";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
header('Location:page_membre.php');
}
if($_POST['deplacer'] == "vehicule") 
{
$sql = "UPDATE membres SET vehicule = '$decouverte', decouverte= '/objets/rien.gif', usure_decouverte = 0 WHERE id =:id";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();
header('Location:page_membre.php');
}

 }
?> 
0