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>
4254 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
10 982 vues
Valider son compte avec un mail
Dans cet article nous allons développer un système qui permettra d'envoyer un mail à votre nouvel utilisateur avec une clé afin de confirmer son compte sur votre site.Pour commencer il faudra...
Créer son site
4 254 vues
Créer un topic
Créer un topicDans 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,...
Créer son site
2 618 vues
Envoyer un message sans recharger la page (1/2)
Nous allons améliorer notre messagerie interne vu que nous pouvons désormais envoyer et recevoir des messages.Pour cela nous allons utiliser du JavaScript avec de l'Ajax afin de faire des...
Créer son site de rencontres
5 421 vues
Qu'est-ce que HTML ?
Cours sur HTML : Qu'est-ce que HTML ?HTML, ou HyperText Markup Language, est le langage de balisage standard utilisé pour créer des pages Web. Il fournit une structure de base pour organiser le...
HTML
1 343 vues
Sélecteurs CSS : identifier les éléments HTML auxquels appliquer des styles
Sélecteurs CSS : Identifier les éléments HTML auxquels appliquer des stylesLes sélecteurs CSS sont des motifs qui permettent de cibler et de sélectionner des éléments HTML spécifiques afin de...
CSS
728 vues
Déclaration de fonctions
Déclaration de Fonctions en JavaScriptEn JavaScript, les fonctions sont des blocs de code réutilisables qui peuvent être appelés pour effectuer une tâche spécifique. Elles peuvent prendre des...
JS
2 125 vues
Demande d'amis en PHP (3/3)
Pour cette troisième vidéo nous allons revoir notre système afin de conserver le statut de la relation lorsqu'on bloque et débloque un utilisateur.
Créer son site de rencontres
1 645 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
Publicité
Cette pub permet au site de vivre ...