Aller au menu - Aller au contenu
> Le Site du Zéro > Les forums > Site Web > PHP > TP de m@teo > Lecture du sujet

TP de m@teo

Le minichat

Pour accéder à cette section
Connectez-vous !
connexion_rpx
Page 1  2  Suivante
Auteur Message
1 visiteur sur ce sujet (1 Anonyme)
Page 1  2  Suivante
Hors ligne Renesis-3 # Posté le 27/06/2008 à 15:24:12
Quand on veut, on peut.
Avatar

Bonjour,

j'apprends actuellement le PHP, et je suis arrivé au TP de mateo du minichat

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?php

mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("test"); // Sélection de la base mateo21
?>
<!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" >
   <head>
       <title>Mini chat</title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	   <meta http-equiv="pragma" content="no-cache" />
   </head>
   
   <body>
<form action="test.php" method="post">
<p><label>Votre pseudo : </ label><input type="text" name="pseudo" /></p>
<p><label>Votre message : </label><input type="text" name="message"/></p>
<input type="submit" value="Envoyer" />
</form>

<?php

mysql_query("INSERT INTO minichat VALUES ('', '$_POST[pseudo]', '$_POST[message]')");

$reponse = mysql_query("SELECT * FROM minichat DESC") ;



while ($donnee_minichat = mysql_fetch_array($reponse))
   {
   
   echo '<p><span> '.$donnee_minichat[pseudo].' </span> '.$donnee_minichat[message].'</p>';
   
   }
   
?>
   </body>
<?php
mysql_close(); // Déconnexion de MySQL
?>


Au début tout marchait à peu près bien, et quand j'ai voulu rajouter un DESC à la ligne 25 j'ai eu le droit à cette erreur :

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\tests\test.php on line 29

Pourquoi ? Et comment corriger ?
 
Hors ligne vermillon # Posté le 27/06/2008 à 15:28:01
Avatar

études : UTC

Cette réponse a aidé l'auteur du sujet Cette réponse a aidé l'auteur du sujet
Sais-tu ce que veut dire DESC?
Ce mot se trouve à la fin d'une clause ORDER BY, or ta requête n'en contient pas.
Allez, file relire le chapitre sur la lecture des données, zou
Hors ligne Tyra3l # Posté le 27/06/2008 à 15:28:24
nyu ?

études : SUPINFO Rhône-Alpes à Lyon

Cette réponse a aidé l'auteur du sujet Cette réponse a aidé l'auteur du sujet
Code : PHP
1
$reponse = mysql_query("SELECT * FROM minichat DESC") ;


Ce code est incomplet, un DESC fonctionne toujours avec un ORDER BY ...
Là tu lui dis simplement "Sélectionne moi tout dans la table minichat décoissant" ca ne veut rien dire même en francais ^^

La bonne requête serait :
Code : PHP
1
$reponse = mysql_query("SELECT * FROM minichat ORDER BY ID DESC");

si tu veux y classer par ID...
Hors ligne Renesis-3 # Posté le 27/06/2008 à 15:38:47
Quand on veut, on peut.
Avatar

Ah ok, c'était pas préciser dans le chapitre. Je pensais qu'il fallait juste respecter l'ordre.

Merci. :)

EDIT : J'ai rajouter un LIMIT 0, 10 après, mais il ne veut m'afficher que 7 messages. Comment ça se fait ?
Édité le 27/06/2008 à 15:47:09 par Renesis-3
 
Hors ligne vermillon # Posté le 27/06/2008 à 15:55:46
Avatar

études : UTC

As-tu plus de 7 messages dans ta base?
Hors ligne Renesis-3 # Posté le 27/06/2008 à 16:01:44
Quand on veut, on peut.
Avatar

Oui, j'ai trouvé, en fait des messages blanc était enregistrer, mais ne s'afficher pas vu qu'ils étaient vide.

Merci quand même pour l'aide. :)

EDIT : Par contre, pour les étapes suivantes, je sèche, notamment pour effacer les anciens messages après un certain nombre.

