Page 1 sur 1

variable qui s'évanouit

Posté : 26 sept. 2021, 01:17
par nestor94
Notice: Undefined variable: msg_nom_ville in C:\wamp64\www\ms

le formulaire
<form method="post" action="msg_nom_ville.php">
<textarea name="msg_nom_ville" row="10" cols="40" id="msg_nom_ville"></textarea>
<p></p>
<input type="submit" value="Ecrire" />
</form>
le fichier qui traite le formulaire
if(strlen($msg)>0){
$pdostat =  $bdd->prepare("UPDATE map INNER JOIN membres ON membres.pos_x = map.pos_x AND membres.pos_y = map.pos_y
SET map.msg_nom_ville = '$msg_nom_ville' WHERE membres.id= $id");
$pdostat->execute();
} else {
}
Pourquoi ma variable se perd dans la nature et/ou comment y remédier??

J'ai EXACTEMENT le meme genre de script qui lui, fonctionne ( pour pouvoir laisser un message)!

Re: variable qui s'évanouit

Posté : 26 sept. 2021, 01:36
par @rthur
Où définis-tu la variable $msg_nom_ville ?
Si elle est issue du formulaire alors il faut la récupérer dans la variable globale $_POST de cette manière : $_POST['msg_nom_ville']

Par ailleurs, si tu veux utiliser proprement les requêtes préparées PDO (en limitant le risque de sécurité), alors il ne faut pas mettre les variables directement dans la requête mais il faut utiliser bindParam().
Quelques exemples ici : https://www.php.net/manual/fr/pdo.prepa ... ements.php

Re: variable qui s'évanouit

Posté : 27 sept. 2021, 13:40
par nestor94
La variable est bien issue du formulaire.
(pour la requete préparée, je corrigerai plus tard :wink: )
ci joint aussi en commentaire, les essais non concluants
//$msg = !empty($_POST['msg_nom_ville']) ? $_POST['msg_nom_ville'] : '';
//$msg = $_POST['msg_nom_ville'] ?? '';
$_POST['msg_nom_ville'];

$msg = filter_input(INPUT_POST, 'msg_nom_ville');
if(strlen($msg)>0){
$pdostat =  $bdd->prepare("UPDATE map INNER JOIN membres ON membres.pos_x = map.pos_x AND membres.pos_y = map.pos_y
SET map.msg_nom_ville = '$msg_nom_ville' WHERE membres.id= $id");
$pdostat->execute();
Undefined variable: msg_nom_ville in C:\wamp64\www\m

Re: variable qui s'évanouit

Posté : 27 sept. 2021, 16:01
par @rthur
Tant qu'à utiliser filter_input autant ajouter le filtre FILTER_SANITIZE_STRING pour éviter les données malveillantes.
$msg = filter_input(INPUT_POST, 'msg_nom_ville', FILTER_SANITIZE_STRING);

:arrow: Et du coup c'est la variable $msg qu'il faut que tu utilises dans ta requête et pas $msg_nom_ville

Re: variable qui s'évanouit

Posté : 27 sept. 2021, 18:42
par nestor94
Super, ça fonctionne . Merci Arthur.