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>
3848 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 160 vues
Personnaliser ses conversations
Dans cette dernière vidéo nous allons personnaliser notre messagerie ! 😎Pour cela nous allons donner l’aspect des conversations comme une messagerie de smartphone type Apple ou Samsung.Nous...
Créer son site de rencontres
4 337 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
3 437 vues
Notre base de données
Avant de commencer notre cours pour créer notre système d'amis, nous allons commencer par créer notre table de relation.Pour cela nous avons besoin d'un demandeur et d'un receveur.Le demandeur est...
Créer son site
48 vues
Opérateurs de comparaison (==, !=, <, >, <=, >=)
Les opérateurs de comparaison en PHP sont utilisés pour comparer des valeurs et renvoyer un résultat basé sur la comparaison. Voici les principaux opérateurs de comparaison en PHP :1. Égalité...
PHP
3 367 vues
Création de liens hypertexte avec <a>
Création de liens hypertexte avec <a>La balise <a> (ou <a href="">) est utilisée pour créer des liens hypertexte dans une page HTML. Elle permet de lier le contenu d'une page à...
HTML
2 vues
Les callbacks
Les Callbacks en JavaScriptLes callbacks sont des fonctions passées en tant qu'arguments à d'autres fonctions, qui seront exécutées ultérieurement ou de manière asynchrone. Les callbacks sont...
JS
7 420 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
3 097 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
Publicité
Cette pub permet au site de vivre ...