J'ai trouvé ce code dans un autre topic similaire, mais je ne le comprends pas (à partir de la 5ème ligne) :

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<?php                
                $retour = mysql_query("SELECT COUNT(*) AS nbre_entrees FROM minichat");
		$donnees_de_nombre = mysql_fetch_array($retour);                

                $retour_id = mysql_query("SELECT id FROM minichat LIMIT 0, 1");
		$donnees_id = mysql_fetch_array($retour_id); 
		$nombre_id = $donnees_id['id'];   
		   if ($donnees_de_nombre['nbre_entrees'] > 200)
		   {
		    mysql_query("DELETE FROM minichat WHERE ID= '$nombre_id' ");
		   }
?>


Est-ce que quelqu'un pourrait m'expliquer ?
Édité le 27/06/2008 à 16:53:18 par Renesis-3
 
Hors ligne Ô-le-zéro ! # Posté le 27/06/2008 à 19:02:27
Bzzvroumz ....
Avatar

A partir de la 5ème ligne :

5/6 : On récupère l'id du dernier message posté donc là où l'id est le plus faible (id + 1 à chaque nouveau message).

7 : On enregistre ce nombre dans '$nombre_id'.

8/9/10 : Si il ya plus de 200 messages dans la table, à chaque fois que l'on rajoute un message, on supprime l'ancien (car on a l'id du plus vieux).

C'est tout ? ;)

Mon site : Quesond
--> site d'annonces gratuites, simple, rapide, efficace.
Si vous pouvez me dire ce que vous en pensez ce serait sympa, voire même y poster des annonces si vous en avez
;)
Merci
forum correspondant sur le site du zéro
 
Hors ligne Renesis-3 # Posté le 27/06/2008 à 19:25:58
Quand on veut, on peut.
Avatar

Euh, à la ligne 5, le LIMIT 0, 1 ne veux pas dire qu'on prend le premier id de minichat ?
 
Hors ligne Ô-le-zéro ! # Posté le 27/06/2008 à 19:33:52
Bzzvroumz ....
Avatar

Le premier donc le plus faible !
Or dès qu'on rajoute un message, le champs "id" s'incrémente !

Le premier message aurait "1" pour id.
Le dernier message posté aurait "158" pour id (par exemple)

Donc en prenant la première entrée de la table (qui est classée par ordre croissant en fonction de l'id), on prend le message le plus ancien.

OK ?

Mon site : Quesond
--> site d'annonces gratuites, simple, rapide, efficace.
Si vous pouvez me dire ce que vous en pensez ce serait sympa, voire même y poster des annonces si vous en avez
;)
Merci
forum correspondant sur le site du zéro
 
Hors ligne Renesis-3 # Posté le 27/06/2008 à 19:42:09
Quand on veut, on peut.
Avatar

Citation : Ô-le-zéro !
Le premier donc le plus faible !
Or dès qu'on rajoute un message, le champs "id" s'incrémente !

Le premier message aurait "1" pour id.
Le dernier message posté aurait "158" pour id (par exemple)

Donc en prenant la première entrée de la table (qui est classée par ordre croissant en fonction de l'id), on prend le message le plus ancien.

OK ?

Alors en fait je me rend comte que j'avais bien compris la ligne, mais j'ai pas compris ce qu'on en fait, et à quoi il sert.
Parce que en fait la on dit : Si y'a plus de 200 messages on efface le plus ancien, et seulement celui là.

Ah ok, en fait on a besoin d'en effacer qu'un car y'en aura qu'un seul à effacer à chaque message en trop, c'est ça ?

(Je réfléchis su mon post maintenant :-° )
 
Hors ligne kev9478 # Posté le 27/06/2008 à 19:44:08

Sinon une petite info quand tu as ca comme erreur:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource...

C'est generalement lorsqu'il y a une erreur dans ta requete.
Amicalement Kev9478
Hors ligne Ô-le-zéro ! # Posté le 28/06/2008 à 12:03:52
Bzzvroumz ....
Avatar

Renesis-3 => oui c'est ça car on poste qu'un seul message à la fois !

Sujet résolu ? ;)

