Créer un topic


Dans notre dossier **f_forum**, nous allons créer une nouvelle page creer_topic.php. Cette page permettra à vos utilisateurs de pouvoir créer un topic afin de demande de l'aide, poser une question, ... à votre communauté.



Nous allons également modifier notre fichier .htaccess afin d'appliquer l'URL souhaitée pour accéder à cette nouvelle page.


Fichier .htaccess


RewriteRule ^forum/creer-mon-topic$ f_forum/creer_topic


Dans notre page creer_topic.php nous allons faire un formulaire qui permettra la création d'un topic.


Page creer_topic.php


<?php
  session_start();
  include('../bd/connexionDB.php'); // Fichier PHP contenant la connexion à votre BDD
   
  if (!isset($_SESSION['id'])){
    header('Location: /forum');
    exit;
  }
   
	if(!empty($_POST)){
    extract($_POST);
    $valid = true;

    if (isset($_POST['creer-topic'])){
					
			// Récupération de nos différents champs
      $titre = htmlentities(trim($titre)); 
      $contenu = htmlentities(trim($contenu)); 
			$categorie = (int) htmlentities(trim($categorie));
			
      if(empty($titre)){
        $valid = false;
        $er_titre = ("Il faut mettre un titre");
      }    

      if(empty($contenu)){
        $valid = false;
        $er_contenu = ("Il faut mettre un contenu");
      }    
			
      if(empty($categorie)){ 
        $valid = false;
        $er_categorie = "Le mail ne peut pas être vide";

      }else{
        // On vérifit que la catégorie existe
        $verif_cat = $DB->query("SELECT id, titre FROM forum WHERE id = ?",
          array($categorie));

        $verif_cat = $verif_cat->fetch();

        if (!isset($verif_cat['id'])){
          $valid = false;
          $er_categorie = "Cette catégorie n'existe pas";
        }
      }

      if($valid){
        $date_creation = date('Y-m-d H:i:s');
       
        $DB->insert("INSERT INTO topic (id_forum, titre, contenu, date_creation, id_user) VALUES 
          (?, ?, ?, ?, ?)", 
          array($categorie, $titre, $contenu, $date_creation, $_SESSION['id']));

        header('Location: /forum/' . $categorie);
        exit;
      }
    }
  }
?>
<!DOCTYPE html>
<html>
	<head>
		<base href="/"/>
		<meta charset="utf-8"/>
		<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/>
		<title>Créer mon topic</title>
		<link rel="stylesheet" href="../css/bootstrap.min.css"/>
		<link rel="stylesheet" href="../css/style.css"/>
	</head>

	<body>
		<?php
			require_once('../menu.php');	
		?>
		
		<div class="container">
			<div class="row">	
				
				<div class="col-sm-0 col-md-0 col-lg-0"></div>
				<div class="col-sm-12 col-md-12 col-lg-12">
					<div class="cdr-ins">
				     
				    <h1>Créer mon topic</h1>
				     
				    <form method="post">
				
				      <?php
				        // S'il y a une erreur sur la catégorie alors on affiche
				        if (isset($er_categorie)){
				        ?>
				          <div class="er-msg"><?= $er_categorie ?></div>
				        <?php  
				        }
				      ?>
				      <div class="form-group">
				      	<div class="input-group mb-3">
									<select name="categorie" class="custom-select" id="inputGroupSelect01">
										
										<?php
											if(!isset($categorie)){
											?>
											<option selected>Sélectionner votre catégorie</option>
											<?php
											}else{
											?>
											<option value="<?= $categorie ?>"><?= $verif_cat['titre'] ?></option>
											<?php	
											}
										?>
										
										<?php
											$req_cat = $DB->query("SELECT * FROM forum");
											
											$req_cat = $req_cat->fetchALL();
											
											foreach($req_cat as $rc){
											?>
												<option value="<?= $rc['id'] ?>"><?= $rc['titre'] ?></option>
											<?php
											}	
										?>
									</select>
								</div>
				      </div>
				      <?php
				        if (isset($er_titre)){
				        ?>
				          <div class="er-msg"><?= $er_titre ?></div>
				        <?php  
				        }
				      ?>
				      <div class="form-group">
				      	 <input class="form-control" type="text" placeholder="Votre titre" name="titre" value="<?php if(isset($titre)){ echo $titre; }?>">  
				      </div>
				      <?php
				        if (isset($er_contenu)){
				        ?>
				          <div class="er-msg"><?= $er_contenu ?></div>
				        <?php  
				        }
				      ?>
				      <div class="form-group">
				    	  <textarea class="form-control" rows="3" placeholder="Décrivez votre topic" name="contenu"><?php if(isset($contenu)){ echo $contenu; }?></textarea>
				      </div>
				
							<div class="form-group">
				      	<button class="btn btn-primary" type="submit" name="creer-topic">Envoyer</button>
							</div>
				
				    </form>
			    </div>
				</div>
			</div>
		</div>

	  <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
		<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
		<script src="../js/bootstrap.min.js"></script>
	</body>
</html>
4065 vues
Modifié le 29 avril 2019
Publicité Sitedudev
Cette pub permet au site de vivre ...
Vidéo associée
Publicité Sitedudev
Cette pub permet au site de vivre ...
Télécharger le code source
Publicité
Cette pub permet au site de vivre ...
Voir d'autres articles
4 231 vues
Différencier HTML (structure) de CSS (présentation)
Différencier HTML (structure) de CSS (présentation)HTML (HyperText Markup Language) et CSS (Cascading Style Sheets) sont deux langages complémentaires utilisés pour créer des sites Web, mais ils...
CSS
9 014 vues
Introduction
Je vous propose un cours afin de concevoir votre premier site de A à Z incluant un espace membre, un forum & un blog 😎Les objectif de ce cours :L'objectif et de ce familiariser avec les...
Créer son site
8 967 vues
Barre de recherche : Complète
Barre de rechercheMaintenant que notre formulaire et que notre script sont fait, nous allons créer une nouvelle page PHP que l'on nommera recherche_utilisateur.php.Dans cette page...
Créer son site
1 294 vues
Utilisation des clauses WHERE, ORDER BY, GROUP BY et LIMIT pour filtrer et trier les résultats
1. Utilisation de la Clause WHERE pour Filtrer les Résultats :La clause WHERE est utilisée pour filtrer les résultats en fonction de certaines conditions.SELECT colonne1, colonne2, ... FROM...
SQL
5 764 vues
Afficher la liste des catégories
Pour commencer nous allons créer la page maître de notre forum. C'est cette page qui contiendra les différentes catégories.Tout d'abord nous allons créer un dossier que nous...
Créer son site
2 005 vues
Explorer les fonctions de manipulation de couleur, de texte, etc.
Exploration des fonctions de manipulation en SASS1. Manipulation de couleurs :SASS propose un ensemble de fonctions intégrées pour manipuler les couleurs. Vous pouvez ajuster la luminosité, la...
Sass
779 vues
Utilisation des éléments <input>, <textarea>, <select> et <button>
Utilisation des éléments <input>, <textarea>, <select> et <button>Dans un formulaire HTML, différents éléments sont utilisés pour collecter des données de...
HTML
5 194 vues
Comment débute-t-on ?
Maintenant que vous savez qu'elles sont les différents langages web à utiliser pour développer un site, vous devez certainement vous demander "Alors, comment développe-t-on un site...
Créer son site
Publicité
Cette pub permet au site de vivre ...