[RESOLU] variable qui s'évanouit

Eléphant du PHP | 345 Messages

26 sept. 2021, 01:17

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)!

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

26 sept. 2021, 01:36

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
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 345 Messages

27 sept. 2021, 13:40

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

27 sept. 2021, 16:01

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
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 345 Messages

27 sept. 2021, 18:42

Super, ça fonctionne . Merci Arthur.