Créer son jeu en PHP

Tout pour créer soit-même son jeu en PHP
 
AccueilAccueil  ­CalendrierCalendrier  ­FAQFAQ  ­RechercherRechercher  ­S'enregistrerS'enregistrer  ­MembresMembres  ­GroupesGroupes  ­ConnexionConnexion  
Poster un nouveau sujet   Répondre au sujetPartager | 
 

 [ Tuto ] Forum fait maison

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
warren
Habitué


Nombre de messages: 115
Age: 18
Localisation: Terre -> Europe -> Belgique ->Comines->Cité Jardins 17->Ma chambre->Devant mon PC
Date d'inscription: 30/03/2006

MessageSujet: [ Tuto ] Forum fait maison   Dim 2 Juil - 19:55

Bonjour,
dans ce tuto nous allons créer un forum.

Nous allons faire le foum en plusieurs pages (moi je l'ai fait tout en une page mais le code sera probablement trop long si vous n'en avez jamais fait )

Voci les pages que nous allons créer:
1.forum.php : la page d'index qui nous montrera les topics crées
2.viewtopic.php : la page qui nous permettra de voir un topic
3.create.php : cette page nous servira à créer un topic ou un message

Avant de commencer créez 2 tables dans la bese de données
1.forum_topics
2.forum_posts


