JeuWeb - Crée ton jeu par navigateur
Problème avec mon chat - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Problème avec mon chat (/showthread.php?tid=3587)



Problème avec mon chat - vulcain - 24-01-2009

Bonjour à tous,

Je rencontre un petit problème ou je devrais je rencontre plusieurs problèmes.$
Voilà ce que je souhaite faire :

- Lorsqu'on arrive sur mon chat, cela affiche une page comme ça (pas besoin de taper son pseudo ) :

[Image: image-6-a6ae62.png]

Or, lorsqu'on arrive sur mon chat voilà ce qu'il y a :

[Image: image-7-a6ae6d.png]

Ensuite, je souhaite faire une réponse mais à chaque post, pas besoin de recréer un post à chaque fois pour répondre à un sujet...Donc lorsqu'on va par exemple dans "Nouveau sujet" avec mon cadre pour écrire un sujet avec les smileys...

Et pour terminer, je souhaite que seuls les modos et les admins peuvent supprimer les messages, mais le problème c'est que cela ne veut pas s'afficher.

Voici mon code :

Code PHP :
<?php 
include 'includes/connecter/haut.php'
?>
<?php
session_start
();
$date = date('d/m/Y');
$heure = date('H:i:s');
if (!isset(
$_SESSION['login'])) {
exit();
}
// on inclut le fichier fonction.php
require('includes/fonctions.php');

// Ont déclare la variable
if (isset($_POST['pseudo']) AND isset($_POST['message'])) // Si les variables existent
{
$_POST['pseudo'] = trim($_POST['pseudo']); // Si l'utilisateur a mis des espaces, on les supprime
$_POST['message'] = trim ($_POST['message']); // Comme ça, ton système est plus performant...


if (empty($_POST['message']) OR empty($_POST['pseudo'])) // Si c'est vide !
{
echo
'Votre message ou votre pseudo est vide';
}
else
{
// D'abord, on se connecte à MySQL
$base = mysql_connect ('sql.olympe-network.com', 'conquestworld', 'MON CODE');
mysql_select_db ('conquestworld', $base);
$message = mysql_query("SELECT message FROM minichat ORDER BY id DESC 0,0");

// 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 verifie si le message est égale
if ($message == $donnees['message'])
{
echo
' Vous ne pouvez pas poster 2 messages identiques';
exit();
}

else
{
// Ensuite on enregistre le message
mysql_query("INSERT INTO minichat VALUES('', '".$pseudo."', '".$message."','".$date."','".$heure."')");
echo
' Le message a été envoyer.';
}
// On se déconnecte de MySQL
mysql_close();
}
}
?>


<p>
<form action="t-chat.php" method="post">
<center><table border=1>
<th width=450px>

<br><br>

br />
<div style="margin:10px;">
<div style="float:left;"><a href="/chat.php?page=-10"> <b>Page précédente</b> </a></div>
<div style="text-align:center;float:left;width:350px;">
//]]>

</script>
<a href="#javascript:void 0" onclick="refer()">Nouveau</a>
<ul id="mon_id" style="display:none">
<table><tr><td>
<form action="chat2.php?action=poster" method="post">
Titre:</td><td><input type="text" name="titre" class='champsTexte'></td></tr>
<tr><td>
Message:</td><td><textarea name="message" style="font-family:Arial,Verdana,Helvetica; font-size:12px; color:#000000; border-width : 2px; background-color: #cbbd81;" cols="30" rows="4"></textarea></td></tr>
</table>
<input type="submit" value="Envoyer" class='submit2' name="option"> <input type="submit" value="options" class='submit2' name="option">
</form>
</ul><a href="chat.php">Actualiser</a>

<br /><br />
</div>
<a href='chat.php?p=2'>Page précédente</a><br /><br /><script type="text/javascript">
//<![CDATA[
</div>
<div style="float:right;"><a href="/chat.php?page=10"> <b>Page suivante</b> </a></div>


<?php
// D'abord, on se connecte à MySQL
$base = mysql_connect ('sql.olympe-network.com', 'conquestworld', 'MON CODE');
mysql_select_db ('conquestworld', $base);

// Vérification pour modo
$sql = 'SELECT `rang` FROM `membres` WHERE `login` = "' . mysql_escape_string($_SESSION['login']). '"';
$res = mysql_query($sql)or die(mysql_error()); // Requête SQL
$data = mysql_fetch_assoc($res);
$rang = $data['rang'];


