Programmation PHP
: Accueil du site
Vous êtes ici : Créer un chat en PHP avec une base de données
Nous allons voir dans cet article comment réaliser facilement et rapidement un chat simple à l'aide des technologies PHP et MySQL (base de données).
Tout d'abord nous allons commencer par réaliser la structure du chat en xHtml avec le code suivant :
<h1>Les messages</h1>
<p>Aucun message</p>
<h3>Poster un message</h3>
<form action="#" method="post">
<p>Pseudo : <input type="text" name="pseudo" /></p>
<p>Message : <input type="text" name="message" size="50" /></p>
<p><input type="submit" name="submit" value="Envoyer le message" />
</form>
On a désormais la structure de notre chat.
Petite précision :
<form action="#" method="post">
L'attribut action à comme argument #, cela permet simplement de dire à la page d'envoyer le contenu du formulaire sur la même page.
Voyons maintenant du coté PHP, nous allons commencer par créer notre table dans la base de données :
CREATE TABLE `chat` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`pseudo` VARCHAR( 250 ) NOT NULL ,
`message` VARCHAR( 250 ) NOT NULL
) ENGINE = innodb;
Maintenant nous allons gérer l'ajout de message et l'affiche des données, voyons les réflexions qu'il va nous être nécessaire d'effectuer pour cela :
Voyons maintenant à quoi ressemble notre page PHP :
<h1>Les messages</h1>
<?php
if(isset($_POST['submit'])){ #On contrôle si le bouton "submit" a été déclanché
#On va mettre htmlentities pour éviter que le visiteur entre du code (sécurité)
$pseudo = htmlentities($_POST['pseudo'], ENT_QUOTES); #On récupère le contenu du composant "pseudo"
$message = htmlentities($_POST['message'], ENT_QUOTES); #On récupère le contenu du composant "message"
if(empty($pseudo) or empty($message)){ #Si Pseudo ou Message sont vides
echo '<p>Données invalides</p>';
}else{
$connexion = mysql_connect('localhost','root','pass'); #On se connecte à la base de données
mysql_select_db('basededonnee', $connexion); #On sélectionne une base de données
$rechercheMessage = mysql_query('SELECT id FROM chat'); #On séléctionne toutes les entrées de la table chat
$comptageMessage = mysql_num_rows($rechercheMessage); #On compte le nombre d'entrée
if($comptageMessage >= 10){ #On contrôle s'il n'y a pas déjà 10 messages ou plus
mysql_query("DELETE FROM chat ORDER BY id ASC LIMIT 0,1"); #On supprime le message le plus ancien
}
mysql_query("INSERT INTO chat VALUES('','$pseudo','$message') "); #On insere le nouveau message
echo '<p>Message ajouté</p>';
}
}
$rechercheMessages = mysql_query('SELECT pseudo,message FROM chat'); #On séléctionne les messages
$comptageMessages = mysql_num_rows($rechercheMessages); #On compte les messages
if($comptageMessages == 0){ #S'il n'y a aucun message, on affiche le résultat
echo '<p>Aucun message</p>';
}else{ #Sinon on affiche les données
while($reponseMessages = mysql_fetch_assoc($rechercheMessages)){
echo '<p><strong>Posté par '.$reponseMessages['pseudo'].' :</strong><br />'.$reponseMessages['message'].'</p>';
}
}
?>
<h3>Poster un message</h3>
<form action="#" method="post">
<p>Pseudo : <input type="text" name="pseudo" /></p>
<p>Message : <input type="text" name="message" size="50" /></p>
<p><input type="submit" name="submit" value="Envoyer le message" />
</form>
Notre chat PHP est maintenant fonctionnel !
Toutes les étapes ont été indiquées sous forme de commentaire (# suivit du commentaire)
Notez que le système qui contrôle les données d'ajout de message a été placé volontairement avant l'affichage afin que l'affichage prend en compte le dernier message ajouté.