creation de site web :

- Aide pour compléter un forum

annonces immobilieres gratuites
Autres messages sur des sujets similaires :
Nouveau forum ....
CRéer un forum !
NO FORUM !!!!!!!!!!!!!
Vue du forum
réaliser des scripts de FORUM de discussion
Cours HTML / Javascript / PHP disponibles :



 Retour Site Honolulu  |  Nouveau sujet  |  Retour aux sujets  |  Chercher  |  Connexion    
 Aide pour compléter un forum
Auteur: tamy
(w81-248.abo.wanadoo)
Date: 19-05-2003 20:37
 messages postés sur  la création de site web [ msg ]
bonjour
j'ai téléchargé un script de forum trés bien pour débutant du site
http://www.az-php.com - ->Cours N°21 ,mais je n'arrive pas à le compléter
Pouvez m'aider a le completer pour le rendre fonctionnel .
merci d'avance pour votre aide
Ci _joint LE code

Création de la table

#
#structure de la table forum
#

CREATE TABLE forum_tbl (
id int NOT NULL auto_increment,
reponse_id varchar (30) not null,
date_verif varchar (20) NOT NULL,
date varchar(20) NOT NULL,
pseudo varchar (50) NOT NULL,
email varchar(55) NOT NULL,
sujet varchar (60) NOT NULL,
message text NOT NULL,
PRIMARY KEY (id)
);



Plusieurs paramètres pour la table du forum, l'id qui sera incrémentée automatiquement à chaques messages, reponse_id recevra l'id du message original à chaques nouvelles reponses, date_verif recevra la date au format us pour classer les sorties, date servira à afficher la date du post, le pseudo , l'email et message.




Le formulaire d'ajout de nouveau sujet pour le visiteur qu'on appelera nouveau.php
<form method="post" action="ajouter.php">
<table border="0" width="350" align="center">
<tr>
<td width="100"><b>Pseudo</b></td>
<td width="250"><input type="text" name="pseudo"></td>
</tr>
<tr>
<td width="100"><b>E-Mail</b></td>
<td width="250"><input type="text" name="email"></td>
</tr>
<td width="100"><b>Sujet</b></td>
<td width="250"><input type="text" name="sujet"></td>
</tr>
<td colspan="2" align="center"><b>Message</b></td>
</tr>
<tr>
<td colspan="2" align="center">
<textarea name="message" wrap="VIRTUAL" cols="40" rows="10"></textarea>
</td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" name="submit" value="Enregistrer"></td>
</tr>
</table>
</form>



Pas de détail ici, c'est un formulaire html !! Remarquez cependant qu'il n'y a pas de balise <html><body><head> car nous allons nous servir de la fonction include.


Le formulaire d'ajout de reponse au sujet pur le visiteur qu'on appelera reponse.php
<form method="post" action="ajouter.php">

<input type="hidden" name="reponse_id" value="<? print $id; ?>">// on ajoute dans ce formulaire un champ caché nommé reponse_id de facon a déterminer à quel id correspond la réponse apportée

<table border="0" width="350" align="center">
<tr>
<td width="100"><b>Pseudo</b></td>
<td width="250"><input type="text" name="pseudo"></td>
</tr>
<tr>
<td width="100"><b>E-Mail</b></td>
<td width="250"><input type="text" name="email"></td>
</tr>
<td width="100"><b>Sujet</b></td>
<td width="250"><input type="text" name="sujet"></td>
</tr>
<td colspan="2" align="center"><b>Message</b></td>
</tr>
<tr>
<td colspan="2" align="center">
<textarea name="message" wrap="VIRTUAL" cols="40" rows="10"></textarea>
</td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" name="submit" value="Enregistrer"></td>
</tr>
</table>
</form>



Ne pas oublier le champ caché reponse_id, celui ci est très important dans la conception du forum


La page d'ajout des messages, nommée ajouter.php

<?
//----------------------------------------------------------------
//
// Page ajouter.php
//
// Ajout des messages et reponses dans mysql
// Verification des champs obligatoires et traitement des données
//
//----------------------------------------------------------------

$mysql_host = 'localhost'; // entrer vôtre hote ici
$mysql_user = 'votre login'; // entrer vôtre login
$mysql_password = 'password'; // entrer vôtre password
$mysql_base = 'le nom de vôtre base de donnée'; // entrer le nom de vôtre base

//----------------------------------------------------------------
// début du script , vérification des champs venant du formulaire