echo
'Pseudo : <br><input type="text" readonly="true" name="pseudo" value="'.htmlentities(trim($_SESSION['login'])).'" style="';
if (
$rang == "administrateur") {
echo
'color:#ff0000';
} else if (
$rang == "moderateur") {
echo
'color:#009114';
} else if (
$rang == "membre") {
echo
'color:#000000';
}
echo
';" /><br><br>';

echo
'Message : <br><input type="text" name="message" id="message" style="';
if (
$rang == "administrateur") {
echo
'color:#ff0000';
} else if (
$rang == "moderateur") {
echo
'color:#009114';
}
else if (
$rang == "membre") {
echo
'color:#000000';
}
echo
';"/><br/><br/><input type="submit" value="Envoyer" />';

// On se déconnecte de MySQL
mysql_close();
?>
</font>
</form>
</th>
<th>
<a href="popup.html" target="_blanc" onclick="window.open(this.href,'popup','height=500 , width=500 , location=no ,scrollbars=1');return false;">Codes smileys</a>


</p>
</th>
</tr>

<tr>
<th width=450px>


<?php
// Maintenant on doit récupérer les 10 dernières entrées de la table
// On se connecte d'abord à MySQL :
mysql_connect ('sql.olympe-network.com', 'conquestworld', 'MON CODE');
mysql_select_db ('conquestworld', $base);

// 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");


// Puis on fait une boucle pour afficher tous les résultats :
while ($donnees = mysql_fetch_array($reponse) )
{
$message = emoticones(stripslashes($donnees['message']));
?>

<p><strong><u>
<?php
// Vérification pour modo
$sql = 'SELECT `rang` FROM `membres` WHERE `login` = "'. mysql_escape_string($_SESSION['login']).'"';
$res = mysql_query($sql)or die(mysql_error()); // Requête SQL
$data = mysql_fetch_assoc($res);
$rang = $data['rang'];

echo
'';
if (
$rang == "administrateur") {
echo
'<balise style="color:#ff0000;">'. $donnees['pseudo'] .'</balise>';
} else if (
$rang == "moderateur") {
echo
'<balise style="color:#009114;">'. $donnees['pseudo'] .'</balise>';
}
else if (
$rang == "membre") {
echo
'<balise style="color:#000000;">'. $donnees['pseudo'] .'</balise>';
}
echo
'';
?>
</strong></u> a dit :<br><br />
<?php
// Vérification pour modo
$sql = 'SELECT `rang` FROM `membres` WHERE `login` = "'. mysql_escape_string($_SESSION['login']).'"';
$res = mysql_query($sql)or die(mysql_error()); // Requête SQL
$data = mysql_fetch_assoc($res);
$rang = $data['rang'];

echo
'';
if (
$rang == "administrateur") {
echo
'<balise style="color:#ff0000;">'. $message .'</balise>';
} else if (
$rang == "moderateur") {
echo
'<balise style="color:#009114;">'. $message .'</balise>';
}
else if (
$rang == "membre") {
echo
'<balise style="color:#000000;">'. $message .'</balise>';
}
echo
'';
?><br />
______________<br>
le <?php echo $donnees['date']; ?> à <?php echo $donnees['heure']; ?>.<br />
__________________________________________</p>



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

// On se déconnecte de MySQL
mysql_close();
?>
</th>
</tr>
</table>
<br><br><br><br><br>
<?php
include 'includes/connecter/bas.php'
?>


Je vous en remercie d'avance !

Bonne journée, bon week-end


RE: Problème avec mon chat - Anthor - 24-01-2009

Les deux soirées sur msn n'ont pas suffit à vous expliquer le code ?


RE: Problème avec mon chat - vulcain - 24-01-2009

Bonjour Anthor,

Je ne suis au courant de rien, il ne m'a rien expliqué, rien dit...


RE: Problème avec mon chat - Kassak - 24-01-2009

Et alors ? tu nous racontes ce que ça fait (ou pas), mais alors quoi?


RE: Problème avec mon chat - vulcain - 24-01-2009

Bonsoir,

Je souhaite donc faire comme sur ma première capture d'écran (mais là, je devrais m'en sortir niveau html). Ensuite pour les modos et les admins ils peuvent supprimer un message mais là, je ne trouve pas comment faire j'ai essayé divers codes et rien. De plus, j'aimerai qu'on puisse créer des posts donc à l'aide de "Nouveau sujet" et là cela apparait, mais aussi un bouton réponse qui servira à répondre aux sujets des posts crées. Pour chaque post crée une option répondre est là. Voici mon code (j'ai essayé de modifier mais rien à savoir) :

Code PHP :
<?php 
include 'includes/connecter/haut.php'
?>
<?php
session_start
();
$date = date('d/m/Y');
$heure = date('H:i:s');
if (!isset(
$_SESSION['login'])) {
exit();
}
// on inclut le fichier fonction.php
require('includes/fonctions.php');

// Ont déclare la variable
if (isset($_POST['pseudo']) AND isset($_POST['message'])) // Si les variables existent
{
$_POST['pseudo'] = trim($_POST['pseudo']); // Si l'utilisateur a mis des espaces, on les supprime
$_POST['message'] = trim ($_POST['message']); // Comme ça, ton système est plus performant...


if (empty($_POST['message']) OR empty($_POST['pseudo'])) // Si c'est vide !
{
echo
'Votre message ou votre pseudo est vide';
}
else
{
// D'abord, on se connecte à MySQL
$base = mysql_connect ('sql.olympe-network.com', 'conquestworld', 'MON CODE');
mysql_select_db ('conquestworld', $base);
$message = mysql_query("SELECT message FROM minichat ORDER BY id DESC 0,0");

// 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 verifie si le message est égale
if ($message == $donnees['message'])
{
echo
' Vous ne pouvez pas poster 2 messages identiques';
exit();
}

else
{
// Ensuite on enregistre le message
mysql_query("INSERT INTO minichat VALUES('', '".$pseudo."', '".$message."','".$date."','".$heure."')");
echo
' Le message a été envoyer.';
}
// On se déconnecte de MySQL
mysql_close();
}
}
?>


<p>
<form action="t-chat.php" method="post">
<center><table border=1>
<th width=450px>

<br><br>


<?php

// On met dans une variable le nombre de messages qu'on veut par page
$nombreDeMessagesParPage = 50;
// On récupère le nombre total de messages
$retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livreor');
$donnees = mysql_fetch_array($retour);$totalDesMessages = $donnees['nb_messages'];
// On calcule le nombre de pages à créer
$nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);
// Puis on fait une boucle pour écrire les liens vers chacune des pages
echo 'Page : ';
for (
$i = 1 ; $i <= $nombreDePages ; $i++)
{
echo
'<a href="chat.php?page=' . $i . '">' . $i . '</a> ';
}
?>


