Probleme formulaire liste déroulante

Résolu
nestor94 Messages postés 74 Date d'inscription   Statut Membre Dernière intervention   -  
nestor94 Messages postés 74 Date d'inscription   Statut Membre Dernière intervention   -
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.
A voir également:

9 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

Tu n'as pas mis de NAME à ton SELECT


0
KrondaliX Messages postés 382 Date d'inscription   Statut Membre Dernière intervention   132
 
Salut,

Ton select n'a pas de name il faut lui en mettre un.
0
nestor94 Messages postés 74 Date d'inscription   Statut Membre Dernière intervention  
 
<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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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 382 Date d'inscription   Statut Membre Dernière intervention   132
 
C'est normal ton submit a le même name que ton select...
0
nestor94 Messages postés 74 Date d'inscription   Statut Membre Dernière intervention  
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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   Statut Membre Dernière intervention  
 
ah oui, le é de déplacer !
Mais ca ne fonctionne toujours pas !
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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   Statut Membre Dernière intervention  
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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 382 Date d'inscription   Statut Membre Dernière intervention   132
 
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   Statut Membre Dernière intervention  
 
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 382 Date d'inscription   Statut Membre Dernière intervention   132
 
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   Statut Membre Dernière intervention  
 
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