Tuto "forum en PHP"

Par Orno le 31 May 2019 (Édité) 6 85

Bonsoir,

Votre tuto sur créer un forum est magnifique même si je suis débutant en PHP. Comment transferer un tel projet dans un environnement wamserver?

Cette pub permet au site de vivre ...

6 Commentaires

Il y a plusieurs possibilité pour simplifié ton code !

Pour ma part je t'avais proposé une solution mais la tienne en est une deuxième ! Nos deux solution son perfectible mais après c'est en fonction de toi comment tu développe pour t'y retrouver 🙂


Sinon pour répondre à ta question du mysql_real_escape_string() en PDO, il n'y en pas pas réellement car PDO est plus sécurisant que l'ancienne méthode. (Voir l'article ici)

Ok, bien merci Clouder!

Sinon la solution que j'ai trouvé se présente de la manière suivante:

main.functions.php //connexion à la base de données


session_start();
$dbhost = 'localhost';
$dbname = 'messenger';
$dbuser = 'root';
$dbpass = '';

try{
  $db = new PDO ('mysql:host='.$dbhost.';dbname='.$dbname, $dbuser, $dbpass, array (PDO::MYSQL_ATTR_INIT_COMMAND=>'SET NAMES utf8', PDO::ATTR_ERRMODE=>PDO::ERRMODE_WARNING));
}catch(PDOexception $e){
  die("Une erreur est survenue lors de la connexion à la base de données");
}


forum.func.php //cette fonction me permet de récupérer les données e la table f_forum


function categorie_forum(){
global $db;
$req = $db->query("SELECT * FROM f_forum ORDER BY ordre");
$req = $req->fetchAll();
return $req;
}
?>


forum.php //la page qui sera lu à l'url avec un chemin du genre index.php?page=forum

<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">
     <h1 style="text-align: center">Forum</h1>
     <div class="table-responsive" style="margin-top: 10px">
      <table class="table table-striped">
       <tr>
        <th>ID</th>
        <th>Titre</th>
       </tr>
         <?php
         
          foreach(categorie_forum() as $r){ 
          ?>  
          <tr>
          <td><?php echo $r['id_forum'] ?></td>
<td><a href="f_forum/<?php echo $r['id_forum'] ?>"><?php echo $r['titre'] ?></a></td>
          </tr>  
          <?php
          }
         ?>
      </table>           
     </div>
    </div>
   </div>
  </div>

    


Donc essayez e voir avec moi parce que j'apprends petit à petit php. Et aussi je cherche l'équivalent de la commande mysql_real_escape_string() pour utiliser en php 7.

Salut Orno,


Si tu souhaites séparer ton code avec une page en mode VUE et une page en mode MODELE je ferais comme cela :


MODELE


<!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>Forum</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">
					<h1 style="text-align: center">Forum</h1>
					<div class="table-responsive" style="margin-top: 10px">
						<table class="table table-striped">
							<tr>
								<th>ID</th>
								<th>Titre</th>
							</tr>
							<?= $see_forum ?>
						</table> 
					</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>


VUE


<?php
	session_start();
	include('../bd/connexionDB.php'); // Fichier PHP contenant la connexion à votre BDD

	$req = $DB->query("SELECT * 
		FROM forum
		ORDER BY ordre");
	$req = $req->fetchAll();

	$see_forum = null;
		
	foreach($req as $r){ 
		$see_forum .='<tr>
			<td>' . $r['id'] . '</td>
			<td><a href="forum/' . $r['id'] . '">' . $r['titre'] . '></a></td>
		</tr>';
	}
?>

Bonsoir M.Clouder

j'aimerais bien que vous m'aidiez à séparer mon code php ci dessous en deux fichiers: forum.php (page) et forum.func.php (fonction). voici le nom de ma base de données: messenger et table forum(id_forum, titre, date_creation, ordre). J'ai déja un fichier connexion à la base de données et un autre index.php. Donc mon problème est de séparer le traitement avec les données c'est à dire forum.php à part et forum.func.php à part. Aidez moi svp!

J'utilise windows et wampserver3.1.9_x64.


<?php
session_start();
include('../bd/connexionDB.php'); // Fichier PHP contenant la connexion à votre BDD

$req = $DB->query("SELECT * 
FROM forum
ORDER BY ordre");

$req = $req->fetchAll();
?>
<!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>Forum</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">
<h1 style="text-align: center">Forum</h1>
<div class="table-responsive" style="margin-top: 10px">
<table class="table table-striped">
<tr>
<th>ID</th>
<th>Titre</th>
</tr>
<?php
foreach($req as $r){ 
?> 
<tr>
<td><?= $r['id'] ?></td>
<td><a href="forum/<?= $r['id'] ?>"><?= $r['titre'] ?></a></td>
</tr> 
<?php
}
?>
</table> 
</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>

Ne crée pas deux fois un topic ...


Votre site web tourne déjà sur un autre serveur ? MAMP, Xamp, etc. ?

Pour l'avoir fait il suffit juste de suivre le tuto de Clouder et de bien comprendre les étapes pour ne pas vous y perdre par la suite en cas de modification ou adaptation de votre part.

Je suis tout à fait d'accord que l'ensemble du site est très bien fait et si vous débutez alors vous allez beaucoup apprendre ici ;)

Cette pub permet au site de vivre ...