une shoutbox !

Petit nouveau ! | 9 Messages

30 juin 2005, 18:09

Salut voila mon code :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Document sans nom</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>



<?php
if ($_POST['pseudo'] != NULL && $_POST['message'] != NULL) // si les case pseudo et message sont remplis 
{
mysql_connect("**********", "***********", "**********"); // on se connect a la BDD
mysql_select_db("***********"); // on la selectionne 
$message = htmlentities ($_POST['message']); // on definie les variables
$pseudo = htmlentities ($_POST['pseudo']);
mysql_query("INSERT INTO minichat VALUES('', '$pseudo', '$message')"); // on insert le message et le pseudo dans la BDD
mysql_close (); 
}
?>
<table width="760" border="1" align="center" cellpadding="0" cellspacing="0" bordercolor="#333333">
  <tr>
    <td height="203"><p>Pseudo : </p>
      <form name="form1" method="post" action="minichat.php">
        <p>
          <input name="pseudo" type="text" id="pseudo" value="<?php echo $_POST['pseudo'] ?>">
</p>
        <p>Message : </p>
        <p>
          <input name="message" type="text" id="message"> 
        </p>
        <p>
          <input type="submit" name="Submit2" value="Envoyer">    
        </p>
      </form>          
      <p>
        <?php
// on affiche les 10 derniers messages meme si ont a pas posté ! 
mysql_connect("**********", "**********", "**********"); 
mysql_select_db("*************");
$reponse = mysql_query ("SELECT * FROM minichat ORDER BY ID DESC LIMIT 0,10"); // on affiche les 10 derniers messages 
mysql_close();

 while ($donnees = mysql_fetch_array($reponse) ) // on fait une boucle pour parcourir les entréé une à une 
{
?>
</p>
<p><strong><? echo $donnees['pseudo']; ?></strong> : <? echo $donnees['message']; ?>
</p>

<?
}
?>
 </td>
  </tr>
</table>
        
</body>
</html>
alors voila mes 2 questions :

comment faire en sorte de supprimer les vieux messages ? c'est a dire dans mon code in affiche que les 10 derniers messages et moi je voudrais supprimer tout les messages qui ne sont pas afficher ( jespere que vous m'avez compris )

sinon ma 2eme question : je voudrais avant d'enregistrer un message verifié si le dernier enregistré n'est pas le même ! en effet si on fait F5 ca va nous demander si on veut reafficher la page et si on dit OUi alors le message va être posté en double :(

Merci de votre aide !

Edit : j'ai 3 champs dans ma table !
ID : auto increment en INT
Message : en varchat 255
Pseudo : varchat 255
Modifié en dernier par VeX0^ le 01 juil. 2005, 17:41, modifié 2 fois.
- Webmaster - Webdesigner - Futur codeur PHP -

Petit nouveau ! | 9 Messages

01 juil. 2005, 16:03

UP !!!!!
- Webmaster - Webdesigner - Futur codeur PHP -

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

01 juil. 2005, 16:16

un truc qui serait sympa quand tu postes du code c'est de l'expliquer en quelques lignes, du genre "je fais une application comme ça, voici la partie qui s'occupe de, ici je fais ça, ça et ça"

ça évites de devoir tout lire pour comprendre... :?
c'est peut-être pour ça que personne t'as répondu

pour supprimer les autres messages tu as plusieurs solutions
- faire un delete avec un LIMIT 10, très grand entier
- récupérer la date du dernier affiché (le 10 plus récent) et supprimer ce qui est au dessus

pour vérifier si le message a pas déjà été enregistré :
tu fais une requête COUNT(*) WHERE message ="$message";

si ça renvoie plus de 0,c 'est que le message est déjà là

Petit nouveau ! | 9 Messages

01 juil. 2005, 17:31

voila j'ai rajouté des commentaires :)

sinon tu peux m'ecrire le code ouckileou stp car je voie vraiment pas ... :(

et oui on est dans la rubrique debutant :lol:
- Webmaster - Webdesigner - Futur codeur PHP -

ViPHP
pjl
ViPHP | 2119 Messages

01 juil. 2005, 17:38

La rubrique débutant, c'est pour apprendre,
la rubrique emploi, c'est pour avoir un code tout fait.

ouckileou t'a donné des pistes.
Je ne crois pas que tu as vraiment essayé de faire quelque chose en 3/4 d'heure.

Petit nouveau ! | 9 Messages

01 juil. 2005, 17:59

bon alors j'ai essayé ce code :

Code : Tout sélectionner

mysql_query ("DELETE FROM minichat ORDER BY ID LIMIT 10,1111111111");
et ca ne marche pas ! ca ne supprime pas les messages ... enfin j'aimerais un peux d'aide :)

Pour verifie si le message n'a pas deja ete enregistré je ne sais pas du tout et meme avec ton Idée je ne voie pas ...

SVP une fois que j'aurais compris ca ca me debloqué car je veux continuer a apprendre le php mais je bloque la dessus et ca m'enerve :'(

merci d'avance
- Webmaster - Webdesigner - Futur codeur PHP -

Mammouth du PHP | 19672 Messages

01 juil. 2005, 19:44

Tu n'as pas suivi les suggestions de ouckileou...

Voici un autre truc: si tu ne veux garder que les dix derniers, tu dois pouvoir identifier les dix dernieres clés primaires, donc dans un premier temps, tu fais un select pour récupérer la dixième en partant de la denière:

Code : Tout sélectionner

SELECT id from ta_table ORDER BY id DESC limit 10
Ensuite tu isoles le dixième
$id = mysql_result($requete, 9)
À partir de là, tu as l'identifiant à partir duquel il ne faut plus supprimer:
$sql = "DELETE FROM ta_table WHERE id < ". $id .";"
Là, tu devrais tout supprimer sauf les dix derniers
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

01 juil. 2005, 21:07

Tu n'as pas suivi les suggestions de ouckileou...

Voici un autre truc: si tu ne veux garder que les dix derniers, tu dois pouvoir identifier les dix dernieres clés primaires, donc dans un premier temps, tu fais un select pour récupérer la dixième en partant de la denière:

Code : Tout sélectionner

SELECT id from ta_table ORDER BY id DESC limit 10
Ensuite tu isoles le dixième
$id = mysql_result($requete, 9)
À partir de là, tu as l'identifiant à partir duquel il ne faut plus supprimer:
$sql = "DELETE FROM ta_table WHERE id < ". $id .";"
Là, tu devrais tout supprimer sauf les dix derniers
Je crois avoir compris mais que vaut $requete ?

Merci d'avance :)

Mammouth du PHP | 19672 Messages

01 juil. 2005, 22:33

dans le cas de figure présenté, $requête = mysql_query($sql) et $sql est la requête elle-même.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: