Poster un commentaire


Dans notre dossier f_forum, nous allons reprendre la page topic.php. Dans cette page nous allons ajouter la possibilité à vos utilisateurs de pouvoir poster des commentaires sur le topic dans.


Page topic.php


<?php
	session_start();
	include('../bd/connexionDB.php'); 

	$get_id_forum = (int) trim(htmlentities($_GET['id_forum']));
	$get_id_topic = (int) trim(htmlentities($_GET['id_topic']));

	if(empty($get_id_forum) || empty($get_id_topic)){
		header('Location: /forum');
		exit;
	}

	$req = $DB->query("SELECT t.*, DATE_FORMAT(t.date_creation, 'Le %d/%m/%Y à %H\h%i') as date_c, U.prenom
		FROM topic T
		LEFT JOIN utilisateur U ON U.id = T.id_user
		WHERE t.id = ? AND t.id_forum = ?
		ORDER BY t.date_creation DESC"array($get_id_topic, $get_id_forum));

	$req = $req->fetch();

	if(!isset($req['id'])){
		header('Location: /forum/' . $get_id_forum);
		exit;
	}

	$req_commentaire = $DB->query("SELECT TC.*, DATE_FORMAT(TC.date_creation, 'Le %d/%m/%Y à %H\h%i') as date_c, U.prenom, U.nom
		FROM topic_commentaire TC
		LEFT JOIN utilisateur U ON U.id = TC.id_user
		WHERE id_topic = ?
		ORDER BY date_creation DESC",
		array($get_id_topic));

	$req_commentaire = $req_commentaire->fetchAll();

	if(!empty($_POST)){
		extract($_POST);
		$valid = true;

		// On se positionne sur le formulaire d'ajout d'un commentaire
		if (isset($_POST['ajout-commentaire'])){ 

			// On récupère le contenu du commentaire
			$text = (String) trim($text); 

			// On fait quelques vérifications
			if(empty($text)){
				$valid = false;
				$er_commentaire = "Il faut mettre un commentaire";
			}elseif(iconv_strlen($text, 'UTF-8') <= 3){
				$valid = false;
				$er_commentaire = "Il faut mettre plus de 3 caractères";
			}
			// Par précaution on sécurise notre commentaire
			$text = htmlentities($text);

			if($valid){

				$date_creation = date('Y-m-d H:i:s');

				// On insètre le commentaire dans la base de données
				$DB->insert("INSERT INTO topic_commentaire (id_topic, id_user, text, date_creation) VALUES (?, ?, ?, ?)"array($get_id_topic, $_SESSION['id'], $text, $date_creation));

				header('Location: /forum/' . $get_id_forum . '/' . $get_id_topic);
				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>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-12 col-md-12 col-lg-12">
					<h1 style="text-align: center">Topic : <?= $req['titre'] ?></h1>
				
					<div style="background: white; box-shadow: 0 5px 15px rgba(0, 0, 0, .15); padding: 5px 10px; border-radius: 10px">
					  <h3>Contenu</h3>
					  <div style="border-top: 2px solid #eee; padding: 10px 0"><?= $req['contenu'] ?></div>
					  <div style="color: #CCC; font-size: 10px; text-align: right">
						  <?= $req['date_c'] ?>
							par 
							<?= $req['prenom'] ?>
					  </div>				
					</div>
					
					<?php
						// Mis en place de notre espace pour poster des commentaires 
						// Uniquement si l'utilisateur est connecté il pourra faire un commentaire
						if(isset($_SESSION['id'])){
					?>
						<div style="background: white; box-shadow: 0 5px 15px rgba(0, 0, 0, .15); padding: 5px 10px; border-radius: 10px; margin-top: 20px">
						  <h3>Participer à la discussion</h3>
							
							<?php
				        // S'il y a une erreur sur le nom alors on affiche
				        if (isset($er_commentaire)){
				        ?>
				          <div class="er-msg"><?= $er_commentaire ?></div>
				        <?php  
				        }
				      ?>

							<form method="post">
								<div class="form-group">
								  <textarea class="form-control" name="text" rows="4"></textarea>
								</div>
								<div class="form-group">
					      	<button class="btn btn-primary" type="submit" name="ajout-commentaire">Envoyer</button>
								</div>
							</form>
						</div>
					<?php
						}	
					?>
					
					<div style="background: white; box-shadow: 0 5px 15px rgba(0, 0, 0, .15); padding: 5px 10px; border-radius: 10px; margin-top: 20px">
					  <h3>Commentaires</h3>
			
						<div class="table-responsive">
						  <table class="table table-striped">
							<?php
							  foreach($req_commentaire as $rc){ 
							  ?>  
							    <tr>
							      <td>
							        <?= "De " . $rc['nom'] . " " . $rc['prenom'] ?></a>
							      </td>
							      <td>
							        <?= $rc['text'] ?>
							      </td>
							      <td>
							        <?= $rc['date_c'] ?>
							      </td>
							    </tr>  
							  <?php
							  }
							?>
							</table>					
						</div>
					</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>
4083 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
198 vues
Fonctions anonymes et fonctions fléchées
Fonctions Anonymes et Fonctions Fléchées en JavaScript1. Fonctions Anonymes :Une fonction anonyme est une fonction définie sans nom. Elles sont souvent utilisées comme fonctions de rappel...
JS
17 293 vues
Créer un profil PHP
Après avoir créé notre page de connexion et notre page d'inscription il est temps de créer un profil pour votre utilisateur !La page profil permettra plusieurs choses ! D'éditer ses informations...
Créer son site
351 vues
Comparaison avec d'autres langages de programmation
Comparaison de JavaScript avec d'autres langages de programmationJavaScript est un langage de programmation unique avec ses propres caractéristiques et particularités. Comprendre comment il se...
JS
1 537 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
4 538 vues
Afficher la liste des articles
Mise en pagePour commencer nous allons créer la page maître de notre blog. C'est cette page qui contiendra tous les articles qui constituerons notre blog.Tout d'abord nous allons créer...
Créer son site
339 vues
Création d'un fichier .htaccess
Le fichier .htaccess est un élément important pour configurer et personnaliser un site web sur un serveur Apache. Dans ce cours, nous allons apprendre comment créer un fichier .htaccess de...
HTACCESS
2 507 vues
Utilisation de l'élément <html>, <head> et <body>
Utilisation de l'élément <html>, <head> et <body>Dans un fichier HTML, l'élément <html> est la racine de tout le document et enveloppe tout le contenu HTML. À...
HTML
497 vues
Flexbox : créer des mises en page flexibles et responsives
Flexbox : Créer des Mises en Page Flexibles et ResponsivesFlexbox est une méthode de disposition en CSS qui permet de créer des mises en page flexibles et responsives. Il offre un contrôle...
CSS
Publicité
Cette pub permet au site de vivre ...