[RESOLU] Variable dans les choux

Eléphant du PHP | 345 Messages

01 oct. 2021, 16:08

Je rouvre un sujet précédent car le script ne fonctionne plus ! :shock:
<?php
session_start();
require_once 'config.php';
include 'verif_PA.php';
$id = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;
$_POST['msg_nom_ville'];
$msg = filter_input(INPUT_POST, 'msg_nom_ville', FILTER_SANITIZE_STRING);
//$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', tile= '/relief/tile_ville.gif' WHERE membres.id= $id");
$pdostat->execute();
} else {
}
header('Location:page_test.html');
exit;
?>
L'update ne fait rien. La variable $msg ne passe plus via le POST

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

01 oct. 2021, 16:53

As tu activé la gestion d'erreur de PDO sur PDO::ERRMODE_WARNING ?
https://www.php.net/manual/fr/pdo.error-handling.php

As-tu testé ta requête SQL dans PHPmyadmin ?

As tu fait des var_dump() sur tes variables et le retour de execute() pour voir ce qu'il se passe dans ton code ?
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 345 Messages

01 oct. 2021, 19:17

La gestion des erreurs PDO sont actives en amont.
Dans PHPmyadmin ça a l'air de fonctionner. (en rentrant en dur un nom de pseudo et une valeur pour $msg)

Eléphant du PHP | 345 Messages

01 oct. 2021, 19:19

en mettant seulement ceci ?
<?php
session_start();
require_once 'config.php';
include 'verif_PA.php';
$id = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;

$_POST['msg_nom_ville'];
var_dump($_POST['msg_nom_ville']);
?>
Notice: Undefined index: msg_nom_ville in C:\wamp64\www\msg_nom_ville.php on line 8
Call Stack
# Time Memory Function Location
1 0.0008 405128 {main}( ) ...\msg_nom_ville.php:0

C:\wamp64\www\msg_nom_ville.php:8:null

Mammouth du PHP | 2703 Messages

01 oct. 2021, 20:23

var_dump($_POST['msg_nom_ville']);
Notice: Undefined index: msg_nom_ville in C:\wamp64\www\msg_nom_ville.php on line 8
qu'est-ce que vous en concluez ?

Eléphant du PHP | 345 Messages

02 oct. 2021, 00:47

La variable n'est pas passée.
J'ai modifié ainsi mais sans succès probant.
<?php
session_start();
require_once 'config.php';
include 'verif_PA.php';
$id = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;

if (isset($_POST['msg_nom_ville'])) {
    $msg = $_POST['msg_nom_ville'];
   }
$msg = filter_input(INPUT_POST, 'msg_nom_ville', FILTER_SANITIZE_STRING);
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', tile= '/relief/tile_ville.gif' WHERE membres.id= $id");
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();

 } else {
}
header('Location:map_detail.php');
exit;
?>

Mammouth du PHP | 2703 Messages

02 oct. 2021, 01:06

inutile de se compliquer la vie. si
var_dump($_POST['msg_nom_ville']);
ne fait pas ce qui est attendu, il faut conserver ce code le temps du débugage et le faire marcher.

Eléphant du PHP | 345 Messages

02 oct. 2021, 01:25

Le pire, c'est que meme avec ceci, ca ne redirige pas vers la page html
if(isset($_POST['nommer_ville']))
{
$msg = !empty($_POST['msg_nom_ville']) ? trim($_POST['msg_nom_ville']) : NULL;
}
if(isset($_POST['msg_nom_ville']))
{
header('Location:erreur_exploiter.html');
exit;
}

Eléphant du PHP | 345 Messages

02 oct. 2021, 14:26

Je revois completement le script (formulaire dans le meme fichier) et reviens vers vous

Eléphant du PHP | 345 Messages

02 oct. 2021, 22:54

Bon, je laisse tomber.

Mammouth du PHP | 2703 Messages

02 oct. 2021, 23:01

quel est le code html du formulaire dont le contenu est renvoyé vers ce script php ?

Eléphant du PHP | 345 Messages

03 oct. 2021, 02:30

<form method="post" action=""> 
<input type="text" name="nommer_ville" id="msg_nom_ville"/>
<input type="submit"  value="CRÉER" />
</form>
la partie php
if(isset($_POST['nommer_ville']))
 {
$msg_nom_ville = !empty($_POST['msg_nom_ville']) ? trim($_POST['msg_nom_ville']) : NULL;
 }
if(isset($_POST['msg_nom_ville']))
{
header('Location:batir_ville_KO.html');
exit;
}	

$msg_nom_ville = filter_input(INPUT_POST, 'msg_nom_ville', FILTER_SANITIZE_STRING);
if(strlen($msg_nom_ville)>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', tile= '/relief/tile_ville.gif' WHERE membres.id=:id");
$pdostat->bindvalue(':id', $idMembreSession, PDO::PARAM_INT);
$pdostat->execute();
}





Mammouth du PHP | 2703 Messages

03 oct. 2021, 11:27

qu'est-ce qu'affiche
var_dump($_POST);
dans le script php ?

Eléphant du PHP | 345 Messages

03 oct. 2021, 14:09

C:\wamp64\www\batir_ville.php:137:
array (size=0)
empty

Déjà, j'aimerai comprendre pourquoi le script ne redirige pas vers la page html puisque le $POST est vide? :shock:

Mammouth du PHP | 2703 Messages

03 oct. 2021, 15:22

Déjà, j'aimerai comprendre pourquoi le script ne redirige pas vers la page html puisque le $POST est vide? :shock:
car le code php fait exactement l'inverse. si la variable existe, faire la redirection.