Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de scrollbar avec XMLHttpRequest et php

Sujet résolu
    31 décembre 2008 à 17:39:56

    Bonjour, j'ai hésité un peu à savoir dans quel catégorie poster mon problème entre javascript et php mais je me suis dit qu'une scrollbar allait plus dans la catégorie javascript en espérant être correcte, c'est la première fois que je poste sur le forum..normalement j'ai l'habitude de faire des recherches. Enfin, voici le probleme :

    J'ai décidé de faire une chatbox qui se recharge automatiquement à l'envoie d'un message sans pour autant recharger la page au complet. Pour ce, j'ai utilisé XMLHttpRequest. J'ai eu quelques problèmes au départ avec les caractères mais maintenant ça semble être règlé. Mais maintenant j'ai un autre problème à règler. Voyez-vous, j'ai fait une scrollbar personnalisé à la chatbox pour qu'elle s'agence avec le design, mais malheuresement, lors de l'envoie du message, la scrollbar ne semble pas se recharger et à la place il apparait 2 scrollbars normal, une horizontal et une autre verticale.

    Pour le code de la chatbox..désolé, c'est un peu mal organisé, c'est que j'ai essayé plein de choses et j'ai pas prit le temps de remettre à l'ordre, bref voici le code php :

    <?php
    if (isset($_POST['user_ip']) && isset($_POST['user_name']) && isset($_POST['user_email']) && isset($_POST['user_message']))
    {
    	//ON DOIT ABSOLUMENT SE CONNECTER D'ABORD
    	$phpEx = substr(strrchr(__FILE__, '.'), 1);
    	require('../config.' . $phpEx);
    	require('../functions.' . $phpEx);
    	
    	// On crée une instance pour la classe MySQL
    	$mysql = new MySQL($sql_host, $sql_user, $sql_password, $sql_db);
    	$mysql->open(); //Connexion à la base de donnée
    	
    	$date = time();
    	//On protège nos variables
    	$ip = mysql_real_escape_string(htmlspecialchars($_POST['user_ip']));
    	$user = mysql_real_escape_string(htmlspecialchars($_POST['user_name']));
    	$email = mysql_real_escape_string(htmlspecialchars($_POST['user_email']));
    	$message = mysql_real_escape_string(htmlspecialchars($_POST['user_message']));
    	//Ensuite, on envoie le message
    	
    	mysql_query("INSERT INTO " . TABLE_PREFIX . "box VALUES('', '" . utf8_decode($user) . "', '" . utf8_decode($message) . "', '" . utf8_decode($email) . "', '" . $date . "', '" . $ip . "')");
    	
    	
    			echo '	<link href="../template/css/style.css" rel="stylesheet" type="text/css" />
    	<script type="text/javascript" src="../template/js/scrollbar.js"></script>
    	<div id="chatbox">
    	<div id="scrollholder" class="scrollholder">
    		<div id="scroll" class="scroll">';
    				$requete_box = mysql_query("SELECT id, utilisateur, message, email, timestamp FROM " . TABLE_PREFIX . "box ORDER BY id DESC LIMIT 0, 10");
    				while($box = mysql_fetch_array($requete_box))
    				{
    					// 10 sep 07, 00:50
    					// On détermine le mois
    					$_numero_mois = date('m', $box['timestamp']);
    					$_nom_mois = array('', 'Jan', 'Fév', 'Mars', 'Avr', 'Mai', 'Juin', 'Juil', 'Août', 'Sep', 'Oct', 'Nov', 'Déc');
    					$_mois = $_nom_mois[$_numero_mois];
    					
    					if ($box['id']%2 == 0)// Si l'id est pair
    					{
    						echo '<div style="background-color: #eeeeee; padding: 2px; width: 121px;">
    				<div style="font-size: 10px; text-align: right; padding-right: 3px; color:#b8b8b8;">' . date('d ', $box['timestamp']) . utf8_encode($_mois) . date(' Y, H:i', $box['timestamp']) . '</div>
    				<span style="padding-left: 3px; font-weight: bold; color:#b8b8b8;">Par ';
    						if ($box['email'] != '') //Si la personne a un adresse e-mail
    							echo '<span class="user_mail"><a href="mailto:' . utf8_encode(stripslashes($box['email'])) . '">' . utf8_encode(stripslashes($box['utilisateur'])) . '</a></span>';
    						else //Si la personne ne possède pas d'adresse email
    							echo utf8_encode(stripslashes($box['utilisateur']));
    						echo ' :</span>
    				<span style="padding-left: 3px; padding-bottom: 3px; color:#b8b8b8;">
    				' . utf8_encode(stripslashes($box['message'])) . '
    				</span>
    			</div>';
    					}
    					else // Si l'id est impair
    					{
    						echo '<div style="padding: 2px; width: 121px;">
    				<div style="font-size: 10px; text-align: right; padding-right: 3px; color:#b8b8b8;">' . date('d ', $box['timestamp']) . utf8_encode($_mois) . date(' Y, H:i', $box['timestamp']) . '</div>
    				<span style="padding-left: 3px; font-weight: bold; color:#b8b8b8;">Par ';
    						if ($box['email'] != '') //Si la personne a un adresse e-mail
    							echo '<span class="user_mail"><a href="mailto:' . utf8_encode(stripslashes($box['email'])) . '">' . utf8_encode(stripslashes($box['utilisateur'])) . '</a></span>';
    						else //Si la personne ne possède pas d'adresse email
    							echo utf8_encode(stripslashes($box['utilisateur']));
    						echo ' :</span>
    				<span style="padding-left: 3px; padding-bottom: 3px; color:#b8b8b8;">
    				' . utf8_encode(stripslashes($box['message'])) . '
    				</span>
    			</div>';
    					}
    				}
    			echo '		</div>
    	</div>
    	</div>
    	<script type="text/javascript">
        <!--
            ScrollLoad ("scrollholder", "scroll", true);
        //-->
        </script>';
    	
    	//Déconnexion de la base de donnée
    	$mysql->close();
    }
    else
    {
    ...Cette partie fonctionne et elle quasiment pareil que celle en haut pour la requête
    }
    ?>
    


    Comme vous pouvez le voir, j'ai essayé de réinclure mon code JS de la scrollbar et le css même si je ne crois pas que ça vienne de là et à la fin j'ai écris ma fonctione js

    <script type="text/javascript">
        <!--
            ScrollLoad ("scrollholder", "scroll", true);
        //-->
    </script>
    


    Voilà, je crois que vous avez assez de code pour m'aider..à moins que vous voulez aussi voir la page js qui recharge la chatbox avec XMLHttpRequest ?

    Sinon je sais pas si j'ai précisé, mais lors du chargement normal de la page au complet, la scrollbar apparait normalement, c'est seulement lorsqu'on envoi un message.

    Merci en avance de votre aide :)
    • Partager sur Facebook
    • Partager sur Twitter
      31 décembre 2008 à 23:32:03

      C'est parce que le php n'exécute pas la fonction js
      Donc en dessous de la fonction qui appelle ta chatbox, écris la fonction du scrollbar et ça devrait être bon..
      • Partager sur Facebook
      • Partager sur Twitter
        31 décembre 2008 à 23:47:11

        Miracle, ça fonctionne, un gros merci à toi :) J'arrive pas à croire que j'y ai pas pensé... :o
        • Partager sur Facebook
        • Partager sur Twitter

        Problème de scrollbar avec XMLHttpRequest et php

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown