Rediriger l'utilisateur vers le sujet qu'il a crée

a marqué ce sujet comme résolu.

Bonjour à toutes et à tous,

J'ai besoin d'aide car j'aimerais à partir d'un formulaire qu'un utilisateur rempli et crée soit reporté sur le sujet directement qu'il a crée et je vois point comment le faire. Et j'aimerais récupérer également son nom et prénom de SESSION sachant que les tables sont nom et prenom. Si quelqu'un pouvait m'aider pour ces deux choses ;)

Voici mon script :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php

if(!empty($_POST['submit']))
{
  $image = htmlspecialchars($_POST['image']);
  $title = htmlspecialchars($_POST['title']);
  $contenu = htmlspecialchars($_POST['contenu']);
  $categories = $_POST['categories'];

  if(!empty($image)&&!empty($title)&&!empty($contenu)&&!empty($categories))
      {  
          $bdd = new PDO('mysql:host=localhost;dbname=root','root','root');
          $requete_canal = $bdd->prepare('INSERT INTO subjects(image, title, contenu, categories) VALUES(:image, :title, :contenu, :categories)');
          $requete_canal->execute(array(
            'image' => $image,
            'title' => $title,
            'contenu' => $contenu,
            'categories' => $categories
          ));

          echo 'Le sujet a bien été crée'; 
  }else echo "Veuillez saisir tous les champs!";
}

?>

Que dois-je ajouter pour reporter l'utilisateur sur ce qu'il vient de créer ? Que dois-je ajouter pour récupérer nom et prénom de la session ? Cordialement,

Merci de son aide d'avance :D

+0 -0

Salut, D'accord, je vais lire tout ça merci ;)

Quand on crée un sujet, on récupère le nom et prénom de la session en cours et on l'affiche ensuite :)

en fait j'ai fais ça :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php

session_start();

if(!empty($_POST['submit']))
{
  $_SESSION['pseudo']['nom'] = $_POST['nom'];
  $_SESSION['pseudo']['prenom'] = $_POST['prenom'];
  $image = htmlspecialchars($_POST['image']);
  $title = htmlspecialchars($_POST['title']);
  $contenu = htmlspecialchars($_POST['contenu']);
  $categories = $_POST['categories'];

  if(!empty($image)&&!empty($title)&&!empty($contenu)&&!empty($categories))
      {   
          $bdd = new PDO('mysql:host=localhost;dbname=root','root','root');
          $requete_canal = $bdd->prepare('INSERT INTO subjects(nom, prenom, image, title, contenu, categories) VALUES(:nom, :prenom, :image, :title, :contenu, :categories)');
          $requete_canal->execute(array(
            'nom' => $nom,
            'prenom' => $prenom,
            'image' => $image,
            'title' => $title,
            'contenu' => $contenu,
            'categories' => $categories
          ));

          echo 'Le sujet a bien été crée';  
  }else echo "Veuillez saisir tous les champs!";
}

?>

Mais ça marche pas :/ Merci d'avance :)

j'ai array() et j'ai réessayé avec autre chose et là ça m'affiche le username avec toujours le array, ça me fait "crée" mais rien ne s'insère. Quand l'utilisateurs se connecte, la session a pour nom "pseudo". En fait je souhaite récupérer le nom et prénom de la personne connectée. On doit pas faire ça !? :O

Déjà ce qui me chagrine, c'est ce $nom et $prenom lignes 19 et 20 qui ne sont définies nulle part. Je suppose que tu veux dire $_SESSION['pseudo']['nom'] et $_SESSION['pseudo']['prenom'].

Mais il faut t'assurer que ta variable de session contient quelque chose, ce qui me laisse dubitatif en voyant que cela te retourne un tableau vide.

Ligne 6 fais un echo de $_POST['nom'] et $_POST['prenom'] pour voir si déjà elles contiennent quelque chose.

+0 -0

Je plussoie ellypire933 quant aux variables non définies, ça ne peut qu'être source de problèmes.

Par contre je relève aussi un gros problème de conception :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
<?php
  $image = htmlspecialchars($_POST['image']);
  $title = htmlspecialchars($_POST['title']);
  $contenu = htmlspecialchars($_POST['contenu']);
  $categories = $_POST['categories'];

  // […]
          $requete_canal = $bdd->prepare('INSERT INTO subjects(nom, prenom, image, title, contenu, categories) VALUES(:nom, :prenom, :image, :title, :contenu, :categories)');
          $requete_canal->execute(array(
            'nom' => $nom,
            'prenom' => $prenom,
            'image' => $image,
            'title' => $title,
            'contenu' => $contenu,
            'categories' => $categories
          ));

orelsan12

C'est pourtant assez dit et répété : les traitements sur les chaînes qui ne sont pas des protections contre les injections SQL (exit donc les XSS — et consorts — comme ici) se font à l'affichage et non à l'enregistrement. Tu peux garder ce conseil de côté, il te servira très souvent. ;)

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte