Empécher les doubles insertions

Résolu
cs_Breub Messages postés 20 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 18 juin 2010 - 7 juin 2010 à 14:46
cs_Breub Messages postés 20 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 18 juin 2010 - 8 juin 2010 à 10:00
Bonjour,

Suite à diverses manipulations je me retrouve avec une requête INSERT qui s'exécute à deux reprises. Ainsi j'ai à chaque fois une erreur de doublons dans ma base de données. J'aimerais savoir s'il existe une fonction qui permet d'interdire l'exécution multiple d'une même requête. D'avance merci...

6 réponses

jimmypage64 Messages postés 164 Date d'inscription samedi 16 octobre 2004 Statut Membre Dernière intervention 21 septembre 2010
7 juin 2010 à 15:41
Sinon au pire avant de faire ton INSERT tu fais une recherche dans ta base .. Tu recherche si il existe deja un enregistrement pour les clés qui te posent un problème de doublon

[8)]Zoso
3
cs_Breub Messages postés 20 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 18 juin 2010
8 juin 2010 à 10:00
Merci pour ta solution. Je l'ai combiné à un INSERT IGNORE qui m'évite les doublons ; quant à la recherche elle me permet de signaler à l'utilisateur qu'il y a eu ou non un problème. Encore merci.
3
jimmypage64 Messages postés 164 Date d'inscription samedi 16 octobre 2004 Statut Membre Dernière intervention 21 septembre 2010
7 juin 2010 à 15:07
Salut,

c'est une erreur de ton code .. a mon avis il faudrait que tu corriges le problème qui fait que ton INSERT s'exécute 2 fois.

Sinon tu as toujours la possibilité de faire un contrôle de tes données avant de faire le INSERT.

[8)]Zoso
0
cs_Breub Messages postés 20 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 18 juin 2010
7 juin 2010 à 15:14
En fait ce qui provoque la double exécution de ma requête est :

<?php
session_start();
if(!empty($_POST))
{
foreach($_POST as $cle => $val)
{
$_SESSION[$cle] = $val;
}
unset($_POST);

session_write_close();
echo "<script type='text/javascript'>history.go(-1);</script>";
}
?>

Cela me permet de convertir mes variables POST en variables de SESSION (ce qui évite de devoir renvoyer les informations lors d'un retour à la page précédente ce qui est fréquent dans mon appli). Le problème étant donc uniquement sur mes Insert(qui s'exécutent correctement mais 2 fois d'où un message d'erreur systématique dû aux doublons).

Merci pour la réponse et pour les réponses à venir...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jimmypage64 Messages postés 164 Date d'inscription samedi 16 octobre 2004 Statut Membre Dernière intervention 21 septembre 2010
7 juin 2010 à 15:25
Je veux bien pour tes variables de session mais le INSERT n'a pas a se faire 2 fois normalement .. Tu le fais quand ton insert ?

[8)]Zoso
0
cs_Breub Messages postés 20 Date d'inscription lundi 7 juin 2010 Statut Membre Dernière intervention 18 juin 2010
7 juin 2010 à 15:34
Je fais des insert à plusieurs endroits et j'ai à chaque fois le même problème(sachant que mon appli est conçu via une page unique(index.php) et que j'inclus mes pages selon les cas).

J'ai mis des echo à tous les endroits pour voir d'où venait le problème et du coté client la requête insert ne semble s'exécuter qu'une fois mais du coté serveur cette dernière est systématiquement exécutée 2 fois...

J'ai cherché sur google et autre forums mais pas le début d'un commencement de solutions...
0
Rejoignez-nous