Page 1 sur 1

SELECT avec une condition

Posté : 19 août 2016, 17:57
par yoann38
Salut voilà j'avais un deuxième soucis pour aujourd'hui
J'ai donc un script qui permet d'ajouter des annonces dans ses favoris.
L'insertion marche bien et j'affiche un message comme quoi l'annonce existe déjà en favoris pour cet utilisateur mais s'affiche en même temps à ce moment la:
Warning: PDOStatement::execute(): SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '34-484291' for key 'PRIMARY' in /home/www/lasortie/add_favoris.php on line 24
Problème lors de l'insertion


Mon code:
<?php
session_start();
include("include/conndb.php");

if(!empty($_SESSION['pseudo']) && !empty($_SESSION['membre']['id_simply_user'])) {
	
$num_favoris = $_GET['idfav'];
$utilisateur = $_SESSION['membre']['id_simply_user'];

$sql = "SELECT * FROM favoris WHERE id_simply_user = '".$_SESSION['membre']['id_simply_user']."'";
$req = $bdd->query($sql);

while($ligne = $req->fetch(PDO::FETCH_ASSOC)){  
if ($num_favoris == $ligne['id_loisir']) {
	echo  'Cette annonce fait déjà partie de vos favoris';
		
}else{
// Insertion
$req = $bdd->prepare('INSERT INTO favoris (id_simply_user, id_loisir)  VALUE (:id_simply_user, :id_loisir)');	
$req->execute(array(
				  'id_simply_user'=>$utilisateur,
				  'id_loisir'=>$num_favoris	  
				  ))
				  or die('Problème lors de l\'insertion');
}	}				
header("Location:favoris.php");

}else{
	header("Location: mon-compte.php");
}

?>
Merci à vous

Re: SELECT avec une condition

Posté : 19 août 2016, 18:04
par or 1
le test à faire en sql, c'est : est-ce que l'utilisateur a déjà cet id dans ces favoris ?
si oui, alors 'Cette annonce fait déjà partie de vos favoris'
si non, alors insertion.

Re: SELECT avec une condition

Posté : 19 août 2016, 18:15
par yoann38
Oui c'est ce que j'essai de faire ....
l'insertion marche pas de problème mais si il a déjà cet annonce en favoris j'ai le message :

Cette annonce fait déjà partie de vos favoris
Warning: PDOStatement::execute(): SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '34-484291' for key 'PRIMARY' in /home/www/lasortie/add_favoris.php on line 24
Problème lors de l'insertion

Je ne vois pas pourquoi

Re: SELECT avec une condition

Posté : 19 août 2016, 18:16
par @rthur
Parce que tu as mis une clé primaire sur un champ qui doit donc être unique.
Or tu as déjà un enregistrement avec pour valeur "34-484291"

Re: SELECT avec une condition

Posté : 19 août 2016, 18:25
par yoann38
Structure de la table:

id_loisir int(11)
id_simply_user int(11)

C'est pas bon ca ?

Re: SELECT avec une condition

Posté : 20 août 2016, 01:32
par @rthur
c'est l'index clé primaire / PRIMARY qui pose problème

Re: SELECT avec une condition

Posté : 20 août 2016, 13:49
par yoann38
primary n'est pas coché pourtant

Re: SELECT avec une condition

Posté : 21 août 2016, 00:36
par @rthur
fais un export de la structure de ta table et tu verras qu'il y a une clé primaire dessus