8725 sujets

Développement web côté serveur, CMS

Pages :
(reprise du message précédent)

Bonjour,
Je ne suis pas un expert en PDO, mais je à mon avis, tu as 2 erreurs:
1) Tu écrases ta requête préparée: $remove est affectée 2 fois. Or, tu ne l'exécute qu'une fois. Pour faire 2 requêtes, il faudrait que ton algo ressemble plutôt à ça:
$remove = $bdd->prepare(ta première requete);
$remove-> execute(array(argument pour la requete));
$remove->closeCursor();

$remove = $bdd->prepare(ta seconde requete);
$remove-> execute(array(argument pour la requete));
$remove->closeCursor();

Mais là n'est pas la question, en fait, une seule requête devrait suffire pour ton problème... (Voir ci-après)

2) Tu exécutes une requete qui attends 2 arguments (keyMail et idClient), mais tu ne lui en passe qu'un seul dans ton execute. Donc forcément, il n'aime pas ^^

Pour le moment, contente toi d'une seule requete, tu n'as pas encore implémenté d'id de client ni rien, donc pour moi, ton code devrait ressembler à ça:

<?php
if($_GET['reservation']){
include('bdd.php');
$remove = $bdd->prepare('DELETE FROM reservations WHERE annulation = ?');
$remove->execute(array($_GET['reservation']));
$remove->closeCursor();
}else{
header('Location: index.php');
}
?>

Une fois que l'on sera sûrs que ce code fonctionne, on pourra s'attaquer aux id uniques de clients Smiley cligne
Bon courage à toi en tout cas!
Bonjour Smiley smile
A première vue, tu as dupliqué deux fois la ligne ^^

Je récapitule le code, tu as une variable $requete qui contient ta requête préparée :
<?php $requete = "DELETE FROM reservations WHERE idReservation = ?"; // le "?" correspond à une variable dans ta requête SQL dont tu préciseras la valeur par la suite ?>
Une seconde variable $reponse qui stocke ta requête SQL dans la variable $requete :
<?php $reponse = $bdd->prepare($requete); ?>
Et pour finir, tu exécutes ta requête avec l'idReservation que tu récupères par $_GET['reservation']
<?php
$idReservation = $_GET['reservation'] // par exemple l'id réservation vaut 5
$reponse->execute(array($idReservation)); // Les "?" dans ta requête SQL seront remplacés par toutes les variables que tu as mise dans execute(array())
?>
Ta requête SQL donne au final : DELETE FROM reservations WHERE idReservation = 5;
Pour résumer, tu obtiens ce code :
<?php
	$requete = "DELETE FROM reservations WHERE idReservation = ?"; // tu poses ta requête SQL avec les "?" pour dire où se trouveront les variables
	$reponse = $bdd->prepare($requete); // tu lui dis "prépare-moi la requête stockée dans $requete !"
	$idReservation = $_GET['reservation']; // par exemple la réservation numéro 5
	$reponse->execute(array($idReservation)); // tu exécutes la requête avec l'idReservation en variable
?>
-----------------------------------------------------------------------------------------------------------

Pour être sûr que la réservation supprimée correspond bien au client, tu peux vérifier cela en rajoutant une clause AND dans ta requête :
DELETE FROM reservations WHERE idReservation = ? AND idClient = ?

Et ainsi exécuter la requête de cette façon :
<?php $reponse->execute(array($idReservation,$idClient)); // tu rajoutes $idClient en paramètre ?>
Le code final donne :
<?php
	$requete = "DELETE FROM reservations WHERE idReservation = ? AND idClient = ?";
	$reponse = $bdd->prepare($requete);
	$idReservation = $_GET['reservation'] // par exemple l'id réservation vaut 5
        $idClient = $_SESSION['idClient'] // par exemple l'idClient vaut 72 (j'ai ici utilisé une variable de Session pour récupérer l'idClient pour l'exemple, mais bien entendu tu peux la récupérer d'une autre manière)
	$reponse->execute(array($idReservation,$idClient));
?>
L'équivalent en SQL classique donne :
DELETE FROM reservations WHERE idReservation = 5 AND idClient = 72
J'espère que j'ai été plus clair que dans mon dernier message ^^ Bon courage ! Smiley smile
Modifié par ohweb (23 May 2014 - 12:21)
Bonjour, merci pour toutes les explications. Je vais suivre à la lettre et je reviens vers vous
Smiley ravi
Bonne fin de journée et ...long w.e. Smiley cligne
Smiley smile Smiley biggrin Smiley ravi
même pas peur... mais j'avais mis de côté le site pensant que j'avais mis trop de temps à réagir sur ton message
ben non, revoilà des infos
Merci
Smiley cligne
Smiley decu ben ça ne marche tjrs pas...je dirais même que j'ai un véritable arbre de noël d'erreurs qui s'affiche Smiley biggrin !
en fait tout marche qd le formulaire de résa est tout seul ("sans site autour" !)
et dès que je le mets en "musique", au bon endroit, etc.
l'espace admin ne prend pas en compte les annulations de résa, faites à partir de message que le client reçoit par mail (pire : qd je supprime moi-même la résa, sur l'espace admin : page blanche! top, non ? Smiley biggol )

en tout cas, un Grand Merci! Smiley smile
Pages :