TUTORIEL PHP 
PHP : construire un wiki
La dernière application à la mode est aussi l'un des plus formidables outils de documentation collaborative. Le JDN Développeurs vous en présente sa version. (29/04/2004)

1. Intro | 2. L'objet Wiki
3. Les dernières fonctions

Les dernières fonctions
chargePage() est des plus simples :

function chargePage($titre)
  {
  $sql = "SELECT * FROM $this->tabl WHERE titre='$titre' ORDER BY date DESC LIMIT 1;";
  $rsql = mysql_query($sql);

  if (mysql_num_rows($rsql) == 0)
    {
    $this->date = -1;
    }
  else
    {
    $this->titre = mysql_result($rsql, 0, "titre");
    $this->contenu = mysql_result($rsql, 0, "contenu");
    $this->auteur = mysql_result($rsql, 0, "auteur");
    $this->date = mysql_result($rsql, 0, "date");
    }
  }

Idem pour sauvePage() :

function sauvePage()
  {
  $this->titre = $_REQUEST['titre'];
  $this->contenu = $_REQUEST['contenu'];
  $this->auteur = $_REQUEST['auteur'];
  $this->date = $_REQUEST['date'];

  $sql = "INSERT INTO $this->tabl (titre, contenu, auteur, date) ";
  $sql .= "VALUES ('$this->titre', '$this->contenu', '$this->auteur', '$this->date');";


  if (mysql_query($sql))
    {
    $this->affichePage($this->titre);
    }
  else
    {
    $this->date = -1;
    }
  }

Ces deux fonctions ne diffèrent pas trop de ce que l'on trouve dans notre article "Utiliser l'Objet de PHP pour gérer sa base de données".

wiki2html()
est autrement plus intéressante, car il s'agit là du coeur du système Wiki. Celui repose sur le fait que l'on peut mettre en page un contenu sans connaître HTML, et créer des pages simplement en créant un lien vers elles... Notre fonction récupère donc le contenu de la page affichée, et convertit certaines combinaison de caractères en code HTML. Pour notre exemple :
"http:gkjnfkgjn.com" donne "<a href="gkjnfkgjn.com">gkjnfkgjn.com</a>"
"MonWikiTralala" donne "<a href="?titre=MonWikiTralala&mode=lecture">MonWikiTralala</a>"
"lapon@lapin.net" donne "<a href="mailto:lapon@lapin.net">lapin@lapin.net</a>"
Deux retours à la ligne donnent "<br />"
Trois tirets donnent "<hr />"

function wiki2html($chaine)
  {
  $chaine = preg_replace(
    array(
      "/(http:[^ \n]*)/",
      "/(([A-Z][a-z]+){2,})/",
      "/ ?([^@\s]+@([-a-z0-9]+\.)+[a-z]{2,}) ?/",
      "/\n+/",
      "/-{3}/",
      ),
    array(
      '<a href="\1">\1</a>',
      '<a href="?titre=\1&mode=lecture">\1</a>',
      '<a href="mailto:\1">\1</a>',
      '<br/>',
      '<hr/>',
      ),
    $chaine);
  return $chaine;
  }


  Forum

Réagissez dans les forums de JDN Développeurs

Nous aurions aussi pu passer par la bibliothèque wiki2html de Olivier Meunier... Nous vous invitons à essayer de l'intégrer à la place de notre propre fonction, et même à ajouter les autres fonctionnalités wiki que nous n'avons pas abordées...

Voici notre code source.

1. Intro | 2. L'objet Wiki
3. Les dernières fonctions
 
Xavier Borderie, JDN Développeurs
 
Accueil | Haut de page