Empecher les message double

anthony -  
Tonyjim Messages postés 71 Statut Membre -
Bonjour,
pouvez vous me dire comment empécher les message double dans ce code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <title>Mini-chat</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    </head>
    <style type="text/css">
    form
    {
    text-align:center;
    }
    </style>
    <body>
 
 
<?php
if (isset($_POST['pseudo']) AND isset($_POST['message'])) // Si les variables existent
{
    if ($_POST['pseudo'] != NULL AND $_POST['message'] != NULL) // Si on a quelque chose à enregistrer
    {
        // D'abord, on se connecte à MySQL
        mysql_connect("localhost", "sdz", "mot_de_passe");
        mysql_select_db("coursphp");
 
        // On utilise les fonctions PHP mysql_real_escape_string et htmlspecialchars pour la sécurité
        $message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
        $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
 
        // Ensuite on enregistre le message
        mysql_query("INSERT INTO minichat VALUES('', '$pseudo', '$message')");
 
        // On se déconnecte de MySQL
        mysql_close();
    }
}
 
 
// Que l'on ait enregistré des données ou pas...
// On affiche le formulaire puis les 10 derniers messages
 
// Tout d'abord le formulaire :
?>
 
 
 
<form action="minichat.php" method="post">
 
<p>
Pseudo : <input type="text" name="pseudo" /><br />
Message :  <input type="text" name="message" /><br />
 
<input type="submit" value="Envoyer" />
</p>
 
</form>
 
 
 
<?php
 
// Maintenant on doit récupérer les 10 dernières entrées de la table
// On se connecte d'abord à MySQL :
mysql_connect("localhost", "sdz", "mot_de_passe");
mysql_select_db("coursphp");
 
// On utilise la requête suivante pour récupérer les 10 derniers messages :
$reponse = mysql_query("SELECT * FROM minichat ORDER BY ID DESC LIMIT 0,10");
 
// On se déconnecte de MySQL
mysql_close();
 
// Puis on fait une boucle pour afficher tous les résultats :
while ($donnees = mysql_fetch_array($reponse) )
{
?>
 
<p><strong><?php echo $donnees['pseudo']; ?></strong> : <?php echo $donnees['message']; ?></p>
 
 
 
<?php
}
// Fin de la boucle, le script est terminé !
?>
 
 
    </body>
</html>
A voir également:

8 réponses

anthony
 
ben on faite ce code sert juste a afficher les message poster par des personne mais moi je veut modifier ce code pour que les message ne peuvent pas se poster 2 fois le même c'est tout j'ai essayer de le modifier un peu mais sans succes donc voila je c'est pas comment faire
1
Tonyjim Messages postés 71 Statut Membre 1
 
bonjour à tous ;)

en faite anthony, tu ne veux pas de double a la suite c'est ca ou tu ne veux pas de double dans toute la base de donnée?

parce que si tu ne fais pas de double dans la base de donnée, comme c'est un mini chat, le samedi le gars il viens et il dit bonjour et le dimanche il sais plus ! il doit dire salut et le lundi, ........ :-))

donc a mon avis, fais comme ca ......

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <title>Mini-chat</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    </head>
    <style type="text/css">
    form
    {
    text-align:center;
    }
    </style>
    <body>
 
 
<?php
if (isset($_POST['pseudo']) AND isset($_POST['message'])) // Si les variables existent
{
    if ($_POST['pseudo'] != NULL AND $_POST['message'] != NULL) // Si on a quelque chose à enregistrer
    {
        // D'abord, on se connecte à MySQL
        mysql_connect("localhost", "sdz", "mot_de_passe");
mysql_select_db("coursphp");
 
        // On utilise les fonctions PHP mysql_real_escape_string et htmlspecialchars pour la sécurité
        $message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
        $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
		
		/*********** On Vérifie si le message précedent est identique *********************/
		
		// On utilise la requête suivante pour selectionner le message précedant
		$sql = mysql_query("SELECT * FROM minichat WHERE pseudo='$pseudo' ORDER BY ID DESC;");
		$tableau_sql = mysql_fetch_array($sql);
		
		// si le message précendent du memes utilisateur est identique au nouveau
		if ($tableau_sql['message'] == $message)
		{
			echo "<script>alert(\"Vous avez déja écrit ce message\")</script>";
		}
		else
		{
			echo "<script>alert(\"Votre message a bien été envoyer\")</script>";
		
			// Ensuite on enregistre le message
			mysql_query("INSERT INTO minichat VALUES('', '$pseudo', '$message')");
		}
 
        
 
        // On se déconnecte de MySQL
        mysql_close();
    }
}
 
 
// Que l'on ait enregistré des données ou pas...
// On affiche le formulaire puis les 10 derniers messages
 
// Tout d'abord le formulaire :
?>
 
 
 
<form action="minichat.php" method="post">
 
<p>
Pseudo : <input type="text" name="pseudo" value="<?php echo $_POST['pseudo']; ?>" /><br />
Message :  <input type="text" name="message" /><br />
 
<input type="submit" value="Envoyer" />
</p>
 
</form>
 
 
 
<?php
 