<?php

// Vérification pour modo
$sql = 'SELECT `rang` FROM `membres` WHERE `login` = "' . mysql_escape_string($_SESSION['login']). '"';
$res = mysql_query($sql)or die(mysql_error()); // Requête SQL
$data = mysql_fetch_assoc($res);
$rang = $data['rang'];


echo
'Pseudo : <br><input type="text" readonly="true" name="pseudo" value="'.htmlentities(trim($_SESSION['login'])).'" style="';
if (
$rang == "administrateur") {
echo
'color:#ff0000';
} else if (
$rang == "moderateur") {
echo
'color:#009114';
} else if (
$rang == "membre") {
echo
'color:#000000';
}
echo
';" /><br><br>';

echo
'Message : <br><input type="text" name="message" id="message" style="';
if (
$rang == "administrateur") {
echo
'color:#ff0000';
} else if (
$rang == "moderateur") {
echo
'color:#009114';
}
else if (
$rang == "membre") {
echo
'color:#000000';
}
echo
';"/><br/><br/><input type="submit" value="Envoyer" />';

// On se déconnecte de MySQL
mysql_close();
?>
</font>
</form>
</th>
<th>
<a href="popup.html" target="_blanc" onclick="window.open(this.href,'popup','height=500 , width=500 , location=no ,scrollbars=1');return false;">Codes smileys</a>


</p>
</th>
</tr>

<tr>
<th width=450px>


<?php
// Maintenant on doit récupérer les 10 dernières entrées de la table
// 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");


