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>
4238 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 116 vues
Définir l'encodage de caractères avec <meta charset="utf-8">
Définir l'encodage de caractères avec <meta charset="utf-8">L'encodage de caractères définit la correspondance entre les caractères et les valeurs binaires utilisées par l'ordinateur....
HTML
3 316 vues
Mettre son site en ligne
Maintenant que vous avez développé votre propre site il est temps qu'il prenne son envole afin d'atterrir dans nos navigateurs (ex : google, bing, etc.) 😁👌Donc à partir de maintenant vous...
Créer son site
869 vues
Opérateurs logiques (&&, ||, !)
Les opérateurs logiques en PHP sont utilisés pour combiner des expressions conditionnelles et produire des résultats basés sur la logique booléenne. Voici les principaux opérateurs logiques en...
PHP
5 626 vues
Que mettre dans la balise head
Afin de continuer à faire connaitre votre site pour son référencement nous allons parler du contenu de base dans la balise <head>.La balise <head> joue un rôle essentiel...
Créer son site
1 579 vues
Gestion des événements : click, submit, keydown, etc.
Gestion des Événements en JavaScriptLa gestion des événements en JavaScript permet d'interagir avec les actions de l'utilisateur sur une page web, telles que les clics de souris, les soumissions...
JS
2 432 vues
Création de tables avec PhpMyAdmin
1. Accéder à PhpMyAdmin :Ouvrez un navigateur web et accédez à l'URL où vous avez installé PhpMyAdmin sur votre serveur.2. Authentification :Connectez-vous à PhpMyAdmin en utilisant vos...
SQL
1 822 vues
Inline CSS : l'ajout de styles directement dans les balises HTML
Inline CSS : L'ajout de styles directement dans les balises HTMLL'Inline CSS est une méthode de stylisation où les styles sont appliqués directement à un élément HTML via l'attribut style. Cela...
CSS
4 625 vues
L'expression if ... else - PHP
Lorsque vous écrivez votre code, il vous arrive souvent de vouloir effectuer des actions différentes en fonction de différentes conditions. C'est à ce moment que l'instruction if et else va vous...
Publicité
Cette pub permet au site de vivre ...