Probleme formulaire liste déroulante [Résolu]

Signaler
Messages postés
73
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
6 mai 2021
-
Messages postés
73
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
6 mai 2021
-
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

Messages postés
32433
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 mai 2021
3 481
Bonjour,

Tu n'as pas mis de NAME à ton SELECT


Messages postés
301
Date d'inscription
mercredi 19 juin 2013
Statut
Membre
Dernière intervention
1 mai 2021
106
Salut,

Ton select n'a pas de name il faut lui en mettre un.
Messages postés
73
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
6 mai 2021

<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.
Messages postés
32433
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 mai 2021
3 481
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 ..??
Messages postés
301
Date d'inscription
mercredi 19 juin 2013
Statut
Membre
Dernière intervention
1 mai 2021
106
C'est normal ton submit a le même name que ton select...
Messages postés
73
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
6 mai 2021

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>
Messages postés
32433
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 mai 2021
3 481
Pas de caractères accentués dans le nom des variable ou dans les attribut HTML !!
Messages postés
73
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
6 mai 2021

ah oui, le é de déplacer !
Mais ca ne fonctionne toujours pas !
Messages postés
32433
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 mai 2021
3 481
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...
Messages postés
73
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
6 mai 2021

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
Messages postés
32433
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 mai 2021
3 481
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.
Messages postés
301
Date d'inscription
mercredi 19 juin 2013
Statut
Membre
Dernière intervention
1 mai 2021
106
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.
Messages postés
73
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
6 mai 2021

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" ?
Messages postés
301
Date d'inscription
mercredi 19 juin 2013
Statut
Membre
Dernière intervention
1 mai 2021
106
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.
Messages postés
73
Date d'inscription
dimanche 28 février 2021
Statut
Membre
Dernière intervention
6 mai 2021

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');
}

 }
?>