Bonjour,

voilà j'ai créer un mini forum en php et ce que je voudrais faire c'est de rediriger la personnes qui à créer le sujet directement ver sont topic ?

Ce que je fais

Voici le code php pour créer un nouveau sujet

<?php
session_start();
require "config/database.php";
require "config/function.php";
redirect_users('index.php');

if(!empty($_POST)) {

if(empty($_POST['titre_topic'])) {
  $errors['titre'] =  "Vous devez rensegner le champ titre !";

}

if(empty($_POST['sujet_topic'])) {
  $errors['sujet'] = "Vous devez rensegner le champ message !";
}

if(empty($errors)) {
    $ins = $pdo->prepare("INSERT INTO f_topic (id_membre, titre_topic, sujet_topic, date_time) VALUES(?,?,?,NOW())");
    $ins->execute([$_SESSION['user']->id, $_POST['titre_topic'], $_POST['sujet_topic']]);
    $errors['ok'] = "Votre sujet à bien été crée";
}

}

?>
<!DOCTYPE html>
<html>
<head>
    <title>Mon forum</title>
  <?php require "config/header.php"; ?>

<div class="mdl-color--white mdl-shadow--4dp mdl-color-text--grey-800 mdl-cell mdl-cell--8-col" id="content">
<?php if(isset($errors)): ?>

<div class="alert danger">
<?php foreach ($errors as $er): ?>
<ul>
<li>
    <?= $er; ?>
  </li>
</ul>
<?php endforeach; ?>
</div>
<?php endif; ?>

<form action="" method="POST">
  <div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label" style="width: 580px;">
    <input class="mdl-textfield__input" type="text" name="titre_topic">
    <label class="mdl-textfield__label"><b>Titre du sujet ...</b></label>
  </div>

<div class="">
    <textarea class="myedite edite" type="text" name="sujet_topic"></textarea>
 </div>

<div style="text-align: center; margin-top: 25px;">
  <button class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect">
 Créer mon sujet
</button>
</div>
</form>

 </div>

 </div>

</body>
</html>

Je vous remerci d'avence pour votre aide

6 réponses


kwik
Réponse acceptée

Bonsoir,

Comme @Lartak l'a mentionné tu peux utilisé la fonction lastInsterId et ensuite de redirigé l'utilisateur grace à l'id récupérer via la fonction header

// Récupération de l'id du topic ajouté
$topic_id = $pdo->lastInsertId();

// Redirection vers la page 
header('Location: topic.php?tid='.$topic_id);

Bonsoir.
Tu pourrais par exemple utiliser la fonction lastInsertId de PDO : La classe PDO » PDO::lastInsertId.

Retourne l'identifiant de la dernière ligne insérée ou la valeur d'une séquence

Motel
Auteur

Bonjour,
Merci beaucoup le problème à été résolu, j'ai une autre question est-ce que avec la fonction lastInsertId on peut récupérer autres choses par exemple le titre ?

c'est résolut mai j'ajouterais :

pareil si tu créer une réponse tu redirige vers viewtopic/$idtopic#$lastid ensuite problème tu va surement ajouté une pagination si tu la fais en php il faudra joué avec le numéro de la page en GET ainsi si tu créer une réponse sur la page 2 tu sera rediriger vers la page 2 si tu fais bien ta condition.

J'ajoute ça, comme ça quand tu sera sur ce point la tu aura déjà ta réponse. le plus relou sera le lu non lu etc...

Motel
Auteur

neecride je prends en compte merci ;)

Comme le suggère le nom de la fonction et comme il est dit dans la quote que j'ai mit dans ma précédente réponse, tu ne récupère que l'identifiant, soit la clé primaire.
Si tu veux récupérer d'autres colonnes de la table, il te faut faire une autre requête, ce qui sera facilé à partir de l'identifiant récupéré avec la fonction lastInsertId.
Soit par exemple :

/* Insertion en base de données du nouvel enregistrement ... */
$topic_id = $pdo->lastInsertId();

$req = $pdo->prepare("SELECT id, titre_topic FROM f_topic WHERE id = :id");
$req->execute(['id' => $topic_id]);
$topic = $req->fetch();