Mettre une couleur a un pseudo php

Fermé
theoyletop Messages postés 17 Date d'inscription lundi 14 juillet 2014 Statut Membre Dernière intervention 25 novembre 2014 - 5 nov. 2014 à 21:51
theoyletop Messages postés 17 Date d'inscription lundi 14 juillet 2014 Statut Membre Dernière intervention 25 novembre 2014 - 9 nov. 2014 à 18:57
Voila mon problème j'aimerais mettre une couleur à un pseudo spécial juste 'Admin' en rouge un truc comme sa : if ($pseudo == 'Admin') echo '<span style="color:#FFFFFF;">'.$pseudo.'</span>';

ou pour la bd :

if (['pseudo'] == 'Admin') echo '<span style="color:#FFFFFF;">'.$pseudo.'</span>';

Mais malheureusement sa ne change rien :/

voila le code complet :

<?php
header("Content-Type: text/html; charset=iso-8859-1");
mysql_connect("localhost", "bd", "mdp");
mysql_select_db("bd");

if ($pseudo = '~~~~~~~~~~~~~~~Bienvenue sur la v1 de chat13.~~~~~~~~~~~~~~')
echo '<p style="color:red;">' . $pseudo . '</p>';
else
echo '<p>' . $pseudo . '</p>';


if (isset($_POST['pseudo']) && isset($_POST['message']))
{
if (!empty($_POST['pseudo']) && !empty($_POST['message']))
{
$message = mysql_real_escape_string(utf8_decode($_POST['message']));
$pseudo = mysql_real_escape_string(utf8_decode($_POST['pseudo']));
mysql_query("INSERT INTO minichat(pseudo,message,timestamp) VALUES('$pseudo', '$message', '".time()."')");
}
}
$reponse = mysql_query("SELECT * FROM minichat ORDER BY id DESC LIMIT 0,4");
while($val = mysql_fetch_array($reponse))
{
echo '<p><strong">'.htmlentities(stripslashes($val['pseudo'])).'</strong> à '.date('H\:i\:s',$val['timestamp']).' : '. htmlentities(stripslashes($val['message'])) .'</p>';
}
mysql_close();
?>

Merci de votre aide :)
A voir également:

3 réponses

Ysabe_l Messages postés 12575 Date d'inscription vendredi 12 avril 2013 Statut Contributeur Dernière intervention 11 novembre 2024 276
5 nov. 2014 à 22:59
Bonjour,

Tu fais la vérification avant de définir la variable, ça ne peut pas fonctionner. Donc déjà mets la vérification après.

Ensuite tu utilises des extensions qui sont obsolètes et dépréciées, il faut utiliser MySQLi ou PDO_MySQL, plus d'infos ici : https://www.php.net/manual/fr/mysqlinfo.api.choosing.php
1
theoyletop Messages postés 17 Date d'inscription lundi 14 juillet 2014 Statut Membre Dernière intervention 25 novembre 2014 19
Modifié par theoyletop le 5/11/2014 à 23:46
Merci de ta réponse :) Mais la vérification c'est quoi exactement ? (je débute)
0
Ysabe_l Messages postés 12575 Date d'inscription vendredi 12 avril 2013 Statut Contributeur Dernière intervention 11 novembre 2024 276
6 nov. 2014 à 11:33
Salut,

Il est de toi le code que tu montres ? Je ne comprends pas comment tu peux ne pas savoir ce qu'est la vérification.

Je te remets ton code en petits bouts avec l'explication "en français" de ce que veut dire ton code :

<?php 
header("Content-Type: text/html; charset=iso-8859-1"); 


je vais écrire du language PHP.
L'information header comme ça je n'ai jamais vue.

mysql_connect("localhost", "bd", "mdp"); 
mysql_select_db("bd"); 


pour te connecter à la base de données tu iras sur localhost avec l'identifiant bd et le mot de passe mdp

if ($pseudo = '~~~~~~~~~~~~~~~Bienvenue sur la v1 de chat13.~~~~~~~~~~~~~~') 
echo '<p style="color:red;">' . $pseudo . '</p>'; 
else 
echo '<p>' . $pseudo . '</p>'; 


si le pseudo est '~~~~~~~~~~~~~~~Bienvenue sur la v1 de chat13.~~~~~~~~~~~~~~' (ce qui entre nous est assez étrange comme pseudo ...) alors tu affiches ici le pseudo dans un paragraphe dont le texte est affiché en rouge, sinon tu affiches ici le pseudo dans un paragraphe.

D'ailleurs au passage il manque les accolades dans cette partie, ça devrait être :

