[RESOLU] Problème avec deux enregistrements simultané dans une base de données

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Problème avec deux enregistrements simultané dans une base de données

Re: Problème avec deux enregistrements simultané dans une base de données

par Stu76 » 30 nov. 2020, 16:54

Voilà mon code fonctionne, la solution apportée a été de réinstaller mon serveur, ce qui a en partie débloqué la solution. Pour la suite voici mon code d'origine qui ne fonctionnait pas :
if($isSuccess){
            $comp++;
            $db =Database::connect();
            $insertionSt = $db->prepare("INSERT INTO students (last_name, first_name, cours) values(?, ?, ?)");
            $insertionSt->execute(array($lastName, $firstName,  $id));
            $insc=true;
            if($insc){
                $insertC = $db->prepare("UPDATE classes set nbrstcp = ? where id = ?");
                $insertC->execute(array($comp, $id));
                Database::disconnect();
                header("location: confirm.php");
                $cours=' ';
            }
           
    }
Et voici le code modifié :
if($isSuccess){
            $comp++;
            $db =Database::connect();
            $statement = $db->prepare("INSERT INTO students(last_name, first_name, adresse, vcp, dtn, phone, email, respers, phoneurg, rgpd, cours, condgene) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)");
            $statement->execute(array($lastName, $firstName, $adresse, $vcp, $dtn, $phone, $email, $respPers, $phoneUrg, $rgpd, $id , $condGen));
            $insertC = $db->prepare("UPDATE classes set nbrstcp = ? where id = ?");
            $insertC->execute(array($comp, $id));
            Database::disconnect();
            header("location: confirm.php");
            exit;
J'ai supprimé un test if, qui je ne sais pas pourquoi bloquait l'UPDATE, maintenant cela ne veut dire que je vais laisser celui-ci tel quel.
J'ai tenu compte des remarques et je remercie encore une fois de plus au passage les gens qui m'ont aidé, cela m'a obligé à faire fonctionner les neurones.

Encore merci, :wink:

Re: Problème avec deux enregistrements simultané dans une base de données

par Stu76 » 30 nov. 2020, 14:19

Bonjour,

Ma préconisation c'est de commencer (si ce n'est pas déjà fait) par afficher les erreurs PDO en utilisant ERRMODE_WARNING :
https://www.php.net/manual/fr/pdo.error-handling.php

Puis mets en commentaire le header("location..."), ça évitera la redirection et te permettra de voir si il y a des erreurs.

2 petites recommandations :
- Ta ligne $cours=' '; ne sert à rien puisque située après ta demande de redirection.
- Il faut toujours mettre un exit; après un header("location..."), puisque tu demandes une redirection, rien d'autres ne doit être exécuté ensuite. Ça évite les comportements bizarres de certains navigateurs.
Merci pour l'info, je ne connaissais pas et effectivement cela peut-être très utile. :wink:

Re: Problème avec deux enregistrements simultané dans une base de données

par Stu76 » 30 nov. 2020, 14:18

Comme convenu, je reviens vers vous après une série de test sans messages d'erreur, j'ai décidé de réinstaller mon serveur ou plutôt de supprimer WAMP et de réinstaller XAMP. Comme par magie tout fonctionne, sauf l'UPDATE dans la deuxième table. Mais je pense avoir identifier une erreur. Je ne manquerai pas de revenir vers vous avec la solution.

Si quelqu'un à une piste je suis bien entendu preneur ;-)

Encore merci pour le temps que vous m'avez consacré.

Re: Problème avec deux enregistrements simultané dans une base de données

par Stu76 » 30 nov. 2020, 12:58

malheureusement chez moi oui, il possible d'insérer une image sur le forum ?

Re: Problème avec deux enregistrements simultané dans une base de données

par or 1 » 30 nov. 2020, 12:44

non, après avoir cliquer sur "insérer", phpmyadmin ne génère pas une requête invalide de ce genre :
INSERT INTO `students`(`last_name`, `first_name`, `cours`) VALUES (coco,zaza,4)

Re: Problème avec deux enregistrements simultané dans une base de données

par Stu76 » 30 nov. 2020, 12:40

C'est ce que j'ai fait et c'est le message que j'ai affiché ici. Le problème c'est que je n'ai pas de message d'erreur qui s'affiche dans mon code. Je vais essayer de voir s'il y a une erreur PDO et je reviens vers vous ;-)
En tout cas, merci pour aide.

Re: Problème avec deux enregistrements simultané dans une base de données

par or 1 » 30 nov. 2020, 12:33

qu'il faut comparer avec la requete générée par phpmyadmin en utilisant le formulaire d'ajout d'un enregistrement dans une table.

Re: Problème avec deux enregistrements simultané dans une base de données

par Stu76 » 30 nov. 2020, 12:31

La je ne comprends plus rien :-(

Re: Problème avec deux enregistrements simultané dans une base de données

par Stu76 » 30 nov. 2020, 12:29

INSERT INTO `students`(`last_name`, `first_name`, `cours`) VALUES (coco,zaza,4)

Re: Problème avec deux enregistrements simultané dans une base de données

par or 1 » 30 nov. 2020, 12:24

qu'est-ce qui a été soumis ?

Re: Problème avec deux enregistrements simultané dans une base de données

par Stu76 » 30 nov. 2020, 12:21

Il me dit ceci #1064 - Erreur de syntaxe

Re: Problème avec deux enregistrements simultané dans une base de données

par or 1 » 30 nov. 2020, 12:17

sans connaitre le message d'erreur indiqué par phpmyadmin, ni la structure de la table, impossible d'aider.

Re: Problème avec deux enregistrements simultané dans une base de données

par Stu76 » 30 nov. 2020, 12:09

Bon, je viens de refaire les tests et la requête INSERT ne fonctionne plus, même dans phpmyadmin, visiblement j'ai modifié quelque chose qu'il ne fallait pas. J'ai la tête dans le guidon et je vois pas où est l'erreur. À l'aide :-?

Re: Problème avec deux enregistrements simultané dans une base de données

par @rthur » 30 nov. 2020, 11:57

Bonjour,

Ma préconisation c'est de commencer (si ce n'est pas déjà fait) par afficher les erreurs PDO en utilisant ERRMODE_WARNING :
https://www.php.net/manual/fr/pdo.error-handling.php

Puis mets en commentaire le header("location..."), ça évitera la redirection et te permettra de voir si il y a des erreurs.

2 petites recommandations :
- Ta ligne $cours=' '; ne sert à rien puisque située après ta demande de redirection.
- Il faut toujours mettre un exit; après un header("location..."), puisque tu demandes une redirection, rien d'autres ne doit être exécuté ensuite. Ça évite les comportements bizarres de certains navigateurs.

Re: Problème avec deux enregistrements simultané dans une base de données

par Stu76 » 30 nov. 2020, 11:43

Bonjour, oui elle fonctionnait correctement avant que je n'ajoute la seconde requête. Si je met l'update en commentaire elle fonctionne, pourquoi elle n'est pas conventionnelle ?