Mon site : Quesond
--> site d'annonces gratuites, simple, rapide, efficace.
Si vous pouvez me dire ce que vous en pensez ce serait sympa, voire même y poster des annonces si vous en avez
;)
Merci
forum correspondant sur le site du zéro
 
Hors ligne Renesis-3 # Posté le 28/06/2008 à 14:14:38
Quand on veut, on peut.
Avatar

Ba en fait, au lieu de faire un copier coller j'ai essayer de le reproduire, et je re-reçu une erreur que je ne comprends pas >_< : Parse error: syntax error, unexpected '{', expecting '(' in C:\wamp\www\tests\test.php on line 39



Voilà à quoi ressemble mon code maintenant :

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<!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" >
   <head>
       <title>Mini chat</title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	   <meta http-equiv="pragma" content="no-cache" />
   </head>
   
   <body>
<form action="test.php" method="post">
<p><label>Votre pseudo : </ label>
<?php 

// Si l'utilisateur a déjà rentrer son pseudo on le préenregistre
if ($_POST['pseudo'] != NULL)
   {
   echo '<input type="text" name="pseudo" value="'.$_POST['pseudo'].'" /></p>';
   }
   
else
   {
   echo '<input type="text" name="pseudo" /></p>';
   }
?>
<p><label>Votre message : </label><input type="text" name="message"/></p>
<input type="submit" value="Envoyer" />
</form>

<?php

mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("test"); // Sélection de la base

// Si le message existe, on le rentre dans la table
if (isset($_POST['pseudo']) AND isset($_POST['message']))
   {
    if
	   {
      if ($_POST['pseudo'] != NULL AND $_POST['message'] != NULL)
         {
         mysql_query("INSERT INTO minichat VALUES ('', '$_POST[pseudo]', '$_POST[message]')");
	     }
   }

//-------
// Si il y a plus de 20 messages, on surpime l'ancien en trop
$retour = mysql_query("SELECT COUNT(*) AS $nbr_entree FROM minichat");
$donnee = mysql_fetch_array($retour);
$nbr_entree = $donnee[$nbr_entree];

$retour_id = mysql-query("SELECT id FROM minichat LIMIT 0,1");
$donnee_id = mysql_feth_array($retour_id);
$premier_id = $donne_id['id'];

if ($nbr_entree >= 20)
   {
   mysql_query("DELETE FROM minichat WHERE id='premier_id'");
   }


// -------
   
$reponse = mysql_query("SELECT * FROM minichat ORDER BY id DESC LIMIT 0, 10") ;


while ($donnee_minichat = mysql_fetch_array($reponse))
   {
   
   echo '<p><em>Message n°'.$donnee_minichat[id].'</em> <strong> '.$donnee_minichat[pseudo].' </strong> '.$donnee_minichat[message].'</p>';
   
   }
   
?>
   </body>
<?php

$retour = msql_query("SELECT COUNT(*) AS $nbr_dentree FROM minichat");  // On compte le nombre d'entree
$donnee = mysql_fetch_array($retour);                                   // On renvoie dans donnee['$nbr_dentree']






mysql_close(); // Déconnexion de MySQL
?>
 
Hors ligne Blackis # Posté le 28/06/2008 à 14:24:35
Civilizaton is Over
Avatar

Un if blanc ligne 37 ;)

Image utilisateur

Je suis brutal de nature, ne m'en veuillez pas :-°
Et.. tu le ferais pour des Golden Grahams ?

Premier tutoriel : Interagir avec un serveur FTP !

Citation : Ben Venusos..
(19:06:36) Venusos: Sachant que le cul est ce qu'il-y a de plus rentable sur le net :noel:
Citation : Anthony
(21:38:43) Anthony: et après ben venir avec une gueule de cramé et les yeux rouges moi ça me gêne pas xD
Citation : Tweek
Anthony: Par contre
Anthony: depuis quelques jours
Anthony: mon frère se comporte comme un handicapé mental tétraplégique avec son torticolis
Anthony: j'te jure ça craint
Venusos: :noel:
Anthony: On dirait Tweek :noel:
Citation : Womanizer
(18:22:21) Anthony: putain
(18:22:32) Anthony: cette VenetiaPrincess elle fait quand même de bonnes vidéos
(18:23:26) Anthony: bon oui, cette phrase sorti de son contexte pourrait te faire croire à quelque chose de pervers
(18:23:44) Anthony: mais VenetiaPrincess c'est celle qui a fait la vidéo "Womanizer Parodie"
(18:23:53) Anthony: quand je regarde l'originale et la parodie c'est vachement bien fait
(18:24:14) Yann / big_nay: ouais j'avais vu ça ^^
(18:24:22) Anthony: nan mais toi je te fais pas confiance
Citation : Max aka un anonyme sur le SdZ
(17:02:10) Maximilien: tsé tant que ca marche qe le code soit propre ou pas on sen fou
Citation : Confirmation
(18:45:48) Anthony: "(17:02:10) Maximilien: tsé tant que ca marche qe le code soit propre ou pas on sen fou"
(18:46:00) -Dr3cK-: il a raison
Citation
(21:33:06) Venusos: shit j'ai des touches qui marchent plus
(21:33:10) Venusos: cradingues
(21:33:30) Anthony: stop manger des chips sur le clavier
(21:33:45) Venusos: pas un brin
(21:33:51) Anthony: stop gerber
(21:33:54) Venusos: non plus
(21:34:04) Anthony: stop fap
(21:34:19) Venusos: :noel:
 
Hors ligne Renesis-3 # Posté le 28/06/2008 à 14:29:13
Quand on veut, on peut.
Avatar

Ah, l'étourderie. :p Je devais plus être très frais hier soir.

J'ai encore d'autres erreurs, mais je vais essayer de les corriger moi-même avant de demander de l'aide.

Donc je laisse le topic en non résolu pour l'instant.


EDIT : Maintenant j'ai :

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\tests\test.php on line 46

Fatal error: Call to undefined function query() in C:\wamp\www\tests\test.php on line 49

Pourtant, la 46 ligne est la deuxième de ce code suivant :

Code : PHP
1
2
3
$retour = mysql_query("SELECT COUNT(*) AS $nbr_entree FROM minichat");
$donnee = mysql_fetch_array($retour);
$nbr_entree = $donnee[$nbr_entree];


Pourquoi y'a une erreur ? o_O
Édité le 28/06/2008 à 14:38:08 par Renesis-3
 
Hors ligne Blackis # Posté le 28/06/2008 à 14:34:33
Civilizaton is Over
Avatar

Si y'en a d'autre, prévient nous, mais le mieux serait que tu trouves tes propres erreurs, histoire de s'améliorer ;)

(moi j'essai d'en faire le moins possible, c'est pas gagné :-° )

Image utilisateur

Je suis brutal de nature, ne m'en veuillez pas :-°
Et.. tu le ferais pour des Golden Grahams ?

Premier tutoriel : Interagir avec un serveur FTP !

Citation : Ben Venusos..
(19:06:36) Venusos: Sachant que le cul est ce qu'il-y a de plus rentable sur le net :noel:
Citation : Anthony
(21:38:43) Anthony: et après ben venir avec une gueule de cramé et les yeux rouges moi ça me gêne pas xD
Citation : Tweek
Anthony: Par contre
Anthony: depuis quelques jours
Anthony: mon frère se comporte comme un handicapé mental tétraplégique avec son torticolis
Anthony: j'te jure ça craint
Venusos: :noel:
Anthony: On dirait Tweek :noel:
Citation : Womanizer
(18:22:21) Anthony: putain
(18:22:32) Anthony: cette VenetiaPrincess elle fait quand même de bonnes vidéos
(18:23:26) Anthony: bon oui, cette phrase sorti de son contexte pourrait te faire croire à quelque chose de pervers
(18:23:44) Anthony: mais VenetiaPrincess c'est celle qui a fait la vidéo "Womanizer Parodie"
(18:23:53) Anthony: quand je regarde l'originale et la parodie c'est vachement bien fait
(18:24:14) Yann / big_nay: ouais j'avais vu ça ^^
(18:24:22) Anthony: nan mais toi je te fais pas confiance
Citation : Max aka un anonyme sur le SdZ
(17:02:10) Maximilien: tsé tant que ca marche qe le code soit propre ou pas on sen fou
Citation : Confirmation
(18:45:48) Anthony: "(17:02:10) Maximilien: tsé tant que ca marche qe le code soit propre ou pas on sen fou"
(18:46:00) -Dr3cK-: il a raison
Citation
(21:33:06) Venusos: shit j'ai des touches qui marchent plus
(21:33:10) Venusos: cradingues
(21:33:30) Anthony: stop manger des chips sur le clavier
(21:33:45) Venusos: pas un brin
(21:33:51) Anthony: stop gerber
(21:33:54) Venusos: non plus
(21:34:04) Anthony: stop fap
(21:34:19) Venusos: :noel:
 
Hors ligne Renesis-3 # Posté le 28/06/2008 à 14:38:58
Quand on veut, on peut.
Avatar

Ba y'en a une juste au-dessus (j'ai édité :p )
 
Hors ligne Blackis # Posté le 28/06/2008 à 14:40:18
Civilizaton is Over
Avatar

mechant :lol:

Le sujet est résolu, donc ?

Image utilisateur

Je suis brutal de nature, ne m'en veuillez pas :-°
Et.. tu le ferais pour des Golden Grahams ?

Premier tutoriel : Interagir avec un serveur FTP !

Citation : Ben Venusos..
(19:06:36) Venusos: Sachant que le cul est ce qu'il-y a de plus rentable sur le net :noel:
Citation : Anthony
(21:38:43) Anthony: et après ben venir avec une gueule de cramé et les yeux rouges moi ça me gêne pas xD
Citation : Tweek
Anthony: Par contre
Anthony: depuis quelques jours
Anthony: mon frère se comporte comme un handicapé mental tétraplégique avec son torticolis
Anthony: j'te jure ça craint
Venusos: :noel:
Anthony: On dirait Tweek :noel:
Citation : Womanizer
(18:22:21) Anthony: putain
(18:22:32) Anthony: cette VenetiaPrincess elle fait quand même de bonnes vidéos
(18:23:26) Anthony: bon oui, cette phrase sorti de son contexte pourrait te faire croire à quelque chose de pervers
(18:23:44) Anthony: mais VenetiaPrincess c'est celle qui a fait la vidéo "Womanizer Parodie"
(18:23:53) Anthony: quand je regarde l'originale et la parodie c'est vachement bien fait
(18:24:14) Yann / big_nay: ouais j'avais vu ça ^^
(18:24:22) Anthony: nan mais toi je te fais pas confiance
Citation : Max aka un anonyme sur le SdZ
(17:02:10) Maximilien: tsé tant que ca marche qe le code soit propre ou pas on sen fou
Citation : Confirmation
(18:45:48) Anthony: "(17:02:10) Maximilien: tsé tant que ca marche qe le code soit propre ou pas on sen fou"
(18:46:00) -Dr3cK-: il a raison
Citation
(21:33:06) Venusos: shit j'ai des touches qui marchent plus
(21:33:10) Venusos: cradingues
(21:33:30) Anthony: stop manger des chips sur le clavier
(21:33:45) Venusos: pas un brin
(21:33:51) Anthony: stop gerber
(21:33:54) Venusos: non plus
(21:34:04) Anthony: stop fap
(21:34:19) Venusos: :noel:
 
Hors ligne Renesis-3 # Posté le 28/06/2008 à 14:44:25
Quand on veut, on peut.
Avatar

Non pas encore, je viens d'avoir deux nouvelles erreurs que j'ai expliqué dans le post que j'ai édité.
Mais c'est pas encore résolu.
 
Hors ligne granarc # Posté le 28/06/2008 à 14:46:02
I am mad...
Avatar

Ville : Martigues
Pays : France métropolitaine

Citation : Renesis-3

Code : PHP
1
$retour = mysql_query("SELECT COUNT(*) AS $nbr_entree FROM minichat");

Pourquoi y'a une erreur ? o_O

Tu la sors d'où ta variable nbr_entree ? :D

Que le grand cric me croque si tu as lu la FAQ et fait une recherche :-°
Image utilisateur
Ce que pourrait engendrer une invasion de kikoolol en France... :waw:
 
Hors ligne Ô-le-zéro ! # Posté le 28/06/2008 à 14:58:48
Bzzvroumz ....
Avatar

Cette réponse a aidé l'auteur du sujet Cette réponse a aidé l'auteur du sujet
Retire le "$".

Mon site : Quesond
--> site d'annonces gratuites, simple, rapide, efficace.
Si vous pouvez me dire ce que vous en pensez ce serait sympa, voire même y poster des annonces si vous en avez
;)
Merci
forum correspondant sur le site du zéro
 
Hors ligne Renesis-3 # Posté le 28/06/2008 à 15:00:39
Quand on veut, on peut.
Avatar

Ba de nul part, je la créé. Mais dans l'extrait de code d'un autre tuto, ça marchait apparemment.


EDIT : Merci, c'était Ô-le-zéro.

Pour la deuxième erreur, la ligne 49 est la 5ème dans ce code :

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
<?php
$retour = mysql_query("SELECT COUNT(*) AS nbr_entree FROM minichat");
$donnee = mysql_fetch_array($retour);
$nbr_entree = $donnee[$nbr_entree];

$retour_id = mysql-query("SELECT id FROM minichat LIMIT 0,1");
$donnee_id = mysql_feth_array($retour_id);
$premier_id = $donne_id['id'];

if ($nbr_entree >= 20)
   {
   mysql_query("DELETE FROM minichat WHERE id='premier_id'");
   }
?>


Est en fait c'est parce qe j'aais mis un tiret au lieu d'un underscore. ^^ Mais juste après l'avoir corriger j'ai "Fatal error: Call to undefined function mysql_feth_array() in C:\wamp\www\tests\test.php on line 50", la ligne suivante en fait.

Encore une fois, pourquoi ?


EDIT² : Encore une faute de frappe ! :-° Décidément je suis pas doué.

EDIT3 : Ca s'affiche bien, mais j'ai toujours 25 messages au lieu de 20.
Édité le 28/06/2008 à 15:25:41 par Renesis-3
 
Hors ligne Ô-le-zéro ! # Posté le 28/06/2008 à 17:34:00
Bzzvroumz ....
Avatar

Peux-t-on avoir le code correspondant à l'affichage des messages STP :).

Mon site : Quesond
--> site d'annonces gratuites, simple, rapide, efficace.
Si vous pouvez me dire ce que vous en pensez ce serait sympa, voire même y poster des annonces si vous en avez
;)
Merci
forum correspondant sur le site du zéro
 
