Je suis débutante et bloquée dans mon formulaire d'inscription !
Depuis la première page du formulaire, l'utilisateur selon son genre est dirigé vers la page male ou female où il fera un choix entre 2 images pour être dirigé sur une 3ème page. Mon souci sous phpmyadmin : ma 1ère table est correctement remplie, la 2ème "male" ne contient pas les données. Je suppose que mon problème vient de LastInsertId. Voici la page "male" :
<?php
session_start();
$userID=$req->lastInsertId();
include('config.php');
if(ISSET($_POST['m_a']))
{
$m_a = $_POST['m_a'];
$req = $conn->prepare('INSERT INTO male (m_a) VALUES (:m_a)');
$req->bindParam(':m_a' , $m_a);
$req->execute();
if(!empty($m_a) )
{
}else{}}
$_SESSION['male'] = $_POST['male'];
$m_a = $_POST['m_a'];
header('Location: male2.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Si c'est le début de ton script, cela veut dire qu'avant ce script il y a eu forcément un INSERT en base, sinon ça va planter... Et encore je ne suis pas sûr ce que ça fonctionne.
Oui Philodick j'en tiens compte et je comprends votre amusement, je suis tellement axée sur le fait de récupérer l'ID que je n'avais pas remarqué ce second problème.
J'ai tout d'abord essayé de mettre une FK dans la table mais ça ne fonctionnait pas alors que je ne voyais pas d'erreur donc j'ai pensé que ce serait plus simple avec LastInsertId
Il faut juste comprendre ce que fait LastInsertId, c'était l'objet de la remarque de Christouphe : ce n'est ne rien une requête qui interroge pour savoir quel est le dernier id qui a été inséré, c'est en quelque sorte la mémoire de ce qui vient juste d'être insérer dans la table, au cours d'une requête qui vient d'avoir lieu, c'est à dire dans l'exécution de la même page PHP. C'est pourquoi, si tu veux l'utiliser, ça doit figurer après la requête concernée, et non pas avant.
Tu pourrais donc faire :
include('config.php');
if(ISSET($_POST['m_a']))
{
$m_a = $_POST['m_a'];
$req = $conn->prepare('INSERT INTO male (m_a) VALUES (:m_a)');
$req->bindParam(':m_a' , $m_a);
$req->execute();
$userID=$req->lastInsertId();
C'est fiable pour récupérer l'id de la table en question, à un instant t. Tu peux difficilement t'y fier pour la suite, si la table est modifiée entre temps. Après j'ai du mal à voir pourquoi tu as deux tables différentes... Il faudrait qu'on sache plus précisément où se situe ton problème.
J'ai défini des tables différentes car des images sont proposées en fonction du genre (homme ou femme), puis de nouvelles images sont proposées en fonction des premiers choix d'images effectués. Le but étant de définir les besoins et les associations
En l'état, $userID ne sera pas transmis à male2.php si c'est ce que tu veux. Après est-ce tout ton code ? Parce que si c'est le cas, il te manque une accolade et tu devrais avoir une erreur (les erreurs sont bien activées ?).
Pour la structure de ta bdd, il me semblerait plus logique de n'avoir qu'une seule table avec une colonne "genre".
Philodick, en effet les erreurs n'étaient pas activées donc la page fonctionne en revanche l'ID n'est pas récupéré, un nouvel id est créé dans la table male. Même si j'effectue une seule colonne genre, les images sont différentes selon le genre et selon les 1er choix effectués, il me faudra donc une autre table pour gérer les images. Merci pour tes réponses
Merci Philodick, je vais tacher de refaire ma table, cela réglera le problème
pb avec LastInsertId
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
N'oubliez pas d'activer les erreurs PDO.
N'oubliez pas d'activer les erreurs PDO.
Keep It Simple Stupid - SF4 conf Swift - Cours 1/4 SF4 - Exceptions PDO - Formes Normales
Keep It Simple Stupid - SF4 conf Swift - Cours 1/4 SF4 - Exceptions PDO - Formes Normales
N'oubliez pas d'activer les erreurs PDO.
Keep It Simple Stupid - SF4 conf Swift - Cours 1/4 SF4 - Exceptions PDO - Formes Normales
N'oubliez pas d'activer les erreurs PDO.
N'oubliez pas d'activer les erreurs PDO.
N'oubliez pas d'activer les erreurs PDO.
N'oubliez pas d'activer les erreurs PDO.
N'oubliez pas d'activer les erreurs PDO.
N'oubliez pas d'activer les erreurs PDO.