// Maintenant on doit récupérer les 10 dernières entrées de la table
// On se connecte d'abord à MySQL :
mysql_connect("localhost", "sdz", "mot_de_passe");
mysql_select_db("coursphp");
 
// On utilise la requête suivante pour récupérer les 10 derniers messages :
$reponse = mysql_query("SELECT * FROM minichat ORDER BY ID DESC LIMIT 0,10");
 
// On se déconnecte de MySQL
mysql_close();
 
// Puis on fait une boucle pour afficher tous les résultats :
while ($donnees = mysql_fetch_array($reponse) )
{
?>
 
<p><strong><?php echo $donnees['pseudo']; ?></strong> : <?php echo $donnees['message']; ?></p>
 
 
 
<?php
}
// Fin de la boucle, le script est terminé !
?>
 
 
    </body>
</html>


Je t'ai ajoute aussi ceci :

Pseudo : <input type="text" name="pseudo" value="<?php echo $_POST['pseudo']; ?>" /><br />


se qui permet que ton utilisateur ne doive pas retaper son pseudo a chaque fois .....

Bonne journée ;)
1
platypus69 Messages postés 122 Statut Membre 7
 
j'ai pas compris grand chose a ton explications. Pourrais tu reformuler pour que l'on comprenne et souligné les trucs correspondant dans ton code.
Merci
0
platypus69 Messages postés 122 Statut Membre 7
 
donc si j'ai bien compris tu veux un programme qui empéche un utilisateur de mettre 2 fois le meme message dans ta BDD.
0
anthony
 
oui
0
anthony > anthony
 
ah oui et aussi je voudrais un script qui empeche les message double a partir de ce code car la je suis entrun d'apprendre le php donc j'ai du réaliser ce TP a partir de ce code
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
platypus69 Messages postés 122 Statut Membre 7
 
je vais essaie de te faire un petit codage, je ne peux rien te promettre des suite mais j'y bosse
0
anthony
 
ok merci
0
platypus69 Messages postés 122 Statut Membre 7
 
Je n'ai paseu le temps de tester le programme mais tu me diras si il marche. Je suis actuellement au boulot et je n'ai pas de logiciel pour tester mais code.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Mini-chat</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<style type="text/css">
form
{
text-align:center;
}
</style>
<body>

<?php
if (isset($_POST['pseudo']) AND isset($_POST['message'])) // Si les variables existent
{
if ($_POST['pseudo'] != NULL AND $_POST['message'] != NULL) // Si on a quelque chose à enregistrer
{
// D'abord, on se connecte à MySQL
mysql_connect("localhost", "sdz", "mot_de_passe");
mysql_select_db("coursphp");

// On utilise les fonctions PHP mysql_real_escape_string et htmlspecialchars pour la sécurité
$message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));

************ ON VA FAIRE UNE REQUETE POUR VOIR SI LE TEXTE EXISTE DEJA ********

// Une requête SQL avec un "order by" sur un champ permettant une comparaison nette pour détecter le doublon.
$select="SELECT message FROM coursphp";
$resultat=mysql_query($select);

if ($resultat==$message)
{echo "<script>alert(\"Vous avez déja écrit ce message\")</script>";
}
else
{echo "<script>alert(\"Votre message a bien été envoyer\")</script>";
header('Location: ');
}
?>

// location: tu peux rediriger l'utilisateur sur la page désiré

// Ensuite on enregistre le message
mysql_query("INSERT INTO minichat VALUES('', '$pseudo', '$message')");

// On se déconnecte de MySQL
mysql_close();
}
}

// Que l'on ait enregistré des données ou pas...
// On affiche le formulaire puis les 10 derniers messages

// Tout d'abord le formulaire :
?>

<form action="minichat.php" method="post">

<p>
Pseudo : <input type="text" name="pseudo" /><br />
Message : <input type="text" name="message" /><br />

<input type="submit" value="Envoyer" />
</p>

</form>

<?php

// Maintenant on doit récupérer les 10 dernières entrées de la table
// On se connecte d'abord à MySQL :
mysql_connect("localhost", "sdz", "mot_de_passe");
mysql_select_db("coursphp");

// On utilise la requête suivante pour récupérer les 10 derniers messages :
$reponse = mysql_query("SELECT * FROM minichat ORDER BY ID DESC LIMIT 0,10");

// On se déconnecte de MySQL
mysql_close();

// Puis on fait une boucle pour afficher tous les résultats :
while ($donnees = mysql_fetch_array($reponse) )
{
?>

<p><strong><?php echo $donnees['pseudo']; ?></strong> : <?php echo $donnees['message']; ?></p>

<?php
}
// Fin de la boucle, le script est terminé !
?>

</body>
</html>
0
platypus69 Messages postés 122 Statut Membre 7
 
j'ai procédé a quelque teste le script n'es pas t'ou a fait au point. je pense que d'ici le week-end c'est réglé
0
anthony
 
désoler mais il y a une erreure que dans ton code enfun quand j'essaye le code il me dise qu'il y a une erreure a la fin du code dans la ligne ou il mette
</body>
</html>
mais pourtant je comprend pas pourquoi il mette cette erreure
0