Menu

Insertion de smileys dans un tchat [Résolu]

sunev - 12 juil. 2017 à 12:48 - Dernière réponse :  sunev
- 12 juil. 2017 à 20:19
Bonjour,
Dans ce code qui est un minitchat, les smileys ne saffichent pas quand on clique sur « envoyer »
Seul le nom « (jaime) ou (allucine) » apparaissent au lieu des « gif ».
J’ai beau retourner ce code dans tous les sans je n’arrive pas a trouver l’erreur.
Si quelqu’un a une idée merci de m’en faire part
Tout le reste fonctionne bien, date, heure, réactualisation, les icones apparaissent bien sur la page du tchat
Quand on clique dessus il s’insèrent bien dans le message mais a l’envoie c’est le l’image du gif qui devrait apparaitre pas son nom.
Merci de vos éventuelles réponses .

Tout ce qui concerne les smIleys est mis en gras

<?php
//connection a la BDD
include("mini_tchat_inc_connect_bdd.php");
?>
<!DOCTYPE html>
<html><head>
<title>TChat</title> <meta charset="utf-8">
<!--Google hosted jquery -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
</head>
<body>
<?php
//traitement du submit
//récupération PROPRE des variables AVANT de les utiliser :
$message = !empty($_POST['message']) ? $_POST['message'] : NULL;
$pseudo = !empty($_POST['pseudo']) ? $_POST['pseudo'] : NULL;
//Insertion en bdd si non vide
if ($pseudo && $message) {
$sql = "INSERT INTO chat ( pseudo, message, creation) VALUES(?, ?, NOW())";
$datas = array($pseudo,$message);

$message = str_replace('(jaime)','<img src="smileys/lover.gif">',$message);
$message = str_replace('(allucine)','<img src="smileys/eek.gif">',$message);

try{
$prep = $bdd->prepare($sql);
$prep->execute($datas);
}catch(Exception $e){
echo " Erreur : ".$e->getMessage();
}
}
//Liste des messages
$sql = "SELECT pseudo, message, DATE_FORMAT(creation, '%d/%m/%Y Ã %Hh%i') AS DATECREATION
FROM chat ORDER BY ID DESC LIMIT 0, 10";
try{
$prep = $bdd->prepare($sql);
$prep->execute();
$allmsg = $prep->fetchAll(); // on stocke les résultats dans un array
}catch(Exception $e){
echo " Erreur : ".$e->getMessage();
}
?>

<form name="formulaire1" method="post" action="">
<p><label for="pseudo">Pseudo :</label> <input class="text" type="text" placeholder="PSEUDO" name="pseudo" value="<?php
if (isset($pseudo)) { echo $pseudo; } ?>" /></p>
<p><label for="message">Message :</label> <textarea type="text" placeholder="MESSAGE" name="message" cols="40" rows="4" autofocus></textarea></p>

<div class="centre">
<table class="centre" cellpadding="5" border="0">
<tr >
<td><a class="pointeur" onclick='inserticon("(jaime)");'><img src='smileys/lover.gif'></A></td>
<td><a class="pointeur" onclick='inserticon("(allucine)");'><img src='smileys/eek.gif'></A></td>

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

<div id="messages">
<?php
if(!empty($allmsg)){
foreach($allmsg as$donnees){
echo
'<P class="messag"> '
. $donnees['DATECREATION']. ':<strong> '
. htmlspecialchars($donnees['pseudo']) .'</strong> : '
. htmlspecialchars($donnees['message'])
. '</p>';
}
}
?>
</div>

<script language='JavaScript'>
<!--
var nom;
function inserticon(nom){
var temps;
temps=formulaire1.message.value;
temps=temps+''+nom+''
formulaire1.message.value=temps;
}
//-->
</script>


<script>
setInterval('load_messages()', 5000);
function load_messages(){
$('#messages').load('essai_mini_tchat_load_messages.php');
}
</script>
</body></html>




Afficher la suite 

4 réponses

Répondre au sujet
ThEBiShOp 8539 Messages postés jeudi 22 mars 2007Date d'inscriptionContributeurStatut 12 juillet 2017 Dernière intervention - Modifié par ThEBiShOp le 12/07/2017 à 14:26
0
Utile
Salut,

tu as ceci :

    $datas = array($pseudo,$message);
    
    $message = str_replace('(jaime)','<img src="smileys/lover.gif">',$message);
    $message = str_replace('(allucine)','<img src="smileys/eek.gif">',$message); 


Si tu fais ta conversion avant de mettre tes variables dans $datas (data ne prend pas de s, mais on s'en fiche pour ton problème :p), ça devrait aller mieux.
Commenter la réponse de ThEBiShOp
0
Utile
1
tu veut dire comme ça

    $message = str_replace('(jaime)','<img src="smileys/lover.gif">',$message);
$message = str_replace('(allucine)','<img src="smileys/eek.gif">',$message);

$data = array($pseudo,$message);


ça donne ça "<img src="smileys/lover.gif">" a l'affichage à la place de
"(jaime)" mais aucun gif en vu
ThEBiShOp 8539 Messages postés jeudi 22 mars 2007Date d'inscriptionContributeurStatut 12 juillet 2017 Dernière intervention - 12 juil. 2017 à 15:31
à cause de ton htmlspecialchars au moment de ton affichage je pense.

Tu as plusieurs possibilités, moi à ta place, j'enregistrerais dans la base les messages avec tes codes (jaime) and co, et je fais la conversion uniquement au moment de l'affichage
Commenter la réponse de sunev
0
Utile
ok ThEBiShOp
c'est bien htmlspecialchars qui empêché l'affichage des gif, je les ai enlevé et ça fonctionne, mais la protection est enlevée
quand a les enregistrer dans la base de données il va falloir que je me penche sur le probléme.
Merci a toi de tes réponses
Commenter la réponse de sunev