8768 sujets
Développement web côté serveur, CMS
explications du code que tu m'a pondu :
1)
cette ligne c'est pour "préparer" comme c'est écrit... donc tu place ta requêtes avec les variables dans le where (WHERE id = ?); attention, les variables seront assigné lors de "execute", donc la c'est pas bon.
Soit tu concatène la requête direct, soit tu ajoute la variable ID (celle qui contient le bon ID) dans le execute.
2)
Primo, une variable php est toujours avec un dollar au début.
Ici la seul variable qui est attendu c'est le fameux ID qui est "demandé" lors du prépare.
3)
Ici c'est juste pour afficher le résultat de la requête sql. Donc on fetch le résultat avant de l'afficher.
je sais pas pourquoi tu te préocupe du "$nom" depuis le début. Si "$nom" est une valeur que tu attends via la requête, alors il sera dans "$result" dans le tableau associatif comme l'on a demandé avec FETCH_ASSOC
Maintenant, à toi de coder !
Modifié par JENCAL (01 Aug 2018 - 12:46)
1)
$req = $bdd->prepare('SELECT nom FROM Compte WHERE id = ?', [$_SESSION['id']]);
cette ligne c'est pour "préparer" comme c'est écrit... donc tu place ta requêtes avec les variables dans le where (WHERE id = ?); attention, les variables seront assigné lors de "execute", donc la c'est pas bon.
Soit tu concatène la requête direct, soit tu ajoute la variable ID (celle qui contient le bon ID) dans le execute.
2)
$req->execute(nom);
Primo, une variable php est toujours avec un dollar au début.
Ici la seul variable qui est attendu c'est le fameux ID qui est "demandé" lors du prépare.
3)
print_r($nom);
Ici c'est juste pour afficher le résultat de la requête sql. Donc on fetch le résultat avant de l'afficher.
je sais pas pourquoi tu te préocupe du "$nom" depuis le début. Si "$nom" est une valeur que tu attends via la requête, alors il sera dans "$result" dans le tableau associatif comme l'on a demandé avec FETCH_ASSOC
$result = $sth->fetch(PDO::FETCH_ASSOC);
print_r($result);
Maintenant, à toi de coder !
Modifié par JENCAL (01 Aug 2018 - 12:46)
<?php
require_once('include/connect.php');
$req = $bdd->prepare('UPDATE Compte SET nom = :nom WHERE id = :id');
$req->bindValue('nom',$_POST['nom']);
$req->bindValue('id',$_POST['id']);
if (!$req->execute()) {
echo 'Erreur';
} else {
echo 'Information modifié, merci.';
}
?>
Ce code fonctionne parfaitement. J'ai bien mon id = :id'); Donc, ça doit fonctionner pour moi.
Modifié par Tintin75 (01 Aug 2018 - 12:50)
Correction du code :
J'ai du mal à comprendre : Soit tu concatène la requête direct, soit tu ajoute la variable ID (celle qui contient le bon ID) dans le execute.
$req = $bdd->prepare('SELECT nom FROM Compte WHERE id = :id');
$req->execute($id);
$result = $req->fetch(PDO::FETCH_ASSOC);
print_r($result);
J'ai du mal à comprendre : Soit tu concatène la requête direct, soit tu ajoute la variable ID (celle qui contient le bon ID) dans le execute.
Tintin75 a écrit :
J'ai du mal à comprendre : Soit tu concatène la requête direct, soit tu ajoute la variable ID (celle qui contient le bon ID) dans le execute.
en faite soit tu créer ta requête en mode concaténé :
la rq suivante
$sql = "SELECT nom FROM Compte WHERE id = :id"
devient :
$sql = "SELECT nom FROM Compte WHERE id =" . $_POST["id"];
ou alors sois tu passe par ton
$req->bindValue('nom',$_POST['nom']);
mais il ne faut pas oublié les ":" dans :nom :
$req->bindValue(':::::::::::nom',$_POST['nom']);
J'ai mis plein de "::::::::" exprès, mais il en faut qu'un ^^
Modifié par JENCAL (01 Aug 2018 - 13:02)
dur dur... tu corrige une erreur mais tu en créer une ailleurs alors qu'il fallait pas touché.. tu corrige la nouvelle et tu refais une autre erreur ailleurs en mélangeant les choses.... dur dur dur.... reprend ton code tranquillement, et a CHAQUE ligne pose toi les bonnes questions.
Modifié par JENCAL (01 Aug 2018 - 13:07)
Modifié par JENCAL (01 Aug 2018 - 13:07)
echo $_SESSION['id'];
$req = $bdd->prepare('SELECT nom FROM Compte WHERE id = :id');
$req->bindValue('id',$_POST['id']);
if (!$req->execute()) {
echo 'Erreur';
} else {
echo 'OK';
}
Pas d'erreur, sauf que j'arrive pas voir le nom ! J'ai bien le OK, à l'écran.
Modifié par Tintin75 (01 Aug 2018 - 13:57)
echo $_SESSION['id'];
$req = $bdd->prepare('SELECT nom FROM Compte WHERE id = :id');
$req->bindValue(':id',$_POST['id']);
if (!$req->execute()) {
echo 'Erreur';
} else {
echo 'OK';
}
var_dump($nom);
OK et NULL, on doit pas être loin ...
J'ai bien mon id à l'écran.
Modifié par Tintin75 (01 Aug 2018 - 14:06)