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

Eléphanteau du PHP | 47 Messages

30 nov. 2020, 09:53

Bonjour à tous,

Avant tout merci de l'attention que vous m'accordez.

Voici mon problème, j'ai un formulaire dans lequel des étudiants doivent s'inscrire. Lors de l'envoi de celui-ci et après un contrôle des champs, je veux inscrire l'étudiant dans une table (INSERT), vu que le nombre de places par cours est limité, je dois incrémenter un compteur et faire un update dans une autre table.

Les requêtes fonctionnent correctement séparément, mais ensemble cela ne fonctionne pas et je ne comprends pas pourquoi.
Dans le cas présent, seul l'UPDATE fonctionne.

Petite précision, je suis débutant en programmation :cry:

Si quelqu'un pouvait me mettre sur la voie, se serait super-sympa, merciiiiiii
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=' ';
            }
           
    }

Mammouth du PHP | 2703 Messages

30 nov. 2020, 11:30

la requête insert fonctionne dans phpmyadmin ?

Eléphanteau du PHP | 47 Messages

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 ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

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.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 47 Messages

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 :-?

Mammouth du PHP | 2703 Messages

30 nov. 2020, 12:17

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

Eléphanteau du PHP | 47 Messages

30 nov. 2020, 12:21

Il me dit ceci #1064 - Erreur de syntaxe

Mammouth du PHP | 2703 Messages

30 nov. 2020, 12:24

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

Eléphanteau du PHP | 47 Messages

30 nov. 2020, 12:29

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

Eléphanteau du PHP | 47 Messages

30 nov. 2020, 12:31

La je ne comprends plus rien :-(

Mammouth du PHP | 2703 Messages

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.

Eléphanteau du PHP | 47 Messages

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.

Mammouth du PHP | 2703 Messages

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)

Eléphanteau du PHP | 47 Messages

30 nov. 2020, 12:58

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

Eléphanteau du PHP | 47 Messages

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é.