// Puis on fait une boucle pour afficher tous les résultats :
while ($donnees = mysql_fetch_array($reponse) )
{
$message = emoticones(stripslashes($donnees['message']));
?>

<p><strong><u>
<?php
// Vérification pour modo
$sql = 'SELECT `rang` FROM `membres` WHERE `login` = "'. mysql_escape_string($_SESSION['login']).'"';
$res = mysql_query($sql)or die(mysql_error()); // Requête SQL
$data = mysql_fetch_assoc($res);
$rang = $data['rang'];

echo
'';
if (
$rang == "administrateur") {
echo
'<balise style="color:#ff0000;">'. $donnees['pseudo'] .'</balise>';
} else if (
$rang == "moderateur") {
echo
'<balise style="color:#009114;">'. $donnees['pseudo'] .'</balise>';
}
else if (
$rang == "membre") {
echo
'<balise style="color:#000000;">'. $donnees['pseudo'] .'</balise>';
}
echo
'';
?>
</strong></u> a dit :<br><br />
<?php
// Vérification pour modo
$sql = 'SELECT `rang` FROM `membres` WHERE `login` = "'. mysql_escape_string($_SESSION['login']).'"';
$res = mysql_query($sql)or die(mysql_error()); // Requête SQL
$data = mysql_fetch_assoc($res);
$rang = $data['rang'];

echo
'';
if (
$rang == "administrateur") {
echo
'<balise style="color:#ff0000;">'. $message .'</balise>';
} else if (
$rang == "moderateur") {
echo
'<balise style="color:#009114;">'. $message .'</balise>';
}
else if (
$rang == "membre") {
echo
'<balise style="color:#000000;">'. $message .'</balise>';
}
echo
'';
?><br />
______________<br>
le <?php echo $donnees['date']; ?> à <?php echo $donnees['heure']; ?>.<br />
__________________________________________</p>



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

// On se déconnecte de MySQL
mysql_close();
?>
</th>
</tr>
</table>
<br><br><br><br><br>
<?php
include 'includes/connecter/bas.php'
?>

Et voici ce que j'obtient :

[Image: image-1-a70995.png]

Je vous souhaite une bonne soirée


RE: Problème avec mon chat - Harparine - 24-01-2009

Vérifie tes accès à la base de données. C'est sans doute ce qui bug. Tu développes en local ?


RE: Problème avec mon chat - Anthor - 25-01-2009

Avec des mysql_close toutes les 5 lignes ça ne risque pas de fonctionner...


RE: Problème avec mon chat - vulcain - 25-01-2009

Bonjour,

Je suis chez olympe-network Wink

Anthor : J'ai supprimé mes mysql_close il n'en reste plus qu'un maintenant. J'ai également modifier un peu mon script, il ressemble à ça maintenant :

Code PHP :
<?php 
include 'includes/connecter/haut.php'
?>
<?php
session_start
();
$date = date('d/m/Y');
$heure = date('H:i:s');
if (!isset(
$_SESSION['login'])) {
exit();
}
// on inclut le fichier fonction.php
require('includes/fonctions.php');

// Ont déclare la variable
if (isset($_POST['pseudo']) AND isset($_POST['message'])) // Si les variables existent
{
$_POST['pseudo'] = trim($_POST['pseudo']); // Si l'utilisateur a mis des espaces, on les supprime
$_POST['message'] = trim ($_POST['message']); // Comme ça, ton système est plus performant...


if (empty($_POST['message']) OR empty($_POST['pseudo'])) // Si c'est vide !
{
echo
'Votre message ou votre pseudo est vide';
}
else
{
// D'abord, on se connecte à MySQL
$base = mysql_connect ('sql.olympe-network.com', 'conquestworld', 'MON CODE');
mysql_select_db ('conquestworld', $base);
$message = mysql_query("SELECT message FROM minichat ORDER BY id DESC 0,0");

// 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 verifie si le message est égale
if ($message == $donnees['message'])
{
echo
' Vous ne pouvez pas poster 2 messages identiques';
exit();
}

else
{
// Ensuite on enregistre le message
mysql_query("INSERT INTO minichat VALUES('', '".$pseudo."', '".$message."','".$date."','".$heure."')");
echo
' Le message a été envoyer.';
}
}
}
?>


<p>
<form action="t-chat.php" method="post">
<center><table border=1>
<th width=450px>

<br><br>


<?php

// Vérification pour modo
$sql = 'SELECT `rang` FROM `membres` WHERE `login` = "' . mysql_escape_string($_SESSION['login']). '"';
$res = mysql_query($sql)or die(mysql_error()); // Requête SQL
$data = mysql_fetch_assoc($res);
$rang = $data['rang'];


echo
'Pseudo : <br><input type="text" readonly="true" name="pseudo" value="'.htmlentities(trim($_SESSION['login'])).'" style="';
if (
$rang == "administrateur") {
echo
'color:#ff0000';
} else if (
$rang == "moderateur") {
echo
'color:#009114';
} else if (
$rang == "membre") {
echo
'color:#000000';
}
echo
';" /><br><br>';

echo
'Message : <br><input type="text" name="message" id="message" style="';
if (
$rang == "administrateur") {
echo
'color:#ff0000';
} else if (
$rang == "moderateur") {
echo
'color:#009114';
}
else if (
$rang == "membre") {
echo
'color:#000000';
}
echo
';"/><br/><br/><input type="submit" value="Envoyer" />';


?>
</font>
</form>
</th>
<th>
<a href="popup.html" target="_blanc" onclick="window.open(this.href,'popup','height=500 , width=500 , location=no ,scrollbars=1');return false;">Codes smileys</a>


</p>
</th>
</tr>

<tr>
<th width=450px>


<?php
// Maintenant on doit récupérer les 10 dernières entrées de la table
// 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");


// Puis on fait une boucle pour afficher tous les résultats :
while ($donnees = mysql_fetch_array($reponse) )
{
$message = emoticones(stripslashes($donnees['message']));
?>

<p><strong><u>
<?php
// Vérification pour modo
$sql = 'SELECT `rang` FROM `membres` WHERE `login` = "'. mysql_escape_string($_SESSION['login']).'"';
$res = mysql_query($sql)or die(mysql_error()); // Requête SQL
$data = mysql_fetch_assoc($res);
$rang = $data['rang'];

echo
'';
if (
$rang == "administrateur") {
echo
'<balise style="color:#ff0000;">'. $donnees['pseudo'] .'</balise>';
} else if (
$rang == "moderateur") {
echo
'<balise style="color:#009114;">'. $donnees['pseudo'] .'</balise>';
}
else if (
$rang == "membre") {
echo
'<balise style="color:#000000;">'. $donnees['pseudo'] .'</balise>';
}
echo
'';
?>
</strong></u> a dit :<br><br />
<?php
// Vérification pour modo
$sql = 'SELECT `rang` FROM `membres` WHERE `login` = "'. mysql_escape_string($_SESSION['login']).'"';
$res = mysql_query($sql)or die(mysql_error()); // Requête SQL
$data = mysql_fetch_assoc($res);
$rang = $data['rang'];

echo
'';
if (
$rang == "administrateur") {
echo
'<balise style="color:#ff0000;">'. $message .'</balise>';
} else if (
$rang == "moderateur") {
echo
'<balise style="color:#009114;">'. $message .'</balise>';
}
else if (
$rang == "membre") {
echo
'<balise style="color:#000000;">'. $message .'</balise>';
}
echo
'';
?><br />
______________<br>
le <?php echo $donnees['date']; ?> à <?php echo $donnees['heure']; ?>.<br />
__________________________________________</p>



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

// On se déconnecte de MySQL
mysql_close();
?>
</th>
</tr>
</table>
<br><br><br><br><br>
<?php
include 'includes/connecter/bas.php'
?>

Et voilà ce que j'obtient :

[Image: image-2-a74b18.png]


RE: Problème avec mon chat - Anthor - 25-01-2009

t'as une paire d'yeux ? bon tu met un cerveau au milieu, tu vois la ptite masse rose, bon autour t'y met une paire de bras auquel tu greffes un clavier et ensuite tu lis ton code et tu utilise la masse rose pour voir où se situe le problème...
Vers la ligne.... 25 !


RE: Problème avec mon chat - Allwise - 25-01-2009

Code PHP :
<?php 
// D'abord, on se connecte à MySQL
$base = mysql_connect ('sql.olympe-network.com', 'conquestworld', 'MON CODE');
mysql_select_db ('conquestworld', $base);

sql.olympe-network.com est l'adresse de phpmyadmin. Il y a fort à parier pour que tu doives mettre localhost à la place.

Je te conseille de lire les erreurs, de les localiser dans ton script et de les comprendre.
Quand tu as des erreurs mysql, utilise la fonction mysql_error(), qui te donne davantage d'informations sur la nature de l'erreur.

Citation :Ensuite pour les modos et les admins ils peuvent supprimer un message mais là, je ne trouve pas comment faire j'ai essayé divers codes et rien.
Avant de tester des codes, as-tu réfléchi à la logique de ton script ? Si oui, laquelle est-elle ?