CREATE TABLE `forum_posts` (
`ID` bigint(255) NOT NULL auto_increment,
`Author` varchar(255) NOT NULL default '',
`Message` varchar(255) NOT NULL default '',
`Topic` varchar(255) NOT NULL default '',
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;


CREATE TABLE `forum_topics` (
`ID` bigint(255) NOT NULL auto_increment,
`Author` varchar(255) NOT NULL default '',
`Name` varchar(255) NOT NULL default '',
`Message` text NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

Maintenant nous sommes prêts pour commencer

La page forum.php ne va pas contenir grand chose :
Simplement la liste des topics plus un lien pour permettre dans créer un o_0
Code:

$querytopics=mysql_query("SELECT * FROM forum_topics ORDER by ID desc") or die ("problem");   
print "<table border='1' cellspacing='0' cellpadding='0' width=100%>";
print "<tr><th colspan=3>Topics</th></tr>";
print "<tr><td>Topic</td><td>Author</td><td>View topic</td></tr>";
while ($topic=mysql_fetch_array($querytopics))
   {
   echo '<tr><td>'.$topic['Name'].'</td><td>'.$topic['Author'].'</td><td>
      <a href=viewtopic.php?topic_name='.$topic[Name].'>'.$topic['Name'].'</a>
      </td></tr>';
   }
print "<tr><th colspan=3><a href=create.php?todo=createt>Create a topic</a></th></tr>";
print "</table>";


Vous aurez remarqué que la page pour créer un topic = create.php?todo=createt
createt veut dire create topic
Plus loin dans les page il y aura todo=createm qui signifira create message

Maintenant la page pour voir les topics nommé viewtopic.php:

Code:

if(isset($_GET['topic_name']))
{
   if (isset($_GET['page']))
      {
       $page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse
      }
      else // La variable n'existe pas, c'est la première fois qu'on charge la page
      {
      $page = 1; // On se met sur la page 1 (par défaut)
      }

   // On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
   $first_to_view = ($page - 1) * 5;
            
   $topic_name=$_GET['topic_name'];
   $query_author_message=mysql_query("SELECT * FROM forum_topics WHERE Name='$topic_name'");
   $query_post=mysql_query("SELECT * FROM forum_posts WHERE Topic='$topic_name' ORDER by ID asc LIMIT  $first_to_view,5");   
   print "<table border='1' cellspacing='0' cellpadding='0'>";
   print "<tr><th colspan=3>$topic_name</th></tr>";
               
   while ($author_message=mysql_fetch_array($query_author_message))
   {
   $authmesgnl=nl2br($author_message[Message]);
   ?>
   <tr><td width="900px"><size="1px">Author : <? echo $author_message[Author]; ?></font><br><? echo bbcode("$authmesgnl"); ?></td></tr>
   <?
   }
               
   while ($post=mysql_fetch_array($query_post))
   {
   $mesgnl=nl2br($post[Message]);
   ?>
   <tr><td width="900px"><font color="blue" size="1px">Author : <? echo $post[Author]; ?></font><br><? echo bbcode("$mesgnl"); ?></td></tr>
   <?
   }
   print "<tr><th colspan=3><a href=create.php?todo=createm&topic_name=$topic_name>Post message</a></th></tr></table>";

   // On récupère le nombre total de messages
   $return = mysql_query('SELECT COUNT(*) AS nb_messages FROM forum_posts');
   $entries = mysql_fetch_array($return);
   $total_messages = $entries['nb_messages'];

   $number_of_pages  = ceil($total_messages / 5);

   // Puis on fait une boucle pour écrire les liens vers chacune des pages
   echo 'Page : ';
   for ($i=1 ; $i <= $number_of_pages ; $i++)
   {
   echo '<a href=viewtopic.php?topic_name=' . $topic_name . '&page=' . $i. '>' . $i . '</a> ';
   }
   //////fin de la boucle pour les pages


très simple non ?


La dernière page (ouf ) qui permet de poster un topic ou un message
Aucune explication à fournir je pense
Code:

if(isset($_GET['todo']
{
   $todo = $_GET['todo'];
   ////Si on veu t poster un message
   if($todo == createm)
      {
      if(isset($_GET['topic_name']))
         {
         $topic_name=$_GET['topic_name'];
            if(isset($_POST['message']))
               {
                  if(!isset($_GET['topic_name']))
                  {
                  print "No topic selected to post.";
                  }
                  
                  if(isset($_GET['topic_name']))
                  {
                  $topic_name=htmlentities($_GET['topic_name']);
                  $author=$_SESSION['player'];
                  $name=htmlentities($_GET['topic_name']);
                  $message=htmlentities($_POST['message']);
                  $message=nl2br($_POST['message']);
                  $insert_message="INSERT into forum_tposts(ID , Author , Message , Topic ) VALUES ('' , '$author','$message' , '$name')";
                  $inert_it=mysql_query($insert_message) or die ("problem");
                  print "Message posted. <a href=forum.php?todo=view&topic_name=$topic_name>See message</a>";
                  }
               }
               
               else
               {
                  ?>
                  <b>FORUM</b><br/>
                  Post a message in topic:<br/><br/>
                  <form method="post" action="forum.php?todo=createm&topic_name=<?php echo $_GET['topic_name']; ?>">
                  Message : <br/><textarea name="message" cols="45" rows="10"></textarea><br/><br/>
                  <input type="submit" value="Post">
                  </form>
                  <?
               }
         }
      }   
      
      //otrement
   elseif($todo == createt)      
   {
      if(isset($_POST['messaget']) AND isset($_POST['nameoftopict']))
         {
         $authort=htmlentities($_SESSION['player']);
         $namet=htmlentities($_POST['nameoftopict']);
         $messaget=htmlentities($_POST['messaget']);
         $messaget=nl2br($_POST['messaget']);
         $categoryt=$_POST['category'];

         if($namet=="" OR $messaget=="")
         {
         print "You didn't enter a message or a name.";
         }
            
         else
         {
          $istopic="SELECT * from forum_topics where Name='$namet'";
          $istopic2=mysql_query($istopic) or die("Problem in database. contact me at warrendumortier@hotmail.com");
          $istopic3=mysql_fetch_array($istopic2);
               
            if($istopic3)
            {
            print "There is a topic with the same name try another name.";
            }
               
            else
            {
            $SQL = "INSERT into forum_topics(ID , Author , Name , Message) VALUES ('' , '$authort' , '$namet' , '$messaget')"; mysql_query($SQL) or die("Problem in database. contact me at warrendumortier@hotmail.com");
            print "Topic created. <a href=forum.php?todo=view&topic_name=$namet>See topic.</a>";
            }
         }
         }
            
         if(!isset($_POST['messaget']) AND !isset($_POST['categoryt']))
         {
         print "<b>FORUM</b><br/>";
         print "Create a topic:<br/><br/>";
         ?>
         <form method="post" action="forum.php?todo=createt">
         Name : <br/><input name="nameoftopict"><br/><br/>
         Message : <br/><textarea name="messaget" cols="80"></textarea><br/><br/>
         <input type="submit" value="Create">
         </form>
         <?
         }
   }
      //////////////////
}         

else
{
print "Qu'est ce que tu veut faire mdr";
}


Voila votre forum est fait, j'espère que ce tuto vous a plû.
Si vous rencontrez des bugs ou que le script ne marche pas, ce qui est tout a fait possible vu que jai fe des copier colles de mon forum qui moi en faite est d'une page, contactez moi par mp!
Merci et à bientôt!!!

_________________
MON JEU DE TUNING
http://tunedup.kartzone.info
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://tunedup.kartzone.info
marghost
Modérateur JeuPHP


Nombre de messages: 680
Age: 19
Localisation: QUÉBEC PAWA ||| FRANCE NADA
Date d'inscription: 21/08/2005

MessageSujet: Re: [ Tuto ] Forum fait maison   Dim 2 Juil - 20:03

encore une fois un tutorial copier coller sans aucune explication

PS un tuto sans explication est pas un tuto c'est un script :twisted:

_________________
MARK DEVENU MARGHOST

Hé les glands voici mon status sur Kopete(Windaube+msn=MORT )
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.marghost.com
Script_Css
Habitué


Nombre de messages: 102
Age: 16
Date d'inscription: 26/06/2006

MessageSujet: Re: [ Tuto ] Forum fait maison   Ven 7 Juil - 14:27

Cool merci j'aurai pas beusion de faire mon forum
Je rigole !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Saturos
Nouveau


Nombre de messages: 2
Age: 25
Date d'inscription: 07/07/2006

MessageSujet: Re: [ Tuto ] Forum fait maison   Ven 7 Juil - 20:13

toute facon si on fait copier-coller ont arrive a rien ( de bien ) :mrgreen:
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
xeys
Habitué


Nombre de messages: 152
Age: 20
Localisation: Vendée
Date d'inscription: 05/11/2005

MessageSujet: Re: [ Tuto ] Forum fait maison   Lun 10 Juil - 14:54

Le codage c'est pas tout a fait sa encore ...
Code:
 - if(isset($_GET['todo']
{

 - if($todo == createm)

 - elseif($todo == createt)

on passe de
Citation:
//otrement
à
Citation:
print "No topic selected to post.";

... et sa continue

Donc c'est pas de toi mais tu rajoute des truc par si par la pour le faire croire c'est nul !

_________________
*******************
****** \\\|///********
****** ( Ö Ö )*******
------o000-(_)-000o-----

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Sangodams
Bavard


Nombre de messages: 15
Age: 19
Date d'inscription: 26/07/2006

MessageSujet: Re: [ Tuto ] Forum fait maison   Mer 26 Juil - 16:32

Saturos a écrit:
toute facon si on fait copier-coller ont arrive a rien ( de bien ) :mrgreen:


+1

Rien ne peut nous prouver que ce script n'est pas de lui, mais quand on fait un tutorial, on le commente, c'est primordial. Aussi, il est très important de mettre des noms de variables significatifs, un code qui est très simple aujourd'hui peut vous paraître incompréhensible quelques mois plus tard.

_________________
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Sulygan
Nouveau


Nombre de messages: 7
Date d'inscription: 09/02/2006

MessageSujet: Re: [ Tuto ] Forum fait maison   Mer 2 Aoû - 15:51

alors la j'ai rien griller du tuto
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Korfuri
Grand habitué


Nombre de messages: 201
Date d'inscription: 20/11/2005

MessageSujet: Re: [ Tuto ] Forum fait maison   Mer 2 Aoû - 18:27

Code:

$message=htmlentities($_POST['message']);
$message=nl2br($_POST['message']);


Le htmlentities() n'est pas pris en compte.

Code:
elseif($todo == createt)


T'as oublié de déclarer la constante createt. Ca va faire un warning...

Code:

$topic_name=htmlentities($_GET['topic_name']);
$author=$_SESSION['player'];
$name=htmlentities($_GET['topic_name']);


Tu as des doublons.

Code:

$istopic="SELECT * from forum_topics where Name='$namet'";
$istopic2=mysql_query($istopic) or die("Problem in database. contact me at warrendumortier@hotmail.com");
$istopic3=mysql_fetch_array($istopic2);


Pourquoi pas tout simplement :

Code:

$istopic=mysql_query('SELECT Name FROM forum_topics WHERE Name=\''.$namet.'\' LIMIT 1');
if (mysql_num_rows($istopic) == 1) { ... }


Code:
$query_author_message=mysql_query("SELECT * FROM forum_topics WHERE Name='$topic_name'");
  $query_post=mysql_query("SELECT * FROM forum_posts WHERE Topic='$topic_name' ORDER by ID asc LIMIT  $first_to_view,5");


Pourquoi tu fais pas tes WHERE sur l'id ?

(etc... Moi je pense qu'il l'a codé lui-même, faut en vouloir pour pomper un code dans cet état )

_________________
Editeur PHP : Kwrite
Serveur maison : Linux SuSE OSS 10.0 + Apache 2.0.54 + PHP 4.4.0 + MySQL 5.1.6-alpha + phpMyAdmin 2.6.4-pl3
Hébergement : free.fr
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
-=[ X-ZoD ]=-
Modérateur Programmation


Nombre de messages: 795
Date d'inscription: 12/06/2005

MessageSujet: Re: [ Tuto ] Forum fait maison   Jeu 10 Aoû - 22:13

lol
moi aussi j'ai fai un forum maison...

mai quand je me suis dit que j'allais vou fair eun tuto j'avais la flemme

ptee qu ej eovule ferai .. en gros il tient sur 3 ou 4 pages pour un forum avec fontion de bases [categorie,affichage, lecture, repondre et poster]

mai il est vrai que la ça m'a l'air d'un copier collé

_________________
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
 

[ Tuto ] Forum fait maison

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Créer son jeu en PHP :: PROGRAMMATION :: Tutoriaux - scripts-
Poster un nouveau sujet   Répondre au sujet