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>
4081 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
1 649 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
8 553 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
7 854 vues
Déconnexion PHP
Maintenant que nos utilisateurs peuvent se connecter à notre site, il faut également qu'ils puissent se déconnecter.Pour cela, il faut créer une nouvelle...
Créer son site
390 vues
Utilisation de l'instruction SQL SELECT pour récupérer des données d'une ou plusieurs tables
1. Sélection de Colonnes Spécifiques :Pour récupérer des données spécifiques de certaines colonnes d'une table, utilisez la syntaxe suivante :SELECT colonne1, colonne2, ... FROM...
SQL
2 233 vues
Utilisation de PhpMyAdmin pour créer une nouvelle base de données
1. Accéder à PhpMyAdmin :Ouvrez un navigateur web et accédez à l'URL où vous avez installé PhpMyAdmin sur votre serveur.2. Authentification :Vous serez redirigé vers la page de connexion de...
SQL
2 612 vues
Se connecter en PHP
Nous allons dans cette vidéo créer un formulaire PHP afin de nous connecter à notre site web.Pour cela nous allons utiliser la combinaison mail + mot de passe afin de nous connecter.Nous allons...
Créer son site de rencontres
1 938 vues
Voir son profil en PHP
Maintenant que vous savez comment voir le profil d'un membre du site nous allons apprendre à concevoir notre profil !
Créer son site de rencontres
4 695 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
Publicité
Cette pub permet au site de vivre ...