Accueil > Forum > > > > Script qui tourne pas rond [ Double insertion dans bdd ]
Script qui tourne pas rond [ Double insertion dans bdd ]
samedi 4 août 2007 à 04:01:10 |
Script qui tourne pas rond [ Double insertion dans bdd ]

gregorybts
|
Bonsoir, cela fait 2 jours que je planche sur un problème et je ne m'en sors pas alors je viens chercher de l'aide. En fait, j'ai fais une sorte de messagerie en php. Je m'explique. En ce moment, j'écris au moyen d'animation flash à quelqu'un et je veux que la personne ne puisse lire l'animation qu'une seule fois. J'ai donc ma page qui controle si l'IP a déjà lu ce message ou pas (je sais que se baser juste sur l'ip est une erreur mais le destinataire est noob). Je communique donc un mot au destinataire et en le rentrant il est redirigé. En même temps, plusieurs choses viennent compliquer l'affaire. En ajoutant "admin_" devant le mot que j'ai communiqué, on passe au travers de tous les filtres (je m'en sers pour tester). Autre complication, je retiens dans la bdd (ip + mot entré) toutes les tentatives d'accès (réussie ou pas). J'ai fais énormément de test et il y a donc des echo partout pour tracer les données. En entrant le mot "test" qui ne correspond à aucun message, il s'affiche ceci " 27Non, non, faut pas rentrer n'importe quoi" Le chemin est donc parfait mais dans la base voici ce que je récupère :  | | | |
|---|
|  |  | 33 | 127.0.0.1 | test | |  |  | 34 | 127.0.0.1 | |
Et oui 2 enregistrements et c'est bien sa qui me fait perdre la boule. Bon maintenant que je pense avoir bien expliquer voici le code surnaturel. Merci d'avance aux courageux qui me répondront. <?php //Connexion mysql_connect("localhost", "root", "") or die("erreur de connexion au serveur"); mysql_select_db("correspondance") or die("erreur de connexion a la base de donnees");
//Déclaration de variables $mot=$_POST['mdp']; $visiteur=$_SERVER['REMOTE_ADDR']; $buffer=substr($mot, 0, 6);
if ($buffer=="admin_") { echo "1"; $mot=substr($mot, 6, strlen($mot)); $reponse = mysql_query("SELECT cle FROM lettres WHERE mot='".$mot."'") or die ("oups erreur de prog"); $donnees = mysql_fetch_array($reponse) or die ("LOL, c'est pas parce que tu connais la manip qu'il faut essayer tous les mots, c'est pas un dico le truc"); ?> <?php /*?><script language="javascript"> document.location.href="<?php echo 'cle/'.$donnees['cle'].'.html';?>"; </script><?php */?> <? } else { echo "2"; $deja_visite=0; $existe=0; $reponse = mysql_query("SELECT * FROM lettres WHERE lettres.mot='".$mot."'") or die ("ERREUR requete 1"); if(mysql_num_rows($reponse)) { echo "3"; $existe=1; $donnees = mysql_fetch_array($reponse, MYSQL_ASSOC); $reponse2 = mysql_query("SELECT * FROM vu WHERE vu.lettre='".$mot."'") or die ("ERREUR requete 2"); if(mysql_num_rows($reponse2)) { echo "4"; while ($donnees2 = mysql_fetch_array($reponse2, MYSQL_ASSOC)) { echo "5"; if ($donnees2['user']==$visiteur) { echo "6"; $deja_visite=1; echo "Non, non, toutes les bonnes choses ont une fin."; mysql_query("INSERT INTO vu VALUES('', '".$visiteur."', '".$mot."')") or die ("ERREUR à l'ajout"); } } } } else { echo "7"; echo "Non, non, faut pas rentrer n'importe quoi"; mysql_query("INSERT INTO vu VALUES('', '".$visiteur."', '".$mot."')") or die ("ERREUR à l'ajout"); echo mysql_info(); } if (($deja_visite==0)&&($existe==1)) { echo "8"; mysql_query("INSERT INTO vu VALUES('', '".$visiteur."', '".$mot."')") or die ("ERREUR à l'ajout"); ?> <?php /*?><script language="javascript"> document.location.href="<?php echo 'cle/'.$donnees['cle'].'.html';?>"; </script><?php */?> <? } } mysql_close(); ?>
|
|
samedi 4 août 2007 à 12:11:03 |
Re : Script qui tourne pas rond [ Double insertion dans bdd ]

Evangun
|
Hello, ce serait pas 'cle/'.$donnees['cle'].'.html qui te ferait la requête ? vu que ce morceau de code ne semble pas être fautif. à+
|
|
samedi 4 août 2007 à 17:18:17 |
Re : Script qui tourne pas rond [ Double insertion dans bdd ]

gregorybts
|
que veux tu dire par là je ne comprends pas dsl.
|
|
samedi 4 août 2007 à 17:24:02 |
Re : Script qui tourne pas rond [ Double insertion dans bdd ]

Evangun
|
L'erreur ne vient pas probablement pas du bout de code que tu nous montres, cherche ailleurs. à+
|
|
samedi 4 août 2007 à 17:27:14 |
Re : Script qui tourne pas rond [ Double insertion dans bdd ]

gregorybts
|
c'est bien ce que je pensais, alors là j'ai un gros soucis parce qu'au dessus de ce bout de code c'est le css et le header html, au dessous rien du tout. Et je n'ai que 4 fichiers, dont seulement 2 fichiers php donc je peux te dire que cela ne peut pas venir d'autre chose.
Sa me fait halluciner ce truc.
|
|
samedi 4 août 2007 à 17:47:03 |
Re : Script qui tourne pas rond [ Double insertion dans bdd ]

gregorybts
|
j'ai trouvé lol. Accrochez vous
sans toucher à la requete insert incriminé,
si dans ma base id de la table vu est en autoincrement => ajout de 2 enregistrements si il est pas en auto increment = > ajout de 1.
Alors là, j'hallucine parce que c'est la première fois que cela m'arrive surtout que j'utilise tout le temps les auto increment.
Du coup, je suis un peu perdu niveau code. Je cherche à récupérer l'id que je devrais mettre dans mon insert. En fait, c'est "id la plus haute+1" mais n'y a t'il pas un autre moyen que de faire un select pour chopper la MAX(id) ?
merci d'avance pour vos réponses
|
|
samedi 4 août 2007 à 17:48:55 |
Re : Script qui tourne pas rond [ Double insertion dans bdd ]

Evangun
|
Mmmh... le meilleur conseil dans ces cas-là c'est de refaire les tests en reprenant à 0. Vide ta table à chaque test et mets les requêtes en commentaires une par une jusqu'à ce que tu trouves d'où ça vient. à+
|
|
samedi 4 août 2007 à 17:53:39 |
Re : Script qui tourne pas rond [ Double insertion dans bdd ]

gregorybts
|
non mais c'est bon, le problème est trouvé, c'est l'histoire de l'auto increment. Je pense que nos messages se sont croisés.
|
|
samedi 4 août 2007 à 17:58:44 |
Re : Script qui tourne pas rond [ Double insertion dans bdd ]

gregorybts
|
oups j'ai parlé trop vite, en fait il n'y a rien de règlé.
Cela marchait car quand j'enlevais l'autoincrement, defaut se mettait à 0 et du coup le doublon venait écrasé le premier.
Donc non, cela ne marche pas, j'y retourne. Je vais les commenter une à une mais je crois que je l'ai déjà fait.
|
|
samedi 4 août 2007 à 18:13:53 |
Re : Script qui tourne pas rond [ Double insertion dans bdd ]

gregorybts
|
Il y a 3 possibilités de passer par un insert into dans ce code, soit : - le mot ne correspond aucun message
- le mot correspond à un message qui n'a pas été lu par cette ip
- le mot correspond à un message qui a déjà été lu par cette ip
J'ai testé les 3 cas possibles. Les résultats sur la base ont mis en évidence que le problème venait de celle ci : else { echo "7"; echo "Non, non, faut pas rentrer n'importe quoi"; mysql_query("INSERT INTO vu VALUES('', '".$visiteur."', '".$mot."')") or die ("ERREUR à l'ajout"); }
Moi je ne vois pas ou est le problème. Donc si je mets cet insert en commentaire et que je fais le jeu de test suivant : bon_mot, bon_mot, mauvais_mot Ce m'enregistre ceci :  | | | |
|---|
|  |  | 61 | 127.0.0.1 | bon_mot | |  |  | 62 | 127.0.0.1 | bon_mot |
Normal. Si je commente un autre insert et remet ce dernier en marche, je me retrouve avec 4 ou 5 résultats avec le même jeu d'essai. Quelqu'un a la solution ?
|
|
Cette discussion est classée dans : mysql, erreur, mot, echo, die
Répondre à ce message
Sujets en rapport avec ce message
probleme base de donnée mysql [ par morgandetoi06 ]
voila j ai une page qui reçoit des variables et qui doit les inserer dans une table "informations" de la base "cv"mais ça me dit "querry failed" je ne
Mysql erreur, mais où ? [ par Tilix ]
Bonjour,Je voudrais savoir où est l'erreur dans ceci :while($data = mysql_fetch_assoc($req)) { if ('!'.$data['id'].'') { echo '(0)'; } else {
Erreur incomprise... [ par Ang3lo ]
Bonjours à tous, Je suis en train de développer un script d'identification mais j'ai un problème : une erreur m'est indiqué et je ne sais pas pourquoi
Problème avec un soit disant moteur de recherche lol [ par gssk ]
Au fait j'ai fait un "moteur de recherche" (code pourrave je le sais merci !!), et je n'ai que d erreur de variables indéfini! tels que Mot,idM,nomM e
qqun peut regarder mon code ? [ par Teclis01 ]
voil¨¤ en fait je cherche a calculer le tps total des appels de clients le probleme c est kil ne me fait que 1 appel par ligne et je comprends pas tro
problème de création de moteur de recherche [ par astuces_jeux ]
bonjour,j'ai utilisé le moteur de recherche ici : http://www.plb.fr/v3/ccm/php/phpmoteur.phpet j'ai ces deux erreur :Parse error: syntax error, unexpe
Optimisation du code [ par azqsazqs ]
bonjour,j'ai un code que je trouve lent, j'aimerais l'accélérer un peu. je l'ai rétréci autant que le pouvais, mais je suis sur qu'il reste des abérat
problème concaténation [ par morpheus22170 ]
Bonjour,comme le titre l'indique j'ai un problème de concaténation. Je suis sur une base de données de type "bibliothèque"Mon problème vient de l'inse
projet php/mysql [ par simonano ]
bonjour,je remercie bcp monsieur Bul3 d'avoir me repondre a chaque fois.enfin j'ai confiance a un endroit pour poster mon problème qui casse ma tête
erreur dans mon code + MySQL [ par hadjiphp ]
Bonjour, merci pour ce site et souhaite de trouver tous ce que je veux. je vous remercie. Bonjour, j'ai une question : j'ai un programme qui per
Livres en rapport
|
Derniers Blogs
CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT)CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT) par FREMYCOMPANY
Bonjour à tous, Je viens de publier une proposition comprenant 5 pseudo-classes pour le CSS Working Group ayant trait à l'état de chargement d'un élément (ex: IMG,VIDEO,AUDIO,OBJECT pour l'HTML.). Si le c½ur vous en dit, vous pouvez retrouver cette p...
Cliquez pour lire la suite de l'article par FREMYCOMPANY MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ?MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ? par ROMELARD Fabrice
Formation initiale Durant la formation, le découpage classique est le suivant (je donnerai les équivalences Suisse lorsque je les connaîtrais) : Ecole primaire jusqu'au Collège : Formation générale permettant d'obtenir les méthodes...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice Y'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENTY'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENT par Aleks
Quand on a ce genre d'erreur sans log :
Et bas on a juste envie de choper le gas de Microsoft qu'a développé ça et lui foutre des baffes de Coboye ! ...
Cliquez pour lire la suite de l'article par Aleks [HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL[HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL par Pierrick CATRO-BROUILLET
Avec la sortie prochaine de la Beta Consumer Preview de Windows 8, j'avais envie de revenir sur une des fonctionnalités que j'attends le plus et que, en bon geek que je suis, j'utilise déjà : Hyper-V 3 ainsi son module PowerShell.
Il y a déjà pléthor...
Cliquez pour lire la suite de l'article par Pierrick CATRO-BROUILLET IIS7 - COMPRESSION GZIPIIS7 - COMPRESSION GZIP par cyril
La compression GZIP permet d'améliorer les performances de navigation en compressant ce qu'envoie le serveur à un client. Pour comprendre comment cela fonctionne, regardons ce qu'il se passe au niveau HTTP lorsqu'un client tente d'accéder à une ress...
Cliquez pour lire la suite de l'article par cyril
Logiciels
Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning Academy System (17.1.3.0)ACADEMY SYSTEM (17.1.3.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|