Hors ligne Renesis-3 # Posté le 28/06/2008 à 17:43:14
Quand on veut, on peut.
Avatar

Oui, c'est à la fin u code

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<!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" >
   <head>
       <title>Mini chat</title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	   <meta http-equiv="pragma" content="no-cache" />
   </head>
   
   <body>
<form action="test.php" method="post">
<p><label>Votre pseudo : </ label>
<?php 

// Si l'utilisateur a déjà rentrer son pseudo on le préenregistre
if ($_POST['pseudo'] != NULL)
   {
   echo '<input type="text" name="pseudo" value="'.$_POST['pseudo'].'" /></p>';
   }
   
else
   {
   echo '<input type="text" name="pseudo" /></p>';
   }
?>
<p><label>Votre message : </label><input type="text" name="message"/></p>
<input type="submit" value="Envoyer" />
</form>

<?php

mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("test"); // Sélection de la base

// Si le message existe, on le rentre dans la table
if (isset($_POST['pseudo']) AND isset($_POST['message']))
   {
      if ($_POST['pseudo'] != NULL AND $_POST['message'] != NULL)
         {
         mysql_query("INSERT INTO minichat VALUES ('', '$_POST[pseudo]', '$_POST[message]')");
	     }
   }

//-------
// Si il y a plus de 20 messages, on surpime l'ancien en trop
$retour = mysql_query("SELECT COUNT(*) AS nbr_entree FROM minichat");
$donnee = mysql_fetch_array($retour);
$nbr_entree = $donnee[$nbr_entree];

