Requête Update et Delete en PDO

Résolu/Fermé
modemo2018 Messages postés 226 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022 - Modifié le 20 janv. 2020 à 16:57
jordane45 Messages postés 38296 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 novembre 2024 - 21 janv. 2020 à 21:11
Bonjour,
Je suis entrain de créer une page me permettant de supprimer ou modifier une base de donnée, quand j'execute ma requête au lieu de supprimer ou de modifier la donnée, il ya insertion de la même donnée, ce que je n'arrive pas à comprendre,
Mes connaissances en PDO mysql sont un peu limité, est-ce la bonne manière d'écrire une telle requête en PDO?
quelqu'un peut-il m'aider?

 
try {
  
    $sql = 'UPDATE note SET notemat = :notemat WHERE idmat = :idmat, ideleve = :ideleve';
    $datas = array('notemat' => $notemat,'idmat' => $idmat,'ideleve' => $ideleve );
   
  
  } catch ( Exception $e ) {
    // en cas d'erreur :
    echo " Erreur ! " . $e->getMessage ();
    print_r ( $datas );
    exit;
  } 
} 



 
try
    {  
 $req2 = $bdd->prepare('DELETE FROM note WHERE idmat = ? AND ideleve = ?');
 
 $req2->execute(array($idmat, $ideleve));
    
  }
    catch(Exception $e)
    {
        die('Erreur : '.$e->getMessage());
    }


 

4 réponses

jordane45 Messages postés 38296 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 19 novembre 2024 4 704
21 janv. 2020 à 21:11
En complément :

//Mise à jour :
$sql = 'UPDATE note SET notemat = ? WHERE idmat = ? AND ideleve = ?';
$datas = array($notemat, $idmat, $ideleve);
try{
  $req = $bdd->prepare($sql);
  $req->execute($datas);  
} catch ( Exception $e ) {
    // en cas d'erreur :
    echo " Erreur ! " . $e->getMessage ();
    print_r ( $datas );
    exit;
  }	
}		


//Suppression
$sql = 'DELETE FROM note WHERE idmat = ? AND ideleve = ?';
$datas = array($idmat, $ideleve);
try{
  $req = $bdd->prepare($sql);
  $req->execute($datas);  
} catch ( Exception $e ) {
    // en cas d'erreur :
    echo " Erreur ! " . $e->getMessage ();
    print_r ( $datas );
    exit;
  }	
}		
	

Comme tu peux le voir, le bloc
try{
  $req = $bdd->prepare($sql);
  $req->execute($datas);  
} catch ( Exception $e ) {
    // en cas d'erreur :
    echo " Erreur ! " . $e->getMessage ();
    print_r ( $datas );
    exit;
  }	
}		
	

reste toujours le même...

La seule chose qui chose se sont les variables $sql et $datas

Pas besoin non plus de mettre des noms de variables différents à chaque requête ... $req ça suffit !
1
jee pee Messages postés 40461 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 19 novembre 2024 9 420
Modifié le 20 janv. 2020 à 17:31
Bonjour,

Je n'utilise toujours pas mysql et php, mais je suis toujours disponible pour te donner mes observations ;-)

1/ sans insert impossible de rajouter des lignes. Donc ce qui s'exécute n'est pas le code que tu penses, et donc pas tes extraits update, delete

2/ sur ces 2 ordres sql tu n'utilises même pas le même type de formulation, c'est n'importe quoi, il faut être cohérent

3/ il te faut reprendre tes questions précédentes sur le forum, jordane45 notamment t'a donné des exemples de syntaxes des ordres sql à suivre. Si tu ne tiens pas compte des remarques et ne capitalise avec les expériences passées, tu ne peux pas progresser.

4/ dans la syntaxe de base d'un update, on ne sépare pas les conditions du WHERE par une virgule, mais par un opérateur AND/OR/...


0
modemo2018 Messages postés 226 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022
21 janv. 2020 à 12:11
Après quelques recherches, j'ai fait des modifications mais les deux requête ne s'execute pas, il ya pas modification dans la base de donnée, et je n'ai pas un message d'erreur



try {
  
$req5 = $bdd->prepare('UPDATE note SET notemat = ? WHERE idmat = ? AND ideleve = ?');
	
$req5->execute(array($notemat, $idmat, $ideleve));  
  
  } catch ( Exception $e ) {
    // en cas d'erreur :
    echo " Erreur ! " . $e->getMessage ();
    print_r ( $datas );
    exit;
  }	
}		

	
	
try
    {		
 $req2 = $bdd->prepare('DELETE FROM note WHERE idmat = ? AND ideleve = ?');
	
	$req2->execute(array($idmat, $ideleve));
			 
	 }
    catch(Exception $e)
    {
        die('Erreur : '.$e->getMessage());
    }	

0
jee pee Messages postés 40461 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 19 novembre 2024 9 420
Modifié le 21 janv. 2020 à 12:32
Ma remarque précédente N°1 reste valable. Si pas d'action dans la bdd et pas de message d'erreur, c'est que ton code n'est pas exécuté. Tu ne passes pas par où tu crois dans ton application.

Ou idmat et/ou ideleve pas/mal renseignés. Là pas d'action et pas de message d'erreur.
0
yg_be Messages postés 23338 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 novembre 2024 1 551
21 janv. 2020 à 14:48
bonjour, si je comprends ce que tu essaies de faire, tu supprimes immédiatement les enregistrements que tu viens de modifier? est-ce bien cela que tu veux?
pour comprendre ce que fait ton code, je suggère que tu fasses d'abord une requête pour visualiser les enregistrements.
je vois que tu imprimes $datas. pourquoi?
0
modemo2018 Messages postés 226 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022 > yg_be Messages postés 23338 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 novembre 2024
21 janv. 2020 à 15:02
$datas est imprimé pour m'avertir au cas où il ya erreur lors de l'execution

Oui je veux donner la possibilité de supprimer ou de modifier une donnée dans la BDD

Les enregistrements ont été déjà fait dans une autre page, et ça se passe bien, mais c'est juste la suppression et la modification que je n'arrive pas à faire
0
yg_be Messages postés 23338 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 novembre 2024 1 551 > modemo2018 Messages postés 226 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022
21 janv. 2020 à 15:06
que contient $datas?
pour comprendre ce que fait ton code, je suggère que tu fasses d'abord une requête pour visualiser les enregistrements, juste avant de les mettre à jour ou de les supprimer.
si je comprends bien, tu ne nous montres qu'une partie de ton code, nous avons donc du mal à comprendre.
imprimes-tu un message quand la mise à jour ou la suppression se passe sans erreur?
imprimes-tu les valeurs utilisées dans la clause where?
0
modemo2018 Messages postés 226 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022 > yg_be Messages postés 23338 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 novembre 2024
21 janv. 2020 à 16:36
Oui j'ai pas mis tout le code, mais ma préocupation est de s'avoir si sintaxiquement la manière que j'ai ecris ma requête en PDO est la bonne, car c'est je suis pas encore trop bon en PDO, j'ai plus passé du temps avec Mysqli ou mysql
0
modemo2018 Messages postés 226 Date d'inscription vendredi 15 novembre 2019 Statut Membre Dernière intervention 13 octobre 2022
Modifié le 21 janv. 2020 à 14:37
Excuse moi, mais ta reponse m'aide pas à resoudre mon problème, j'ai du mal à bien te comprendre
0