Sript pour tchat non fonctionnel
Résolu/Fermé
rolly41
Messages postés
244
Date d'inscription
dimanche 16 novembre 2008
Statut
Membre
Dernière intervention
5 novembre 2024
-
Modifié par rolly41 le 12/11/2016 à 03:13
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 - 13 nov. 2016 à 00:09
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 - 13 nov. 2016 à 00:09
A voir également:
- Sript pour tchat non fonctionnel
- Coco tchat - Accueil - Réseaux sociaux
- Remplaçant de Coco : quelles solutions pour tchater gratuitement en ligne ? - Accueil - Réseaux sociaux
- Tchat adulte ✓ - Forum Mail
- Tchat locaux ✓ - Forum Vos droits sur internet
- C'est quoi le site qui remplace coco chat ✓ - Forum Réseaux sociaux
2 réponses
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 718
12 nov. 2016 à 15:22
12 nov. 2016 à 15:22
Bonjour,
il y aurait beaucoup de choses à dire sur tes codes... mais bon.
Déjà.. je ne vois pas dans tes script ajax (php) la connexion à la BDD.
Ensuite, vu que tu sembles utiliser la PDO... pense à activer la gestion des erreurs PDO et à mettre tes requêtes dans des blocs try/catch
Comme ici :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
N'hésites pas non plus à utiliser les success / error de l'ajax (jquery) pour afficher (via des console.log) ce qui est retourné par ton php.
Et enfin.. regarde dans la console de ton navigateur ce qui apparait lorsque tu postes un message... histoire de voir si il n'y aurait pas des erreurs... ou au moins voir le résultat des console.log
voici un exemple ajax complet ici qui pourra te donner quelques pistes sur l'écriture d'un code "propre"
https://forums.commentcamarche.net/forum/affich-33258760-remplir-un-formulaire-dynamiquement-en-fonction-d-une-combobox#2
il y aurait beaucoup de choses à dire sur tes codes... mais bon.
Déjà.. je ne vois pas dans tes script ajax (php) la connexion à la BDD.
Ensuite, vu que tu sembles utiliser la PDO... pense à activer la gestion des erreurs PDO et à mettre tes requêtes dans des blocs try/catch
Comme ici :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
N'hésites pas non plus à utiliser les success / error de l'ajax (jquery) pour afficher (via des console.log) ce qui est retourné par ton php.
Et enfin.. regarde dans la console de ton navigateur ce qui apparait lorsque tu postes un message... histoire de voir si il n'y aurait pas des erreurs... ou au moins voir le résultat des console.log
voici un exemple ajax complet ici qui pourra te donner quelques pistes sur l'écriture d'un code "propre"
https://forums.commentcamarche.net/forum/affich-33258760-remplir-un-formulaire-dynamiquement-en-fonction-d-une-combobox#2
rolly41
Messages postés
244
Date d'inscription
dimanche 16 novembre 2008
Statut
Membre
Dernière intervention
5 novembre 2024
1
Modifié par rolly41 le 12/11/2016 à 22:38
Modifié par rolly41 le 12/11/2016 à 22:38
la console me dit :
Page main_shoutbox.js ligne 47:4
ReferenceError: GET is not defined
type : GET,
L’utilisation de « getPreventDefault() » est obsolète. Utiliser « defaultPrevented » à la place. (il semble que la librairie ajax 1.8 soit la cause de cette erreur)
je suppose que ça veut dire que GET n'est pas défini dans mon javascript
La page main_shoutbox.js
la ligne 47 est :
Page main_shoutbox.js ligne 47:4
ReferenceError: GET is not defined
type : GET,
L’utilisation de « getPreventDefault() » est obsolète. Utiliser « defaultPrevented » à la place. (il semble que la librairie ajax 1.8 soit la cause de cette erreur)
je suppose que ça veut dire que GET n'est pas défini dans mon javascript
La page main_shoutbox.js
$('#envoyer').click(function(e) { e.preventDefault(); // on empêche le bouton d'envoyer le formulaire var pseudo = encodeURIComponent( $('#pseudo_expediteur').val() );//pseudo de l'expediteur var msg = encodeURIComponent( $('#message_expediteur').val() );//message envoyé var id_salon = encodeURIComponent( $('#id_salon').val() );//id du salon var id = encodeURIComponent( $('#id_expediteur').val() );//id de l'expediteur var timer = new Date(); //création variable timer var annee = timer.getFullYear(); var mois = timer.getMonth()+1; var jour = timer.getDate(); var hrs = timer.getHours(); var mins = timer.getMinutes(); var secs = timer.getSeconds(); var heure = ((hrs<10)?"0":"")+hrs; var minute = ((mins<10)?"0":"")+mins; var seconde = ((secs<10)?"0":"")+secs; var date = jour+"/"+mois+"/"+annee; var time = heure+":"+minute+":"+seconde; if(msg != "") { // on vérifie que les variables ne sont pas vides $.ajax( { url : "./include/post_shoutbox.php", // on donne l'URL du fichier de traitement type : "POST", // la requête est de type POST data : "message=" + msg + "&id_salon=" + id_salon + "&id=" + id,// et on envoie nos données success : function(data, statut) { console.log(data); } }); $('#messages').append("<font>" + date + " à " + time + " " + pseudo + " dit : " + msg + "</font><hr />"); // on ajoute le message dans la zone prévue } else { alert('Votre message est vide'); } }); function charger() { setTimeout( function() { var premierID = $('#messages p:first').attr('id'); // on récupère l'id le plus récent $.ajax( { url : "./include/get_shoutbox.php?id=" + premierID, // on passe l'id le plus récent au fichier de chargement type : GET, success : function(html) { $('#messages').append("<font>" + date + " à " + time + " " + pseudo + " dit : " + msg + "</font><hr />"); } }); charger(); }, 500); } charger();
la ligne 47 est :
type : GET,
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 718
12 nov. 2016 à 23:01
12 nov. 2016 à 23:01
Il faut mettre 'GET' et non GET tout seul.
Mais en même temps... 'GET' c'est la valeur par défaut... tu n'as même pas besoin de préciser le TYPE.
Mais en même temps... 'GET' c'est la valeur par défaut... tu n'as même pas besoin de préciser le TYPE.
rolly41
Messages postés
244
Date d'inscription
dimanche 16 novembre 2008
Statut
Membre
Dernière intervention
5 novembre 2024
1
Modifié par rolly41 le 12/11/2016 à 23:24
Modifié par rolly41 le 12/11/2016 à 23:24
Merci ^^
Mais maintenant la consol me dit que date n'est pas défini dans la partie GET
De plus les messages envoyé ne sont pas envoyé a la base de données :(
Mais maintenant la consol me dit que date n'est pas défini dans la partie GET
$('#messages').append("<font>" + date + " Ã " + time + " " + pseudo + " dit : " + msg + "</font><hr />");
De plus les messages envoyé ne sont pas envoyé a la base de données :(
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 718
>
rolly41
Messages postés
244
Date d'inscription
dimanche 16 novembre 2008
Statut
Membre
Dernière intervention
5 novembre 2024
12 nov. 2016 à 23:20
12 nov. 2016 à 23:20
Tu as activé les erreurs PDO comme je te l'ai indiqué ?
Tu as quelque chose qui s'affiche dans ta console ?
Tu peux montrer ton code modifié suite à mes remarques précédentes ?
Tu as quelque chose qui s'affiche dans ta console ?
Tu peux montrer ton code modifié suite à mes remarques précédentes ?
rolly41
Messages postés
244
Date d'inscription
dimanche 16 novembre 2008
Statut
Membre
Dernière intervention
5 novembre 2024
1
Modifié par rolly41 le 12/11/2016 à 23:54
Modifié par rolly41 le 12/11/2016 à 23:54
Les erreur PDO sont activé à la requete de connexion de connect-bdd.php
Dans la console, ça me dis que la valeur date n'existe pas (et ça me fait la boucle pour afficher les nouveau messages)
erreur console :
[En savoir plus]main_shoutbox.js:46:5
ReferenceError: date is not defined
Voici les pages actuelle avec leur dossiers parents :
dossier racine
-shoutbox.php
dossier racine
-include
--get_shoutbox.php
--post_shoutbox.php
--connect-bdd.php
--affichage_msg_salon.php
get_shoutbox.php
post_shoutbox.php
connect-bdd.php
affichage_msg_salon.php
Dans la console, ça me dis que la valeur date n'existe pas (et ça me fait la boucle pour afficher les nouveau messages)
erreur console :
[En savoir plus]main_shoutbox.js:46:5
ReferenceError: date is not defined
Voici les pages actuelle avec leur dossiers parents :
dossier racine
-shoutbox.php
<?php if(empty($subtitle)) { $subtitle='Shoutbox'; include 'include/header.php'; include 'include/body.php'; if (!isset($nbrs_admin)) { $nbrs_admin='0'; } if (!isset($nbrs_modo)) { $nbrs_modo='0'; } if (!isset($nbrs_membre)) { $nbrs_membre='0'; } if($maintenance == 'off') { if(empty($id_salon)) { $id_salon='2'; } $erreur=array(); $_SESSION['id']='1'; $_SESSION['pseudo']='Administrateur'; ?> <div height="100%" width="100%" align="center" valign="middle"> <form method="POST" action="shoutbox.php"> <table border="1" align="bottom" class="shoutbox"> <tr valign="middle" width="100%" class="shout1"><td colspan="2" align="center">Bienvenue dans la Shoutbox <font color="#444444"><?php echo $_SESSION['pseudo'];?></font></td></tr> <tr valign="middle" align="left" class="shout2"><td colspan="2"><u>Liste des salons</u> | <u>#Aide</u> | <u>#Général</u></td></tr> <tr valign="middle" align="center" class="shout1"><td width="80%" align="center">Suivi de discution</td><td>Membre en ligne</td></tr> <tr align="left" height="423px" class="shout2"> <td valign="bottom" height="423px"> <div style="height:100%;width:100%;display: block;overflow:hidden;overflow-x: hidden;overflow-y: auto;overflow : -moz-scrollbars-vertical;" id="messages"> <input type="hidden" name="id_salon" value="<?php echo $id_salon?>" /> <?php include ('include/affichage_msg_salon.php'); ?> </div> </td> <td valign="top" height="423px"> <div style="height:100%;width:100%;display: block;overflow:hidden;overflow-x: hidden;overflow-y: auto;overflow : -moz-scrollbars-vertical;"><?php echo '<font color="#660000">Administrateurs :<br /><br />'; if ($nbrs_admin!='0') { echo 'Des administrateurs sont en ligne <br />'; } else { echo 'Aucun administrateur en ligne'; } echo '</font><hr/>'; echo '<font color="#006600">Modérateurs :<br /><br />'; if ($nbrs_modo!='0') { echo 'Des modérateurs sont en ligne<br />'; } else { echo 'Aucun modérateur en ligne'; } echo '</font><hr/>'; echo '<font color="000066">Membres :<br /><br />'; if ($nbrs_membre!='0') { echo 'Des membres sont en ligne<br />'; } else { echo 'Aucun membre en ligne'; } echo '</font>'; ?> </td> </tr> <tr valign="middle" align="left" class="shout1"><td colspan="2">Actions : | <b>G</b> | <i>I</i> | <s>B</s> | <u>S</u> | | | | | | | | | </td></tr> <tr valign="middle" align="left"><td style="background-color:#dddddd;"> <input type="hidden" name="pseudo" id="pseudo_expediteur" value="<?php echo $_SESSION['pseudo'];?>" /> <input type="hidden" name="id" id="id_expediteur" value="<?php echo $_SESSION['id'];?>" /> <input type="texte" name="message" id="message_expediteur" size="100%" placeholder="Votre message ici" style="width:90%;" /> <font size="1"> <input type="submit" name="envoyer" id="envoyer" value="Envoyer" /> </font> </td><td align="center" class="shout2">Shoutbox version : Alpha</td></tr> </table> </form> <script src="js/main_shoutbox.js"> </script> <script type="text/javascript"> element = document.getElementById('messages'); element.scrollTop = element.scrollHeight; </script> </div> <?php } else { echo $img_maintenance; } include 'include/no-body.php'; } else { echo 'La shoutbox est indisponible pour cette page !'; echo 'Veuillez-vous rendre sur <a href="shoutbox.php" rel="nofollow noopener noreferrer" target="_blank">cette page</a>'; } ?>
dossier racine
-include
--get_shoutbox.php
--post_shoutbox.php
--connect-bdd.php
--affichage_msg_salon.php
get_shoutbox.php
<?php if(!empty($_GET['id'])) { include ('connect-bdd.php'); // on vérifie que l'id est bien présent et pas vide $id = (int) $_GET['id']; // on s'assure que c'est un nombre entier // on récupère les messages ayant un id plus grand que celui donné $requete = $bdd->prepare('SELECT * FROM shoutbox_msg WHERE id > :id ORDER BY id DESC'); $requete->execute(array("id" => $id)); $messages = 'Ce message n\'existe pas'; // on inscrit tous les nouveaux messages dans une variable while($donnees = $requete->fetch()) { $messages .= "<font id=\"" . $donnees['id'] . "\">".$msg['date']." à ".$msg['time']." ".$msg['author']." dit : ". $msg['message']."<hr/></font>"; } echo $messages; // enfin, on retourne les messages à notre script JS } ?>
post_shoutbox.php
<?php if (!empty($_POST)) { include ('connect-bdd.php'); if(!empty(mysql_real_escape_string($_POST['message'])) && strlen(mysql_real_escape_string($_POST['message'])) >= 1) { $messag= strip_tags($_POST['message']); $message= mysql_real_escape_string($_POST['message']); if(isset($_SESSION)) { $id_salon=$_POST['id_salon']; $id_session=$_SESSION['id']; $erreur['msg']='Vous pouvez maintenant faire de nouvelle vérifications'; $requete = $bdd->prepare("SELECT * FROM shoutbox_msg WHERE id_expediteur = ? AND id_salon = ?"); $requete->bindParam(1, $id_session); $requete->bindParam(2, $id_salon); $requete->execute(); if($requete->fetch()) { $erreur['msg']='La requête indique que vous avez déjà posté des messages dans ce salon'; $flood=false; //$flood=true; } else { $erreur['msg']='La requête indique que vous n\'avez pas posté de message dans ce salon'; $flood=false; } if($flood==false) { $erreur['msg']='Votre message peut-être enregistré'; $requete = $bdd->prepare("INSERT INTO shoutbox_msg (id_expediteur, time_msg, date_msg, msg, id_salon) VALUES (?,?,?,?,?)"); $requete->bindParam(1, $id_session); $requete->bindParam(2, $time); $requete->bindParam(3, $date); $requete->bindParam(4, $message); $requete->bindParam(5, $id_salon); $requete->execute(); if($requete) { $erreur['msg']='Votre message a été envoyé'; $erreur=array(); $message=array(); } else { $erreur['msg']='Votre message n\'a pas été envoyé'; } } else { $erreur['msg']='Ce message a déjà été envoyé ses 10 derniére secondes'; } } else { $erreur['msg']='Vous devez être connecté pour pouvoir discuter'; } } else { $erreur['msg']='Votre message doit contenir au minimum 1 caractére'; $message= strip_tags($_POST['message']); } } ?>
connect-bdd.php
<?php try { $bdd = new PDO('mysql:host=localhost;dbname=gamer-online', 'utilisateur', 'monmdptruc', array ( PDO::ATTR_PERSISTENT => true ) ); } catch(Exception $e) { die('Erreur :'.$e->getMessage()); } ?>
affichage_msg_salon.php
<?php //code php pour afficher le contenu du salon ;) $requete = $bdd->prepare("SELECT id FROM shoutbox_salon WHERE id = ?"); $requete->bindParam(1, $id_salon); $requete->execute(); if($requete->fetch()) { $erreur_salon['msg']='Ce salon existe !<br />'; $requete = $bdd->prepare("SELECT * FROM shoutbox_msg WHERE id_salon = ?"); $requete->bindParam(1, $id_salon); $requete->execute(); if($requete->fetch()) { $requete1 = $bdd->prepare('SELECT * FROM shoutbox_msg WHERE id_salon = ? LIMIT 0,500'); $requete1->bindParam(1, $id_salon); $requete1->execute(); if(!empty($erreur) and $erreur['msg']!=false) { $erreur1=$erreur['msg']; echo '<div style="background-color:#ff0000;color:#ffffff;" align="center">'.$erreur1.'</div>'; } echo '<div id="message">'; while($donnees = $requete1->fetch()) { $requete2=$bdd->prepare('SELECT * FROM membre WHERE id = ?'); $requete2->bindParam(1, $donnees['id_expediteur']); $requete2->execute(); $requete2=$requete2->fetch(); if($donnees['date_msg']==$date) { $msg['date']='Aujourd\'hui'; } else { $msg['date']=$donnees['date_msg']; } $msg['time']=$donnees['time_msg']; $msg['author']=$requete2['pseudo']; $msg['message']=$donnees['msg']; echo "<font id=\"" . $donnees['id'] . "\">".$msg['date']." à ".$msg['time']." ".$msg['author']." dit : ". $msg['message']."<hr/></font>"; $erreur=array(); $erreur_salon=array(); } echo '</div>'; } else { $erreur['msg']='Ce salon n\'a encore aucun message !'; } } else { $erreur_salon['msg']='Ce salon n\'existe pas, veuiller selectionner un salon dans la liste des salons !'; } if(!empty($erreur_salon)) { echo $erreur_salon['msg']; } ?>
jordane45
Messages postés
38346
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
16 décembre 2024
4 718
>
rolly41
Messages postés
244
Date d'inscription
dimanche 16 novembre 2008
Statut
Membre
Dernière intervention
5 novembre 2024
13 nov. 2016 à 00:09
13 nov. 2016 à 00:09
Non seulement tu n'as pas mis les requetes pdo entre try/catch ... mais en plus tu mélanges du PDO et du vieux mysql.....
Commence par remettre au propre tes codes....
Commence par remettre au propre tes codes....
Modifié par rolly41 le 12/11/2016 à 17:42
j'ai maintenant ceci :
j'ai ajouter la connexion à la base de données dans les page de traitement (get_shoubox.php et post_shoutbox.php).
Quand j'envois un message, j'ai a chaque fois 2 alert (error et complete)
Qu'elle est la différence entre succes et complete ?
12 nov. 2016 à 19:34
Par contre... au lieu de faire les alert... fais donc des console.log(data)
et dis nous ce que la console de ton navigateur te retourne