$retour_id = mysql_query("SELECT id FROM minichat LIMIT 0,1");
$donnee_id = mysql_fetch_array($retour_id);
$premier_id = $donne_id['id'];

if ($nbr_entree >= 20)
   {
   mysql_query("DELETE FROM minichat WHERE id='premier_id'");
   }


// -------
   
$reponse = mysql_query("SELECT * FROM minichat ORDER BY id DESC") ;


while ($donnee_minichat = mysql_fetch_array($reponse))
   {
   
   echo '<p><em>Message n°'.$donnee_minichat[id].'</em> <strong> '.$donnee_minichat[pseudo].' </strong> '.$donnee_minichat[message].'</p>';
   
   }
   
?>
   </body>
<?php

mysql_close(); // Déconnexion de MySQL
?>
Édité le 28/06/2008 à 17:43:59 par Renesis-3
 
Hors ligne Thulium # Posté le 28/06/2008 à 17:55:23
le p'tit chat !!!
Avatar

Ville : Les ponts-de-cé
Pays : France métropolitaine

mysql-query, ce n' est pas un - mais un _.

GRILLED: tu a corrigé, par contre mets des guillemets (double ou simple) avec tes tableaux : $_POST['pseudo'];

"Keyboard not found, press F1 to resume."
 
Hors ligne Renesis-3 # Posté le 28/06/2008 à 18:09:56
Quand on veut, on peut.
Avatar

