Page 1 sur 1

Update ne fonctionne pas

Posté : 05 sept. 2021, 11:08
par nestor94
J'ai essayé de calquer ce script sur le dernier corrigé mais il n'effectue aucune action en table.
<?php
session_start();
require_once 'config.php';
// id du membre connecté en session
$idMembreSession = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;

// récupération en bdd du membre connecté en session
$pdostat = $bdd->prepare('SELECT * FROM membres WHERE id = :id');
$pdostat->bindvalue(':id', $idMembreSession, PDO::PARAM_INT);
$pdostat->execute();

$membreSession = $pdostat->fetch();

if (empty($membreSession)) {
    // le membre n'est pas connecté ou n'existe plus, on redirige vers la page de connexion
    header('Location: /connexion.php');
    exit();
}

// identifiant du membre sélectionné dans l'url
$idMembreSelect = !empty($_GET['id']) ? $_GET['id'] : NULL;

// récupération en bdd du membre sélectionné dans l'url (si il est toujours à proximité du membre connecté en session et pas en vacances)
$pdostat = $bdd->prepare("SELECT * FROM membres WHERE id= :id AND (pos_x = :pos_x AND pos_y = :pos_y) AND vacance = 'OFF'");
$pdostat->bindvalue(':id', $idMembreSelect, PDO::PARAM_INT);
$pdostat->bindvalue(':pos_x', $membreSession['pos_x'], PDO::PARAM_INT);
$pdostat->bindvalue(':pos_y', $membreSession['pos_y'], PDO::PARAM_INT);
$pdostat->execute();

$membreSelect = $pdostat->fetch();
$pseudo = $membreSelect['pseudo'];
$avatar = $membreSelect['avatar'];
$id = $membreSelect['id'];
$boulot = $membreSelect['boulot'];
if (!empty($membreSelect)) {
$pdostat = $bdd->prepare("UPDATE membres SET boulot = 'CAPTIF' WHERE id=:id");
$pdostat->bindvalue(':id', $idMembreSelect, PDO::PARAM_INT);
$pdostat->execute();
	
$pdostat = $bdd->prepare("UPDATE membres SET captif= '$pseudo', nbre_captif=1, avatar_captif = '$avatar', id_captif= '$idMembreSelect' WHERE id=:id");
$pdostat->bindvalue(':id', $idMembreSession, PDO::PARAM_INT);
$pdostat->execute();
}
?>


Re: Update ne fonctionne pas

Posté : 05 sept. 2021, 11:17
par or 1
il faut debuguer, ajouter des echo pour voir où cela passe, si cela rentre dans le if qui fait les update.

Re: Update ne fonctionne pas

Posté : 06 sept. 2021, 09:52
par nestor94
J'ai remis le script dans celui d'origine (on y arrivait via un header) et là, ça fonctionne dans les deux cas de figure (capture Ok et capture KO) 8-)

<?php
session_start();
require_once 'config.php';
include 'capture_maj.php';
// id du membre connecté en session
$idMembreSession = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;

// récupération en bdd du membre connecté en session
$pdostat = $bdd->prepare('SELECT * FROM membres WHERE id = :id');
$pdostat->bindvalue(':id', $idMembreSession, PDO::PARAM_INT);
$pdostat->execute();

$membreSession = $pdostat->fetch();

if (empty($membreSession)) {
    // le membre n'est pas connecté ou n'existe plus, on redirige vers la page de connexion
    header('Location: /connexion.php');
    exit();
}

// identifiant du membre sélectionné dans l'url
$idMembreSelect = !empty($_GET['id']) ? $_GET['id'] : NULL;

// récupération en bdd du membre sélectionné dans l'url (si il est toujours à proximité du membre connecté en session et pas en vacances)
$pdostat = $bdd->prepare("SELECT * FROM membres WHERE id = :id AND (pos_x = :pos_x AND pos_y = :pos_y) AND vacance = 'OFF'");
$pdostat->bindvalue(':id', $idMembreSelect, PDO::PARAM_INT);
$pdostat->bindvalue(':pos_x', $membreSession['pos_x'], PDO::PARAM_INT);
$pdostat->bindvalue(':pos_y', $membreSession['pos_y'], PDO::PARAM_INT);
$pdostat->execute();

$membreSelect = $pdostat->fetch();

// on sélectionne la valeur capture du joueur present

$capturePerso = $membreSelect['capture'];

// on sélectionne aussi les autres valeurs qui seront mises à jour

$pseudo = $membreSelect['pseudo'];
$avatar = $membreSelect['avatar'];
$id = $membreSelect['id'];
$boulot = $membreSelect['boulot'];


// on sélectionne la valeur capture du joueur attaquant

$pdostat = $bdd->prepare("SELECT capture FROM membres WHERE id = :id");
$pdostat->bindvalue(':id',$idMembreSession ,PDO::PARAM_INT);
$pdostat->execute();
$membreSession = $pdostat->fetch();

$captureMembre = $membreSession['capture'];

// sequence de la tentative de capture
if($captureMembre < $capturePerso)
{
	header('Location:capture_KO.php');
	exit;
}
else
{
//On met a jour les tables respectives pour attaquant et capturé!
$pdostat = $bdd->prepare("UPDATE membres SET boulot = 'CAPTIF' WHERE id=:id");
$pdostat->bindvalue(':id', $idMembreSelect, PDO::PARAM_INT);
$pdostat->execute();
	
$pdostat = $bdd->prepare("UPDATE membres SET captif= '$pseudo', nbre_captif=1, avatar_captif = '$avatar', id_captif= '$idMembreSelect', REP=REP-1 WHERE id=:id");
$pdostat->bindvalue(':id', $idMembreSession, PDO::PARAM_INT);
$pdostat->execute();
}	
?>