Pour l'ébauche de forum que je viens de concevoir, j'ai un petit problème concernant la création des sujets.
Je prévois de créer une entrée par topic dans la table topics et dans la table posts lier les messages aux topics par l'id de ces derniers.
Voilà le bout de code concerné (lorsque la page s'apprête à créer un topic et a y poster le premier message) :
if (isset($_GET['act'])) { // pour l'instant la valeur du param get m'indiffère
$topicCreate = $db->prepare('INSERT INTO topics(name, autor, date) VALUES(?, ?, ?)');
$topicCreate->execute(array($_POST['topicName'], $_POST['pseudoTemp'], date()));
// je veux return id de l'entrée !!! $topicId
$topicCreate->closeCursor();
$topicFirstPost = $db->prepare('INSERT INTO posts(topic, autor, message, date) VALUES(?, ?, ?, ?)');
$topicFirstPost->execute(array($topicId, $_POST['pseudoTemp'], $_POST['firstPost'], date()));
// il me faut l'id du topic que je viens de créer pour éviter d'avoir à faire une requête qui récupère l'entrée que je viens de créer !
header('view_topic.php?id=' . $topicId);
// NOTE : ce code est une ébauche vite faite et contient trèèès certainement des erreurs.
}
Comme vous le voyez, lorsque je crée une entrée pour le nouveau topic, je n'ai aucun moyen de récupérer l'id de celui-ci (si vous pouvez me donner une solution j'en serai fort ravi).
La seule possibilité serait de faire immédiatement après et avant la création du premier post de ce topic une requête qui récupère le dernier topic de l'auteur qui vient de poster... SELECT id FROM topics WHERE autor= $_POST['pseudoInput'] ODER BY date
Et à ce moment je fais un fetch et je récupère le premier élément...
Mais vous en conviendrez, c'est horriblement peu ergonomique, potentiellement sujet à bugs, etc etc...
J'imaginais une requête de ce genre (qui remplacerait la première du code) : INSERT INTO topics(name, autor, date) VALUES(?, ?, ?) RETURN id
.
Je vous remercie d'avance de votre aide, c'est le seul blocage que j'ai rencontré pour l'instant !
Je ne pense pas que ce soit bon... ($topicCreate->lastInsertId().ID
.
Voilà, je ne sais comment obtenir la valeur du champs ID de l'entrée $topicCreate->lastInsertId().
Et dans les exemples je vois surtout des : $lastId = $dbh->lastInsertId();</code>, ou encore <minicode>echo 'Last inserted ID: ' $dbh->lastInsertId();
Ah ok, la méthode détecte automatiquement le champ id qui s'incrémente...
Je te remercie.
Je teste et si ça marche je met le sujet en "résolu".
Retourner le champ d'une entrée après création
× 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.
Tutoriel complet MySQL !
Tutoriel complet MySQL !