if ($pseudo = '~~~~~~~~~~~~~~~Bienvenue sur la v1 de chat13.~~~~~~~~~~~~~~') 
{
echo '<p style="color:red;">' . $pseudo . '</p>'; 
}
else 
{
echo '<p>' . $pseudo . '</p>'; 
}



if (isset($_POST['pseudo']) && isset($_POST['message'])) 
{


Si on vient de valider le formulaire contenant pseudo et message.

if (!empty($_POST['pseudo']) && !empty($_POST['message'])) 
{ 


Si ce pseudo et ce message ne sont pas vides

$message = mysql_real_escape_string(utf8_decode($_POST['message'])); 
$pseudo = mysql_real_escape_string(utf8_decode($_POST['pseudo'])); 


La variable message sera le message entré dans le formulaire.
La variable pseudo sera le pseudo entré dans le formulaire.

mysql_query("INSERT INTO minichat(pseudo,message,timestamp) VALUES('$pseudo', '$message', '".time()."')"); 
}
}


Mets dans la base de données le pseudo, le message et la date.

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


La variable reponse est le contenu de la table minichat de la base de données classé du plus récent au plus ancien et on prend seulement les 4 premières entrées.

while($val = mysql_fetch_array($reponse)) 
{ 


Tant qu'il y a une ligne existante dans la variable réponse

echo '<p><strong">'.htmlentities(stripslashes($val['pseudo'])).'</strong> à '.date('H\:i\:s',$val['timestamp']).' : '. htmlentities(stripslashes($val['message'])) .'</p>'; 
} 


Affiche ici le pseudo, l'heure et le message qui sont en base de données.

mysql_close(); 
?>


Ferme la connexion à la base de données
J'ai fini de parler en PHP.

_________________________________________

Avec cette "traduction" des instructions, tu te rends bien compte que tu lui demandes de vérifier si la variable "pseudo" est (le truc tout long et bizarre) avant de lui dire ce qu'était la variable pseudo. Donc au moment où tu lui dis de regarder cette variable n'existe pas et au moment où tu veux l'afficher tu ne lui dis pas de regarder si c'est ce pseudo là.

Pour faire la même chose dans l'ordre (il faudra aussi rajouter d'autres vérifications pour être sécurisé et comme je le disais dans mon message précédant utiliser pdo ou mysli) il faut (tous les éléments sont déjà dans ton code, je n'ai pas vérifié qu'il fonctionnait):

- lui dire qu'on parle PHP
- donner les instructions pour se connecter à la base de données
- se connecter à la base de données

- vérifier si le formulaire a été validé
- vérifier que les champs du formulaire ne soient pas vides
- ajouter ces champs à la base de données avec la date

- récupérer en base de données les 4 dernières entrées de cette table
- pour chaque entrée récupérer le pseudo, la date et le message
- vérifier si le pseudo est (le truc tout long et bizarre)
- si le pseudo est (le truc tout long et bizarre) afficher le pseudo dans un paragraphe dans lequel on écrit en rouge
- sinon afficher le pseudo dans un paragraphe

- afficher les autres informations

- fermes la connexion à la base de données
- dire qu'on n'écrit plus en PHP

_________________________________________

Autre problème de ton code, tu fais un tchat en PHP si j'ai bien compris. Sauf que du coup la page ne va se recharger que quand on validera un nouveau message ou qu'on l'actualisera.

Donc si je suis sur le tchat et que je ne parle pas pendant 5 minutes je ne verrai pas que les autres ont parlé !

Un tchat doit s'actualiser très fréquemment et sans action de l'utilisation. Bien sur sans recharger la page sinon on ne peut plus y écrire. Une solution est d'utiliser Ajax qui permettra une actualisation sans rechargement de la page.
1
theoyletop Messages postés 17 Date d'inscription lundi 14 juillet 2014 Statut Membre Dernière intervention 25 novembre 2014 19
9 nov. 2014 à 18:56
Merci beaucoup pour ton commentaire très instructif , j'ai enfin réussi grace à toi et Pitet :D
0
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 525
6 nov. 2014 à 12:30
Salut,

Attention également à l'opérateur de comparaison, il faut utiliser == sinon il s'agit d'une affectation :
if ($pseudo == 'toto')
0
Ysabe_l Messages postés 12575 Date d'inscription vendredi 12 avril 2013 Statut Contributeur Dernière intervention 11 novembre 2024 276
6 nov. 2014 à 13:12
Ah oui bien vu, j'ai fait des copier/coller sans vérifier le code lui même.
0
theoyletop Messages postés 17 Date d'inscription lundi 14 juillet 2014 Statut Membre Dernière intervention 25 novembre 2014 19
9 nov. 2014 à 18:57
Merci ! j'ai reussi grace à vous tous :D
0