Tu veux dire dans les variable du type $variable[variable] ?
 
Hors ligne Thulium # Posté le 28/06/2008 à 18:15:50
le p'tit chat !!!
Avatar

Ville : Les ponts-de-cé
Pays : France métropolitaine

oui, c' est une chaine de caractère que tu passe, pas une constante, donc il faut mettre des guillemets.

"Keyboard not found, press F1 to resume."
 
Hors ligne Renesis-3 # Posté le 28/06/2008 à 18:31:14
Quand on veut, on peut.
Avatar

Pourtant ça marche. Pourquoi changer si ça marche ?
 
Hors ligne Thulium # Posté le 28/06/2008 à 18:55:45
le p'tit chat !!!
Avatar

Ville : Les ponts-de-cé
Pays : France métropolitaine

parce que si tu écrits une constante non-déclarée (essaye echo CONSTANTE) sa renvoie en fait une chaine de caractère. l'exemple ci-dessus ecrira CONSTANTE, si avant tu fait define("CONSTANTE", "salut la compagnie !");, ça ecrira salut la compagnie !

"Keyboard not found, press F1 to resume."
 
Hors ligne Ô-le-zéro ! # Posté le 28/06/2008 à 18:58:58
Bzzvroumz ....
Avatar

Combien as-tu de messages dans ta base de données ?

Parce que tu ne marque pas de prendre seulement 20 messages mais tous.
Dès qu'on rajoute un message tu supprime le plus ancien, pas tous les messages pour qu'il ne t'en reste plus que 20. Nuance ! ^^

Essaie de supprimer 5 messages de ta base de données pour voir ... ;)

Mon site : Quesond
--> site d'annonces gratuites, simple, rapide, efficace.
Si vous pouvez me dire ce que vous en pensez ce serait sympa, voire même y poster des annonces si vous en avez
;)
Merci
forum correspondant sur le site du zéro
 

Retour au forum "PHP" ou à la liste des forums

Pour accéder à cette section
Connectez-vous !
connexion_rpx