if( empty( $pseudo) || empty($sujet) || empty($message) ) // si les champ pseudo ,sujet ou message sont vides
{

print'<a href="javascript:history.back();">Cliquez ici pour compèter le formulaire</a>';

}
else{ // les champs sont ok, on insert dans la base

//on prépare la date au format US pour l'ordre de sortie
$date_verif = date("Y-m-d H:i");

//la date au format francais
$date = date("d-m-Y H:i");

// on supprime les caractères spéciaux
$pseudo = AddSlashes (htmlspecialchars($pseudo));
$email = AddSlashes (htmlspecialchars($email));
$message = AddSlashes (htmlspecialchars($message));

//on se connecte à la base de donnée
$db = mysql_connect($mysql_host,$mysql_user,$mysql_password) or die ("erreur de connexion");

//selection de vôtre base de donnée
mysql_select_db($mysql_base,$db) or die ("erreur de connexion
base");

//requète d'insertion dans la table
mysql_query("INSERT Into forum_tbl VALUES ('','$reponse_id','$date_verif','$date','$pseudo','$email','$sujet','$message') ") or die ("erreur requète");

//on ferme la connexion
mysql_close();

//on redirige le visiteur sur la page d'accueil, là ou s'afficheront les messages soit index.php
header('location: index.php');

}
?>




La page index de votre forum( index.php )

<?
//----------------------------------------------------------------
//
// Page d'affichage des sujets, auteurs, dates
// index.php
//
//----------------------------------------------------------------

$mysql_host = 'localhost'; // entrer vôtre hote ici
$mysql_user = 'votre login'; // entrer vôtre login
$mysql_password = 'password'; // entrer vôtre password
$mysql_base = 'le nom de vôtre base de donnée'; // entrer le nom de votre base

//----------------------------------------------------------------

//on se connecte à la base de donnée
$db = mysql_connect($mysql_host,$mysql_user,$mysql_password) or die ("erreur de connexion");

//selection de vôtre base de donnée
mysql_select_db($mysql_base,$db) or die ("erreur de connexion
base");

//la requète de selection des messages , remarqué la clause where, on selectionne seulement les sujets dont le champ reponse_id est vide , j'ai fixé ici une limite de sortie à 50 sujets, à vous de choisir celle que vous souhaité, ou de vous servir du cours n°20 ;-)
$req = mysql_query("SELECT id,date,pseudo,email,sujet from forum_tbl where reponse_id ='' Order by date_verif Desc Limit 0, 50 ") or die ("erreur requete");

//on ressort le contenu en boucle, et on stock dans un tableau avec mysql_fetch_array
while( $forum = mysql_fetch_array ($req))
{

//on affiche le résultat, dans le liens hypertexte du sujet, on passe par l'url l'id original du sujet, de facon a selectionner celui et les réponse dans la page lecture.php
print '<a href="lecture.php?id='.$forum[id].'">'.$forum[sujet].'</a> -Auteur : <a href="mailto:'.$forum.'">'.$forum[pseudo].'</a> posté le : '.$forum[date].'<br>';
print '<hr>';

}

//on referme la connexion
mysql_close();

include('nouveau.php'); // on inclus le formulaire pour les nouveaux sujets.
//----------------- FIN DE LA PAGE INDEX--------------------------------

?>
L'affichage se fait de facon basique, vous devrez vous même insèrer votre code html, pour que le forum soit plus agréable à voir bien sur.


La page de lecture du message original et des réponses apportées, nommé lecture.php

<?
//----------------------------------------------------------------
//
// Page d'affichage des messages et des réponses
// lecture.php
//
//----------------------------------------------------------------

$mysql_host = 'localhost'; // entrer vôtre hote ici
$mysql_user = 'votre login'; // entrer vôtre login
$mysql_password = 'password'; // entrer vôtre password
$mysql_base = 'le nom de vôtre base de donnée'; // entrer le nom de votre base

//----------------------------------------------------------------

//on se connecte à la base de donnée
$db = mysql_connect($mysql_host,$mysql_user,$mysql_password) or die ("erreur de connexion");

//selection de vôtre base de donnée
mysql_select_db($mysql_base,$db) or die ("erreur de connexion
base");

//----------------------------------------------------------------
//
// la requète de selection du message original dont l'id est celle passée par l'url
//
//----------------------------------------------------------------
$req = mysql_query("SELECT id,date,pseudo,email,sujet,message from forum_tbl where id ='$id' ") or die ("erreur requete");

//on ressort le contenu et on stock dans un tableau avec mysql_fetch_array
$original = mysql_fetch_array ($req);


//on affiche le message original
print $original[sujet].'<br>';
print'Auteur : <a href="mailto:'.$original.'">'.$original[pseudo].'</a> posté le : '.$original[date].'<br>';
print 'message: <br>';
print $original[message];

print '<hr>'; // ligne html de séparation

//----------------------------------------------------------------
//
// On ressort maintenant les reponse_id ayant le meme numero id
// que le message original
//
//----------------------------------------------------------------
$rep = mysql_query("SELECT id,date,pseudo,email,sujet,message from forum_tbl where reponse_id ='$id' ") or die ("erreur requete reponse ");

//on ressort le contenu en boucle et on stock dans un tableau avec mysql_fetch_array
while ( $reponse = mysql_fetch_array ($rep)){

// on affiche les réponses

print $reponse[sujet].'<br>';
print'Auteur : <a href="mailto:'.$reponse.'">'.$reponse[pseudo].'</a> posté le : '.$reponse[date].'<br>';
print 'message: <br>';
print $reponse[message];

print '<hr>'; // ligne html de séparation pour chaques réponses

}

//on referme la connexion
mysql_close();

include('reponse.php'); //on inclu le formulaire pour les réponses à ce sujet
//----------------- FIN DU SCRIPT LECTURE--------------------------------

?>

L'affichage est aussi de facon basique, à vous de personnaliser.
Vous avez remarqué que nous avons insèré le formulaire de réponse en bas de la page lecture, souvenez vous du champ caché reponse_id , celui-ci porte maintenant le numero de l'id du message original, qui est passé par l'url , donc à chaque réponses, ce message sera classé de facon à pouvoir le ressortir à la suite des autres réponses. Ce champ est très important, c'est lui qui fait fonctionner le script correctement.

Répondre à ce message
 Retour Site Honolulu  |  Liste des Forums    

 Liste des Forums  |  Nouvel utilisateur ? Enregistrez-vous ici 
 Connexion
 Nom d'utilisateur:
 Mot de passe:
 Enregistrer mon profil:
   
 Mot de passe perdu ?
Écrivez votre adresse Email ou votre Identifiant ci-dessous et un nouveau mot de passe sera envoyé sur l'Email lié à votre profil.
phorum.org
Honolulu : apprendre le html et le javascript