Requête préparée delete qui ne fonctionne pas
Bonjour,
j'espère être sur le bon forum !!
Comme le titre l'indique je souhaite supprimer un enregistrement dans la bdd.
ci-dessous toute la page consacrée à la suppression d'un enregistrement
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
<?php
include("connect.php");
$liste_nom = isset($_POST['liste_nom']) ? $_POST['liste_nom'] : '';
$identite = '';
$_GET['id']; // récupère l'id passé dans l'url
// on récuprère le nom et le prénom de la personne sélectionnée dans <SELECT>
if (isset($_POST['afficher'])){
$sql = $cnx->prepare("SELECT * FROM membres WHERE id = ? ");
$sql->execute(array($liste_nom));
$result = $sql->rowCount();
if ($result = $sql->fetch(PDO::FETCH_ASSOC)){
$id = $result['id'];
$nom = $result['nom'];
$prenom = $result['prenom'];
$identite = $prenom.' '.$nom;
}
}
// on remet les valeurs à blanc quand on clique sur les boutons 'NON' ou 'Abandonner'
if ((isset($_POST['no'])) OR (isset($_POST['abandon']))){
$identite = '';
$liste_nom = '';
}
// on supprime la ligne correspondant à l'id sélectionné lorsqu'on clique sur le bouton 'OUI' Mon problème est ici
if (isset($_POST['yes'])){
echo $_GET['id'];
$sql = "DELETE FROM membres WHERE id = :id ";
try {
$requete = $cnx->prepare($sql);
$sql->bindValue(':id', $_GET['id'], PDO::PARAM_INT);
$sql->execute();
}
catch(Exception $e){
// en cas d'erreur dans la requete:
echo " Erreur ! ".$e->getMessage();
}
}
?>
<div style="text-align:center;margin-left:auto;margin-right:auto;background-color:#FF7F00;width:80%;box-shadow:0.7em 0.7em 0.7em #CC5500;">
<p>
<FORM name="research" ACTION = "index.php?page=delmember&id=<?php echo $liste_nom; ?>" METHOD="POST">
<br />Sélectionner dans la liste la personne à retirer de la liste des membres<br /><br />
<select name="liste_nom" size="10" style="width:20em;">
<!---<option value = "" selected>Sélectionner</option>--->
<?php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
//préparation de la requête et des variables
$sql = "SELECT * FROM membres WHERE nationalite = 'Française' ORDER BY nom, prenom";
try {
$requete = $cnx->prepare($sql);
$requete->execute();
$arr_membres = $requete->fetchAll();// on stocke le resultat de la requete dans un array
}
catch(Exception $e){
// en cas d'erreur dans la requete:
echo " Erreur ! ".$e->getMessage();
}
if(!empty($arr_membres)){ // on s'assure que la variable n'est pas vide
foreach($arr_membres as $M){ // on boucle dessus à l'aide d'un foreach
echo '<option value="'.$M['id'].'">'; echo $M['nom'].' '.$M['prenom'].'</option>';// on affiche les données
}
}
?>
</select>
<input style="cursor:pointer;" type="submit" name="afficher" value="Afficher" /><br />
<?php
if (!empty($identite)){ ?>
<p>
<?php echo 'Voulez-vous vraiment retirer <b>';echo $identite; echo '</b> du fichier des membres du jumelage ?'; ?><br /><br />
<input style="cursor:pointer;" type="submit" name="yes" value="OUI" />
<input style="cursor:pointer;" type="submit" name="no" value="NON" />
<input style="cursor:pointer;" type="submit" name="abandon" value="Abandonner" />
</p>
<?php
} ?>
</FORM><br />
</p>
</div> |
je récupère bien l'id à supprimer via l'url
voici mon message d'erreur quand je clique sur le bouton "OUI"
Code:
1 2
|
Fatal error: Call to a member function bindValue() on string in C:\Weblocal\Sites\Jumelage\fr\connexion\delmember.php on line 30 |
la ligne 30 est
Code:
1 2
|
$sql->bindValue(':id', $_GET['id'], PDO::PARAM_INT); |
comme je ne pas familiarisé avec les requête paramétrées j'ai cherché mais je cale !!
pour info tout le css sera placé dans mon fichier css
merci pour votre aide