IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Requête préparée delete qui ne fonctionne pas


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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&amp;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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Bonsoir. Tu as coché résolu par erreur ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	try {
    		$requete = $cnx->prepare($sql);
    		$requete->bindValue(':id', $_GET['id'], PDO::PARAM_INT);
    		$requete->execute();
    	}

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Requête DELETE qui ne fonctionne pas..
    Par StrangerThings dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 03/10/2019, 16h11
  2. Delete qui ne fonctionne pas
    Par sam01 dans le forum Requêtes
    Réponses: 6
    Dernier message: 31/08/2010, 18h14
  3. Réponses: 21
    Dernier message: 28/06/2010, 09h40
  4. requête de selection qui ne fonctionne pas
    Par emmablue dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 28/07/2006, 14h55
  5. DELETE qui ne fonctionne pas
    Par pmboutteau dans le forum ASP
    Réponses: 9
    Dernier message: 14/10/2005, 14h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo