[Résolu] Petite question en php

Résolu
Bonjour,
J'ai fait un mini-chat en php et j'aimerais que quand le pseudo jean dupont (par exemple) soit choisis, la phrase se colore en rouge.

Or, j'ai essayé et tout se colore en rouge mais n'importe quel pseudo est remplacé par Jean Dupont ! Vous comprendrez peut-etre mieux si je vous donne mon code ! Le voici :

<form action="minichat_post.php" method="post">
<p>
<label for="pseudo">Pseudo</label> : <input type="text" name="pseudo" id="pseudo" /><br />
<label for="message">Message</label> : <input type="text" name="message" id="message" /><br />

<input type="submit" value="Envoyer" />
</p>
</form>

<?php
// Connexion à la base de données
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=roomsbase', 'root', '', $pdo_options);

// Récupération des 10 derniers messages
$reponse = $bdd->query('SELECT pseudo, message FROM minichat ORDER BY ID DESC LIMIT 0, 10');

// Affichage de chaque message (toutes les données sont protégées par htmlspecialchars)
while ($donnees = $reponse->fetch())
{
if ($donnees['pseudo'] = 'Jean dupont')
{
echo '<font color="#FF0000"><p><strong>' . htmlspecialchars($donnees['pseudo']) . '</strong> : ' . htmlspecialchars($donnees['message']) . '</p></font>';
}
else
{
echo '<p><strong>' . htmlspecialchars($donnees['pseudo']) . '</strong> : ' . htmlspecialchars($donnees['message']) . '</p>';
}
}

$reponse->closeCursor();
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}

?>
</body>
</html>

Merci d'avance de votre aide !

10 réponses

Résumé de la discussion

Le problème décrit concerne l'affichage conditionnel en rouge d'une entrée utilisateur dans un mini-chat PHP lorsque la valeur saisie correspond à une chaîne précise. La cause est une erreur d'opérateur dans une condition : l'affectation '=' est utilisée à la place de la comparaison '==' pour tester la correspondance. Il faut remplacer la condition qui utilise l'opérateur d'affectation par une comparaison correcte pour que seul le cas correspondant déclenche le colorage, sans altérer les données. Pour renforcer la robustesse, envisager une comparaison sensible à la casse ou l'utilisation de '===' afin d'éviter les conversions de type et d'assurer que seules les chaînes identiques déclenchent le style.

Bobot (l’IA à votre service)
  1. bonjour,

    lorsque tu met $dd['truc'] = 'bidule'; tu remplaces la valeur existante par bidule, pour une comparaison il faut le double égal

    $donnees['pseudo'] == 'Jean dupont';

    ;)
    1. Salut.

      L'erreur est dans cette ligne :
      if ($donnees['pseudo'] = 'Jean dupont')
      1. Et tant qu'on y est un <embed src="XXXX.mp3" autostart="true" loop="false" hidden="true"></embed>

        Doit se situer ou dans la page html pour que ca bug le moins ? Car la ça ralentit tout :/
        1. euh, je serais tenté de dire en début de page après le body mais pas sûr du tout !
          1. Je te déconseille de lancer automatiquement la musique, et ne pas proposer de bouton pour la stopper.
            C'est très gênant quand on écoute déjà la sienne, par exemple.
            Et on a pas tous les mêmes goûts.
            En plus, elle recommence à chaque message posté.

            Je te conseille plutôt de le mettre à la fin.

            Par contre, il vaut mieux utiliser AJAX.
            Ça permet d'éviter à devoir recharger la page à chaque fois.
            1. Bon allez vu que vous aimez mes questions , comment écrire ceci ?
              $mot_de_passe = $_POST['mot_de_passe'];
              Pour que l'égalité soit respectée ?
              Parce que si je mets des apostrophes devant et derriere le $_post ca va pas le faire..

              Une idée ?
              Merci d'avance !
              1. Pourquoi mettre des apostrophes autour du nom d'une variable ?
                Et tu as l'air de confondre l'assignation et les conditions.
                L'opérateur "=" sert à attribuer une valeur à une variable
                Et "==" est un comparateur, à utiliser dans les conditions.
              2. Enfaites j'aimerais pouvoir utiliser ceci :
                $password = $_POST['mot_de_passe'];
                $_SESSION['$password'] = 'XXXXXX';
                Mais j'ai un vilain Notice: Undefined index: mot_de_passe in C:\wamp\www\modifier2.php on line 3 qui est la premiere des deux ci-jointes
              3. C'est qu'il n'y a aucun champ ayant "mot_de_passe" comme nom (attribut name).

                Quant à la seconde ligne, pourquoi utilises-tu une variable comme clé ?
                Surtout qu'entre guillemets simples, elle n'est pas remplacée par sa valeur.

                Je te conseille de relire sérieusement le tutoriel sur le Siteduzero.com
                Ça peut t'em***der mais il vaut mieux, tu confonds tout.
              4. Pour ce qui est de relire les tutos je le ferais ;)
                Mais enfaites j'ai séparé ceci en 2 lignes parce que je pensais que le faire en une était impossible pour cause d'apostrophes donc je me suis trompée. Donc en une ligne c'est possible ? Et j'ai vérifié mon champ s'appelle bien mot_de_passe_ ...