Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/09/2013, 17:03
Federicoa
 
Fecha de Ingreso: marzo-2013
Mensajes: 32
Antigüedad: 11 años, 2 meses
Puntos: 0
Problemas mostrar resultados con AJAX Long Polling

Hola que tal. Hago este tema por que estoy practicando algo de AJAX Long Polling, estoy utilizando un script que saqué del tema creado por Patkoala (http://www.forosdelweb.com/f13/aporte-chat-basico-con-ajax-long-polling-958530/ )

Lo que estoy intentando implementar es un chat pero en lugar de utilizarlo con un documento .txt hacerlo con base de datos MySQL. El problema que estoy teniendo es que no se MUESTRAN los datos. Se insertan correctamente en la tabla pero luego no los puedo mostrar, aca les dejo los archivos:

muestra.php : El archivo que teóricamente debería mostrar lo que se extrajo de la base de datos.


Código PHP:

<?php 
$link
=mysql_connect("localhost""root""");
mysql_select_db("prueba",$link) OR DIE ("Error: No es posible establecer la conexión");

set_time_limit(0); 
//$fpa = fopen("content.txt","r"); 
//$fpa = fgets($fpa); 
$sql "SELECT * FROM chat";
$ejecutar mysql_query($sql$link);
while (
$row mysql_fetch_row($ejecutar)){
        
$id$row[3];
    }
while(
1){
    
//$fp = fopen("content.txt","r"); 
    //$fp = fgets($fp);
    
$sql1 "SELECT * FROM chat";
    
$ejecutar1 mysql_query($sql1$link); 
    while (
$row1mysql_fetch_row($ejecutar1)){
        if (
$row1[3] > $id){
            echo 
"<strong>$row1[0]</strong> dijo: $row1[1]"
            
            break; 
        }
    
    }    
    
sleep(1);


?>
introducir.php : Este archivo introduce los datos en la tabla MySQL (Funciona correctamente hasta donde pude probar)

Código PHP:

<?php 
$link
=mysql_connect("localhost""root""");
mysql_select_db("prueba",$link) OR DIE ("Error: No es posible establecer la conexión");
//$fp = fopen("content.txt","w"); 
$valor $_POST['value']; 
$nombre ucfirst($_POST['nom']);
$insert "INSERT INTO chat (nombre, mensaje, time, id) VALUES ('$nombre', '$valor', '' , '') ";
mysql_query($insert$link);
//$valor = "<b>".$nombre."</b> : ".$valor; 
//fwrite($fp,$valor); 

?>

Y por último

index.php : Archivo que contiene el script de ajax donde deberían mostrarse los mensajes enviados por los usuarios y el textarea para enviar nuevos mensajes

Código PHP:

<?php 
$link
=mysql_connect("localhost""root""");
mysql_select_db("prueba",$link) OR DIE ("Error: No es posible establecer la conexión");
?>
<html>
<head>
    <script type="text/javascript">
        nombre = prompt("Introduce tu nombre");
        function xhr(){
            if(window.XMLHttpRequest){
                return new XMLHttpRequest();
            } else if(window.ActiveXObject){
                return new ActiveXObject("Microsoft.XMLHTTP");
            }
        }
        function mostrar(){
            var peticion = xhr();
            peticion.onreadystatechange = function () {
                if(peticion.readyState == 4){ 
                    var detalles = document.getElementById("cont");
                    /* objDatos = eval("(" + cadCodificadaJSON + ")"); */
                    detalles.innerHTML= peticion.responseText;
                    setTimeout("mostrar()",1000);
                }
            }
            peticion.open("POST","index.php",true);
            peticion.send(null);
        }
        function crearquery(){
            var texto = document.getElementsByTagName('textarea')[0].value;
            var salida = "value=" + encodeURIComponent(texto) + "&nom=" + encodeURIComponent(nombre);
            return salida;
        }
        function cambia(){
            var peticion = xhr();
            peticion.open("POST","introducir.php",true);
            peticion.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
            var query = crearquery();
            peticion.send(query);
            document.getElementsByTagName('textarea')[0].value = '';
        }
        window.onload = mostrar;
    </script>
</head>
<body>
    <textarea></textarea><br>
         <button onclick="cambia();">Enviar</button>
    <div id="cont"></div>
</body>
</html>

Bueno espero que hayan entendido el problema y puedan ayudarme.

Muchas gracias de antemano y saludos para todos.