[PHP] Metrre de la couleur dans un mini-chat.
Dernière réponse : dans Programmation
Bonjour,
j'ai un petit probléme, j'ai un mini-chat dans mon site et j'ai mis un champ 'rang' dans la table 'membre', puis j'ai voulu faire par exemple si l'administrateur envoi un message alors son pseudo est rouge et si c'est un visiteur, son pseudo est bleu.
Mais le probleme est que dans la table 'mini-chat' la couleur du pseudo s'enregistre dans le champs 'pseudo' :
Donc je trouve sa un peu génant si un jour je voudrai changé la couleur.
Faut-il faire une boucle pour la couleur du pseudo avec if , elseif et else ? ou bien d'essyer de faire 2 requetes dans une seule?
, pour avoir le champ 'rang' dans la variable $donnees.
voici la page mini-chat :
session_start();
require("conf.php3");
if (!isset($_SESSION['pseudo'])) //Le code pour verifier qu'une session existe
{
die('Vous n\'êtes pas autorisez à acceder à cette page.');
}
?>
<html>
<head>
<title>Mini-chat</title>
<link href="../style.css" rel="stylesheet" type="text/css">
</head>
<?php
if (isset($_POST['message']) && !empty($_POST['message']))
{
$sql = connect_sql();
$requete = mysql_query("SELECT * FROM pdf_membre WHERE `pseudo`='$pseudo'");
$result = mysql_fetch_array ($requete);
$rang = $result['rang'];
$pseudo = $result['pseudo'];
if ($rang == 'admin')
{
$pseudo1 = '<font color="#990000">' .$result['pseudo']. '</font>';
}
elseif ($rang =='team')
{
$pseudo1 = '<font color="#33CC33">' .$result['pseudo']. '</font>';
}
else
{
$pseudo1 = $pseudo;
}
$message = htmlentities ($_POST['message']);
$maintenant = time();
mysql_query("INSERT INTO pdf_minichat VALUES('', '$pseudo1', '$message', '$maintenant')");
mysql_close($sql);
}
?>
<a href="pdf_espace_membre.php">Retour à mon compte</a>
<br><br>
<table width="1230" height="183">
<!-- MSTableType="nolayout" -->
<td width="25%" align="left"><div>
<ul>
<li class="chat-admin">Admin </li>
<li class="chat-team">La Team</li>
<li class="chat-membre">Membre du site</li>
</ul>
</div></td>
<td width="50%" align="center">
<form action="pdf_minichat.php" method="post" name="minichat">
<p align="center">Pseudo : <?php echo $_SESSION['pseudo']; ?></p>
<p align="center"> Message : <br />
<?php affiche_bouton('message','minichat'); ?>
<br />
<textarea name="message" cols="35" rows="4"></textarea>
</p>
<p align="center"><input type="submit" value="Envoyer" /></p>
</form></td><td width="25%" align="right"></td>
</table>
<fieldset>
<?php
$sql = connect_sql();
$reponse = mysql_query("SELECT * FROM pdf_minichat ORDER BY ID DESC LIMIT 0,20");
while ($donnees = mysql_fetch_array($reponse))
{
$affiche_message = formcode($donnees['message']);
echo '<p><strong><font color="#0033FF">' .$donnees['pseudo']. '</font></strong> [' .date('H:i-d/m',$donnees['dateEnvoi']). '] : ' .$affiche_message. '</p>';
}
?></fieldset>
</body>
</html>
P.S. : Est ce que je dois utiliser 'LEFT JOIN' dans ma requete pour la 2eme table?
Si oui comment?
merci d'avance
j'ai un petit probléme, j'ai un mini-chat dans mon site et j'ai mis un champ 'rang' dans la table 'membre', puis j'ai voulu faire par exemple si l'administrateur envoi un message alors son pseudo est rouge et si c'est un visiteur, son pseudo est bleu.
Mais le probleme est que dans la table 'mini-chat' la couleur du pseudo s'enregistre dans le champs 'pseudo' :
Citation :
<font color="#FFFF00">danial1991</font>
Donc je trouve sa un peu génant si un jour je voudrai changé la couleur.
Faut-il faire une boucle pour la couleur du pseudo avec if , elseif et else ? ou bien d'essyer de faire 2 requetes dans une seule?
, pour avoir le champ 'rang' dans la variable $donnees. voici la page mini-chat :
Citation :
<?phpsession_start();
require("conf.php3");
if (!isset($_SESSION['pseudo'])) //Le code pour verifier qu'une session existe
{
die('Vous n\'êtes pas autorisez à acceder à cette page.');
}
?>
<html>
<head>
<title>Mini-chat</title>
<link href="../style.css" rel="stylesheet" type="text/css">
</head>
<?php
if (isset($_POST['message']) && !empty($_POST['message']))
{
$sql = connect_sql();
$requete = mysql_query("SELECT * FROM pdf_membre WHERE `pseudo`='$pseudo'");
$result = mysql_fetch_array ($requete);
$rang = $result['rang'];
$pseudo = $result['pseudo'];
if ($rang == 'admin')
{
$pseudo1 = '<font color="#990000">' .$result['pseudo']. '</font>';
}
elseif ($rang =='team')
{
$pseudo1 = '<font color="#33CC33">' .$result['pseudo']. '</font>';
}
else
{
$pseudo1 = $pseudo;
}
$message = htmlentities ($_POST['message']);
$maintenant = time();
mysql_query("INSERT INTO pdf_minichat VALUES('', '$pseudo1', '$message', '$maintenant')");
mysql_close($sql);
}
?>
<a href="pdf_espace_membre.php">Retour à mon compte</a>
<br><br>
<table width="1230" height="183">
<!-- MSTableType="nolayout" -->
<td width="25%" align="left"><div>
<ul>
<li class="chat-admin">Admin </li>
<li class="chat-team">La Team</li>
<li class="chat-membre">Membre du site</li>
</ul>
</div></td>
<td width="50%" align="center">
<form action="pdf_minichat.php" method="post" name="minichat">
<p align="center">Pseudo : <?php echo $_SESSION['pseudo']; ?></p>
<p align="center"> Message : <br />
<?php affiche_bouton('message','minichat'); ?>
<br />
<textarea name="message" cols="35" rows="4"></textarea>
</p>
<p align="center"><input type="submit" value="Envoyer" /></p>
</form></td><td width="25%" align="right"></td>
</table>
<fieldset>
<?php
$sql = connect_sql();
$reponse = mysql_query("SELECT * FROM pdf_minichat ORDER BY ID DESC LIMIT 0,20");
while ($donnees = mysql_fetch_array($reponse))
{
$affiche_message = formcode($donnees['message']);
echo '<p><strong><font color="#0033FF">' .$donnees['pseudo']. '</font></strong> [' .date('H:i-d/m',$donnees['dateEnvoi']). '] : ' .$affiche_message. '</p>';
}
?></fieldset>
</body>
</html>
P.S. : Est ce que je dois utiliser 'LEFT JOIN' dans ma requete pour la 2eme table?
Si oui comment?
merci d'avance
Autres pages sur : php metrre couleur mini chat
Lassé par la pub ? Créez un compte
Voici donc le code :
Tu nas plus qu'a faire correspondre les nom des champs (ne sachant pas exactement quels nom tu leur a donné). Ce code est à ettre là ou tu veux que s'affiche " <font color="'.$couleur.'">'.$pseudo.'</font> "
Si besoins d'aide supplémentiare, je suis là !
<?php
$req_minichat = mysql_query("select pseudo,couleur_rang from pdf_minichat,pdf_couleur where pdf_minichat.rang=pdf_couleur.id_rang");
while($ligne = mysql_fetch_array($req_minichat))
{
$pseudo = $ligne["pseudo"];
$couleur = ligne["couleur_rang"];
echo('<font color="'.$couleur.'">'.$pseudo.'</font>');
}
?>
Tu nas plus qu'a faire correspondre les nom des champs (ne sachant pas exactement quels nom tu leur a donné). Ce code est à ettre là ou tu veux que s'affiche " <font color="'.$couleur.'">'.$pseudo.'</font> "
Si besoins d'aide supplémentiare, je suis là !
voici la composition de ma bdd :
--
CREATE TABLE `pdf_couleur` (
`id_rang` text collate latin1_general_ci NOT NULL,
`couleur_rang` text collate latin1_general_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
--
-- Contenu de la table `pdf_couleur`
--
INSERT INTO `pdf_couleur` VALUES ('1', '#990000');
INSERT INTO `pdf_couleur` VALUES ('2', '#33CC33');
INSERT INTO `pdf_couleur` VALUES ('0', '#0033FF');
-- --------------------------------------------------------
--
-- Structure de la table `pdf_membre`
--
CREATE TABLE `pdf_membre` (
`id` int(11) NOT NULL auto_increment,
`pseudo` varchar(255) collate latin1_general_ci NOT NULL default '',
`pass` varchar(255) collate latin1_general_ci NOT NULL default '',
`mail` varchar(255) collate latin1_general_ci NOT NULL default '',
`confirm` text collate latin1_general_ci NOT NULL,
`nom` text collate latin1_general_ci NOT NULL,
`prenom` text collate latin1_general_ci NOT NULL,
`pays` text collate latin1_general_ci NOT NULL,
`ville` text collate latin1_general_ci NOT NULL,
`jn` varchar(2) collate latin1_general_ci NOT NULL,
`mn` varchar(2) collate latin1_general_ci NOT NULL,
`an` varchar(4) collate latin1_general_ci NOT NULL,
`website` text collate latin1_general_ci NOT NULL,
`dateInscript` int(11) NOT NULL,
`rang` text collate latin1_general_ci NOT NULL,
KEY `id` (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=2 ;
--
-- Contenu de la table `pdf_membre`
--
INSERT INTO `pdf_membre` VALUES (1, 'demo', 'demo', 'demo@demo.com', '', 'demo', 'demo', 'france', 'demo', '01', '01', '2007, '', 1180558450, '1');
-- --------------------------------------------------------
--
-- Structure de la table `pdf_minichat`
--
CREATE TABLE `pdf_minichat` (
`id` int(11) NOT NULL auto_increment,
`pseudo` varchar(250) collate latin1_general_ci NOT NULL default '',
`message` text collate latin1_general_ci NOT NULL,
`dateEnvoi` int(11) NOT NULL,
`rang` text collate latin1_general_ci NOT NULL,
KEY `id` (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=3;
--
-- Contenu de la table `pdf_minichat`
--
INSERT INTO `pdf_minichat` VALUES (1, '<font color="#990000">demo</font>', 'salut', 1180878884, '');
INSERT INTO `pdf_minichat` VALUES (2, '<font color="#990000">demo</font>', 'sa va?', 1180878892, '');
Citation :
Structure de la table `pdf_couleur`--
CREATE TABLE `pdf_couleur` (
`id_rang` text collate latin1_general_ci NOT NULL,
`couleur_rang` text collate latin1_general_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
--
-- Contenu de la table `pdf_couleur`
--
INSERT INTO `pdf_couleur` VALUES ('1', '#990000');
INSERT INTO `pdf_couleur` VALUES ('2', '#33CC33');
INSERT INTO `pdf_couleur` VALUES ('0', '#0033FF');
-- --------------------------------------------------------
--
-- Structure de la table `pdf_membre`
--
CREATE TABLE `pdf_membre` (
`id` int(11) NOT NULL auto_increment,
`pseudo` varchar(255) collate latin1_general_ci NOT NULL default '',
`pass` varchar(255) collate latin1_general_ci NOT NULL default '',
`mail` varchar(255) collate latin1_general_ci NOT NULL default '',
`confirm` text collate latin1_general_ci NOT NULL,
`nom` text collate latin1_general_ci NOT NULL,
`prenom` text collate latin1_general_ci NOT NULL,
`pays` text collate latin1_general_ci NOT NULL,
`ville` text collate latin1_general_ci NOT NULL,
`jn` varchar(2) collate latin1_general_ci NOT NULL,
`mn` varchar(2) collate latin1_general_ci NOT NULL,
`an` varchar(4) collate latin1_general_ci NOT NULL,
`website` text collate latin1_general_ci NOT NULL,
`dateInscript` int(11) NOT NULL,
`rang` text collate latin1_general_ci NOT NULL,
KEY `id` (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=2 ;
--
-- Contenu de la table `pdf_membre`
--
INSERT INTO `pdf_membre` VALUES (1, 'demo', 'demo', 'demo@demo.com', '', 'demo', 'demo', 'france', 'demo', '01', '01', '2007, '', 1180558450, '1');
-- --------------------------------------------------------
--
-- Structure de la table `pdf_minichat`
--
CREATE TABLE `pdf_minichat` (
`id` int(11) NOT NULL auto_increment,
`pseudo` varchar(250) collate latin1_general_ci NOT NULL default '',
`message` text collate latin1_general_ci NOT NULL,
`dateEnvoi` int(11) NOT NULL,
`rang` text collate latin1_general_ci NOT NULL,
KEY `id` (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=3;
--
-- Contenu de la table `pdf_minichat`
--
INSERT INTO `pdf_minichat` VALUES (1, '<font color="#990000">demo</font>', 'salut', 1180878884, '');
INSERT INTO `pdf_minichat` VALUES (2, '<font color="#990000">demo</font>', 'sa va?', 1180878892, '');
au faite c'est bon j'ai reusi mais sans le code que tu ma passé.
En faite j'ai mis sa quand le membre enregistre le message :
et pour afficher le tout j'ai mis sa :
$sql = connect_sql();
$reponse = mysql_query("SELECT * FROM pdf_minichat ORDER BY ID DESC LIMIT 0,20");
while ($donnees = mysql_fetch_array($reponse))
{
if ($donnees['rang'] == '1')
{
$pseudo1 = '<font color="#990000">' .$donnees['pseudo']. '</font>';
}
elseif ($donnees['rang'] == '2')
{
$pseudo1 = '<font color="#33CC33">' .$donnees['pseudo']. '</font>';
}
else
{
$pseudo1 = '<font color="#0033FF">' .$donnees['pseudo']. '</font>';
}
$affiche_message = formcode($donnees['message']);
echo '<p><strong>' .$pseudo1. '</font></strong> [' .date('H:i-d/m',$donnees['dateEnvoi']). '] : ' .$affiche_message. '</p>';
}
?>
mais alors on n'a plus besoin de la table pdf_couleur? Peut-on l'utiliser a la pace de if... ?
En faite j'ai mis sa quand le membre enregistre le message :
Citation :
mysql_query("INSERT INTO pdf_minichat VALUES('', '$pseudo', '$message', '$maintenant', '$rang')");et pour afficher le tout j'ai mis sa :
Citation :
<?php$sql = connect_sql();
$reponse = mysql_query("SELECT * FROM pdf_minichat ORDER BY ID DESC LIMIT 0,20");
while ($donnees = mysql_fetch_array($reponse))
{
if ($donnees['rang'] == '1')
{
$pseudo1 = '<font color="#990000">' .$donnees['pseudo']. '</font>';
}
elseif ($donnees['rang'] == '2')
{
$pseudo1 = '<font color="#33CC33">' .$donnees['pseudo']. '</font>';
}
else
{
$pseudo1 = '<font color="#0033FF">' .$donnees['pseudo']. '</font>';
}
$affiche_message = formcode($donnees['message']);
echo '<p><strong>' .$pseudo1. '</font></strong> [' .date('H:i-d/m',$donnees['dateEnvoi']). '] : ' .$affiche_message. '</p>';
}
?>
mais alors on n'a plus besoin de la table pdf_couleur? Peut-on l'utiliser a la pace de if... ?
Alors moi je te propose deux facon de faire :
- La premiere : on crée une table couleur avec un champs id_rang et un autre champs couleur. Au chargement de la page le navigateur verra le rang de la personne qui a posté le message (exemple : 2). Il fera alors correspondre la valeur 2 du rang à l' id_rang qui est egal à 2 et prendra la valeur de la couleur lorsque l' id_rang est égal à 2.
Cette technique est avantageuse dans la mesure ou si un jour les couleurs ne te conviennent plus tu pux les changer à ta guise, et de maniere dynamique la modificatio ns'appliquera à l'echelle du site.
Premiere Méthode plus dynamique donc.
- La seconde : on rajoute un champs couleur dans la table des membres. L'entrée de la valeur couleur se fera dès l'inscription en reprenant la méthode que tu as faite précedemment. En suite tu n'as plus qu'a récupérer la variable couleur qui correspond au membre.
Cette technique est donc moins dynamique que la premiere et si tu veux changer la couleur en fonction des rang, il va te faloir beaucoup de temps (niarf) puisque il faudra changer la valeur de la couleur poru chaque membre ... oui oui pour 3 membres ca va, mais on a vite fait d'avoir des crampes au bout du 20e.
Je te propose donc la réalisation de la premiere méthode :
Voici le code ! J'espere que tu as gardé la table pdf_couleur
Voilà avec ca, ca devrait marcher ! Bon courage
- La premiere : on crée une table couleur avec un champs id_rang et un autre champs couleur. Au chargement de la page le navigateur verra le rang de la personne qui a posté le message (exemple : 2). Il fera alors correspondre la valeur 2 du rang à l' id_rang qui est egal à 2 et prendra la valeur de la couleur lorsque l' id_rang est égal à 2.
Cette technique est avantageuse dans la mesure ou si un jour les couleurs ne te conviennent plus tu pux les changer à ta guise, et de maniere dynamique la modificatio ns'appliquera à l'echelle du site.
Premiere Méthode plus dynamique donc.
- La seconde : on rajoute un champs couleur dans la table des membres. L'entrée de la valeur couleur se fera dès l'inscription en reprenant la méthode que tu as faite précedemment. En suite tu n'as plus qu'a récupérer la variable couleur qui correspond au membre.
Cette technique est donc moins dynamique que la premiere et si tu veux changer la couleur en fonction des rang, il va te faloir beaucoup de temps (niarf) puisque il faudra changer la valeur de la couleur poru chaque membre ... oui oui pour 3 membres ca va, mais on a vite fait d'avoir des crampes au bout du 20e.
Je te propose donc la réalisation de la premiere méthode :
Voici le code ! J'espere que tu as gardé la table pdf_couleur
<?php
$sql = connect_sql();
$reponse = mysql_query("SELECT * FROM pdf_minichat ORDER BY ID DESC LIMIT 0,20" );
while ($donnees = mysql_fetch_array($reponse))
{
$affiche_message = formcode($donnees['message']);
$req_couleur = mysql_query("select couleur_rang from pdf_couleur where pdf_membre.rang=pdf_couleur.id_rang");
if($ligne = mysql_fetch_array($req_couleur))
{
$couleur = ligne["couleur_rang"];
echo('<p><strong><font color="'.$couleur.'">'.$données.'</font></strong> [' .date('H:i-d/m',$donnees['dateEnvoi']). '] : ' .$affiche_message.'</p>');
}
}
?>
Voilà avec ca, ca devrait marcher ! Bon courage
Lassé par la pub ? Créez un compte