Page 1 sur 1

problème construction update

Posté : 08 sept. 2021, 18:36
par nestor94
Bonjour,
je n'arrive pas à mettre à jour sur le dernier update :cry:


<?php
$sql = "UPDATE membres SET pos_x = pos_x, pos_y= pos_y+1, dep_vehicule= dep_vehicule-1, pos_x_vehicule= pos_x, pos_y_vehicule= pos_y WHERE id=:id";
$pdostat = $bdd->prepare($sql);
$pdostat->bindvalue(':id',$id ,PDO::PARAM_INT);
$pdostat->execute();

$pdostat = $bdd->prepare('SELECT * FROM membres WHERE id = :id);
$pdostat->bindvalue(':id', $id, PDO::PARAM_INT);
$pdostat->execute();
$resultat = $pdostat->fetch();
if (!empty($resultat)) {
$pos_x =  $resultat['pos_x'];
$pos_y =  $resultat['pos_y'];
$id_captif = $resultat['id_captif'];

}

$pdostat = $bdd->prepare("UPDATE membres SET pos_x = :pos_x AND pos_y = :pos_y WHERE id = :id_captif");
$pdostat->bindvalue(':id_captif', $resultat['id_captif'], PDO::PARAM_INT);
$pdostat->bindvalue(':pos_x', $resultat['pos_x'], PDO::PARAM_INT);
$pdostat->bindvalue(':pos_y', $resultat['pos_y'], PDO::PARAM_INT);
header('Location:map_maj.php');
exit;
?>

Re: problème construction update

Posté : 08 sept. 2021, 20:18
par ynx
Bonjour,

Il y a une erreur de syntaxe dans le code : il manque un guillemet pour fermer la chaîne de caractère qui contient la deuxième requête.
$pdostat = $bdd->prepare('SELECT * FROM membres WHERE id = :id');
Si ce n'est pas déjà le cas, tu devrais activer l'affichage des erreurs PHP en développement pour avoir un message indiquant l'erreur et le numéro de la ligne où elle s'est produite.

Re: problème construction update

Posté : 08 sept. 2021, 23:39
par nestor94
pour le guillemet, sans doute un loupé avec le copier/coller.
je n'ai aucun message d'erreurs. le perso se déplace bien une case au nord et la table se met à jour. Mais pas pour son "captif" (qui l'accompagne lors de chaque déplacement)...
les var_dump des 3 variables donnent bien ce qui est existant
C:\wamp64\www\move_N_apied.php:43:string '468' (length=3) pour $pos_x

C:\wamp64\www\move_N_apied.php:44:string '67' (length=2) pour $pos_y

C:\wamp64\www\move_N_apied.php:45:string '18' (length=2) pour l'id du joueur captif

Re: problème construction update

Posté : 08 sept. 2021, 23:54
par or 1
sans exécuter la requête, il ne faut pas s'attendre à ce qu'il y ai des changements.

Re: problème construction update

Posté : 09 sept. 2021, 10:18
par nestor94
$pdostat = $bdd->prepare("SELECT * FROM membres WHERE id = :id");
$pdostat->bindvalue(':id', $id, PDO::PARAM_INT);
$pdostat->execute();
$resultat = $pdostat->fetch();
if (!empty($resultat)) {
$pos_x =  $resultat['pos_x'];
$pos_y =  $resultat['pos_y'];
$id_captif = $resultat['id_captif'];
}
	
$pdostat = $bdd->prepare("UPDATE membres SET pos_x = :pos_x , pos_y = :pos_y WHERE id =:id_captif");

$pdostat->bindvalue(':id_captif', $resultat['id_captif'], PDO::PARAM_INT);
$pdostat->bindvalue(':pos_x', $resultat['pos_x'], PDO::PARAM_INT);
$pdostat->bindvalue(':pos_y', $resultat['pos_y'], PDO::PARAM_INT);
$pdostat->execute();


header('Location:map_maj.php');
exit;
?>