Empecher les message double

Fermé
anthony - 25 févr. 2009 à 14:49
Tonyjim Messages postés 68 Date d'inscription lundi 16 février 2009 Statut Membre Dernière intervention 19 juillet 2009 - 8 mars 2009 à 07:58
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

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 68 Date d'inscription lundi 16 février 2009 Statut Membre Dernière intervention 19 juillet 2009 1
8 mars 2009 à 07:58
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 108 Date d'inscription mardi 24 février 2009 Statut Membre Dernière intervention 11 février 2015 7
25 févr. 2009 à 15:07
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 108 Date d'inscription mardi 24 février 2009 Statut Membre Dernière intervention 11 février 2015 7
25 févr. 2009 à 15:32
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
oui
0
anthony > anthony
25 févr. 2009 à 15:46
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 108 Date d'inscription mardi 24 février 2009 Statut Membre Dernière intervention 11 février 2015 7
25 févr. 2009 à 15:47
je vais essaie de te faire un petit codage, je ne peux rien te promettre des suite mais j'y bosse
0
ok merci
0
platypus69 Messages postés 108 Date d'inscription mardi 24 février 2009 Statut Membre Dernière intervention 11 février 2015 7
26 févr. 2009 à 08:55
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 108 Date d'inscription mardi 24 février 2009 Statut Membre Dernière intervention 11 février 2015 7
27 févr. 2009 à 13:40
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
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