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>
4318 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 623 vues
Ajout d'images avec <img> et attributs src, alt et width
Ajout d'images avec <img> et attributs src, alt et widthLa balise <img> est utilisée pour afficher des images dans une page HTML. Elle nécessite l'utilisation de certains attributs pour...
HTML
1 874 vues
Afficher les messages dans l'ordre
Dans cette vidéo on va personnaliser (un peu) l'interface des conversations avec du CSS.Nous allons également remettre les messages dans l'ordre et lors de la réception du message par le...
Créer son site de rencontres
2 354 vues
Ajouter un avatar
Nous allons maintenant ajouter des avatars à nos profils et afficher ses avatars lors de l’affichage des membres 😁
Créer son site de rencontres
2 730 vues
Supprimer un ami
Nous allons repartir sur notre page voir_profil.php afin de compléter le code ci-dessous.<form method="post">   <?php     if(!isset($relation['id'])){   ?>  ...
Créer son site
548 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
18 415 vues
Mot de passe oublié en PHP
Il arrivera souvent qu'un utilisateur oublie son mot de passe. Pour y remédiez nous allons modifier notre base de données avec un nouveau paramètre nous permettant de savoir si...
Créer son site
767 vues
Comprendre les concepts de marge, bordure, rembourrage et largeur/hauteur
Dans CSS, la mise en page des éléments est souvent influencée par quatre concepts clés : la marge, la bordure, le rembourrage et la largeur/hauteur. Comprendre ces concepts est essentiel pour...
CSS
2 745 vues
Téléchargement et installation de PhpMyAdmin sur un serveur local ou distant
Téléchargement et Installation de PhpMyAdmin1. Téléchargement de PhpMyAdmin :Rendez-vous sur le site officiel de PhpMyAdmin à l'adresse https://www.phpmyadmin.net/.Cliquez sur le bouton de...
SQL
Publicité
Cette pub permet au site de vivre ...