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

Eléphanteau du PHP | 47 Messages

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:

Eléphanteau du PHP | 47 Messages

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: