Foros del Web » Programando para Internet » PHP »

Ayuda con mi chat con mysql y ajax . La bd no se actualiza

Estas en el tema de Ayuda con mi chat con mysql y ajax . La bd no se actualiza en el foro de PHP en Foros del Web. hola. buen dia espero que me puedan ayudar. estoy haciendo un minichat con jquery, mysql y php y tengo problemas al actualizar la bd. El ...
  #1 (permalink)  
Antiguo 16/12/2010, 11:28
 
Fecha de Ingreso: noviembre-2010
Ubicación: Barranca
Mensajes: 41
Antigüedad: 13 años, 5 meses
Puntos: 1
Ayuda con mi chat con mysql y ajax . La bd no se actualiza

hola. buen dia espero que me puedan ayudar.
estoy haciendo un minichat con jquery, mysql y php y tengo problemas al actualizar la bd.


El problema esta en lo siguiente.:

cuando yo añado un nuevo mensaje a la tabla mensajes. esta se añade pero al intentar recuperarla en ese mismo momento , no puedo recuperarla, porque si se añade a la base de datos pero no puedo recuperarla desde mi codigo php.



.. kiero actualizar el Div con Id chat.. llamando cada minuto a la base de datos
y recuperar el ultimo mensaje añadido a la tabla.



aki adjunto las fuentes para k me puedan ayudar,



index.html


<html>
<head><title>Chat Logeo</title></head>
<body>
<form action = "chat.php" method = "POST">
Usuario : <input type = "text" name = "username">
<input type = "submit" value = "Login">
</form>
</body>
</html>




chat.php

<?php
session_start();
session_register("user");


$_SESSION['user'] = $_POST['username'];

$user = $_SESSION['user'];
?>


<html>
<head><title><?php echo $user; ?> - Chateando</title>
<script type = "text/javascript" src = "jquery.js"></script>

<script type = "text/javascript">

function addMensaje(){

//$('#chat').load('add.php?messagetext=hola');

$.post('add.php',
$('#chatmessage').serialize(),
function(data){
// $('#chat').html(data);
});


}

function getMensajes(){


$.get('mensajes.php', function(dato){
$('#chat').html(dato);
});

window.setTimeout(getMensajes, 1000);
}



</script>

</head>

<body>

<div id = "chat" style = "height: 200px; overflow:auto;">
</div>

<form id= "chatmessage">
<textarea name = "message" id = "messagetext">
</textarea>
</form>

<input type = "button" value = "enviar" onclick = "addMensaje();">

<script type = "text/javascript">


$(document).ready(function(){



getMensajes();

});


</script>


</body>
</html>




add.php


<?php
session_start();
$conn = mysql_connect("localhost","root","");
mysql_select_db("chatbd",$conn);


$msj = $_POST["message"];
$user = $_SESSION["user"];

echo $user . " dice: " . $msj;


$sql = "insert into messages(user, message) values('$user', '$msj')";

mysql_query($sql, $conn);



?>




mensajes.php


<?php

$conn = mysql_connect("localhost","root","");
mysql_select_db("chatbd",$conn);

$rst = mysql_query("select * from messages", $conn);

$num = mysql_num_rows($rst);

$salida = "";

if($num > 0)
{
for($i = 0 ; $i < $num; $i++)
{
$salida .= mysql_result($rst, $i, 1) . " dice : " . mysql_result($rst, $i, 2) . "<br/>";

}


}


echo $salida;



?>
  #2 (permalink)  
Antiguo 04/07/2011, 10:28
Avatar de Melecio  
Fecha de Ingreso: julio-2011
Ubicación: Coahuila
Mensajes: 320
Antigüedad: 12 años, 9 meses
Puntos: 8
Respuesta: Ayuda con mi chat con mysql y ajax . La bd no se actualiza

pues hay tienes le cambie el codigo para mostrar y enviar datos del chat

use ajax para esto pruebalo aber que tal






index.html
-----------------------------
<html>
<head><title>Chat Logeo</title></head>
<body>
<form action = "chat.php" method = "POST">
Usuario : <input type = "text" name = "username">
<input type = "submit" value = "Login">
</form>
</body>
</html>


add.php
------------------------------------------------------------
<?php
session_start();
$conn = mysql_connect("localhost","root","");
mysql_select_db("chatbd",$conn);
$msj = $_GET["message"];
$user = $_SESSION["user"];
echo $user . " dice: " . $msj;
$sql = "insert into messages(user, message) values('$user', '$msj')";


mysql_query($sql, $conn);
?>



mensajes.php
--------------------------------------------------------------
<?php

$conn = mysql_connect("localhost","root","");
mysql_select_db("chatbd",$conn);

$rst = mysql_query("select * from messages", $conn);





$num = mysql_num_rows($rst);

$salida = "";

if($num > 0)
{
for($i = 0 ; $i < $num; $i++)
{
$salida .= mysql_result($rst, $i, 1) . " dice : " . mysql_result($rst, $i, 2) . "<br/>";

}


}


echo $salida;



?>


chat.php
--------------------------------------------
<?php
session_start();
session_register("user");


$_SESSION['user'] = $_POST['username'];

$user = $_SESSION['user'];
?>


<html>
<head><title><?php echo $user; ?> - Chateando</title>
<script type="text/javascript">

function getXMLHTTPRequest() {
try {
req = new XMLHttpRequest();
} catch(err1) {
try {
req = new ActiveXObject("Msxml2.XMLHTTP");
} catch (err2) {
try {
req = new ActiveXObject("Microsoft.XMLHTTP");
} catch (err3) {
req = false;
}
}
}
return req;
}

var http = getXMLHTTPRequest();

function getstatussubestaciones() {
var myurl = 'mensajes.php';
myRand = parseInt(Math.random()*999999999999999);
var modurl = myurl+"?rand="+myRand;
http.open("GET", modurl, true);
http.onreadystatechange = useHttpResponse;
http.send(null);
}


function useHttpResponse() {
if (http.readyState == 4) {

if(http.status == 200) {


var mensaje = http.responseText;



document.getElementById('chat').innerHTML = mensaje;




setTimeout('getstatussubestaciones()', 1000);

}
} else {

}
}
</script>

<script type="text/javascript">
function getXMLHTTPRequest() {
try {
req = new XMLHttpRequest();
} catch(err1) {
try {
req = new ActiveXObject("Msxml2.XMLHTTP");
} catch (err2) {
try {
req = new ActiveXObject("Microsoft.XMLHTTP");
} catch (err3) {
req = false;
}
}
}
return req;
}

var http = getXMLHTTPRequest();

function proceso() {

name = encodeURIComponent(document.getElementById("messag e").value);
// ejecuta la página inicio.php desde el servidor
http.open("POST", "add.php?message=" + name, true);
// define la función para manejar las respuestas del servidor

// haz la petición al servidor
http.send(null);
getstatussubestaciones();


}

</script>



<script type="text/javascript">
function pulsar(e) {
tecla = (document.all) ? e.keyCode : e.which;
if (tecla==13) {
proceso();
}
}
</script>


<link href="c.css" rel="stylesheet" type="text/css">
</head>

<body onLoad="getstatussubestaciones()">

<div id = "chat" style = "height: 200px; overflow:auto;">
</div>

<div align="center"></div>
<label>
<input type="text" name="message" id="message" onkeypress = "pulsar(event)" >
</label>
<label>
<input type="button" name="button" id="button" value="Bot&oacute;n" onClick="proceso()">
</label>
<p align="center">&nbsp;</p>
</body>
</html>
  #3 (permalink)  
Antiguo 04/07/2011, 10:31
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Ayuda con mi chat con mysql y ajax . La bd no se actualiza

la opción de @melecio es válida, pero no la más eficiente, lo ideal sería expirar la caché desde php:

Código PHP:
Ver original
  1. header( "Expires: Mon, 26 Jul 1997 05:00:00 GMT" );  // disable IE caching
  2. header( "Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . " GMT" );
  3. header( "Cache-Control: no-cache, must-revalidate" );
  4. header( "Pragma: no-cache" );

PD: favor usar la herramienta Highlight del foro
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #4 (permalink)  
Antiguo 04/07/2011, 13:16
Avatar de Melecio  
Fecha de Ingreso: julio-2011
Ubicación: Coahuila
Mensajes: 320
Antigüedad: 12 años, 9 meses
Puntos: 8
Respuesta: Ayuda con mi chat con mysql y ajax . La bd no se actualiza

para que expirar el cache?
esto lograra devolver el dato sin cambiar de url no lo entiendo
  #5 (permalink)  
Antiguo 05/07/2011, 07:48
Avatar de Melecio  
Fecha de Ingreso: julio-2011
Ubicación: Coahuila
Mensajes: 320
Antigüedad: 12 años, 9 meses
Puntos: 8
Respuesta: Ayuda con mi chat con mysql y ajax . La bd no se actualiza

Cita:
Iniciado por maycolalvarez Ver Mensaje
la opción de @melecio es válida, pero no la más eficiente, lo ideal sería expirar la caché desde php:

Código PHP:
Ver original
  1. header( "Expires: Mon, 26 Jul 1997 05:00:00 GMT" );  // disable IE caching
  2. header( "Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . " GMT" );
  3. header( "Cache-Control: no-cache, must-revalidate" );
  4. header( "Pragma: no-cache" );

PD: favor usar la herramienta Highlight del foro
y con estas 4 lineas que donde van o que
  #6 (permalink)  
Antiguo 05/07/2011, 09:01
Avatar de io_web  
Fecha de Ingreso: junio-2011
Mensajes: 57
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Ayuda con mi chat con mysql y ajax . La bd no se actualiza

Estoy utilizando php en dreamweaver y la propuesta de melecio es genial me ayudo mucho ya que el codigo esta muy bien colocado solo cambiar variables y listo, muchas gracias melecio.
__________________
"Sabio es aquel que tiene sabiduría, Pero también es aquel que acepta la corrección"
  #7 (permalink)  
Antiguo 05/07/2011, 09:18
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Ayuda con mi chat con mysql y ajax . La bd no se actualiza

Cita:
Iniciado por Melecio Ver Mensaje
para que expirar el cache?
esto lograra devolver el dato sin cambiar de url no lo entiendo
exactamente.

Cita:
Iniciado por Melecio Ver Mensaje
y con estas 4 lineas que donde van o que
antes de devolver la respuesta en caso de peticiones XMLHttpRequest (AJAX)

es más eficiente porque ya se le indica al navegador que no cacheé la respuesta, y así el mismo no almacena miles de URL's, mejorando el uso de memoria en el cliente.

bueno, usar el parámetro fantasma es factible, pero si se puede expirar la caché mejor.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #8 (permalink)  
Antiguo 22/07/2011, 13:34
Avatar de Melecio  
Fecha de Ingreso: julio-2011
Ubicación: Coahuila
Mensajes: 320
Antigüedad: 12 años, 9 meses
Puntos: 8
Respuesta: Ayuda con mi chat con mysql y ajax . La bd no se actualiza

ok ya esta

Etiquetas: ajax, chat, coneccion, jquery, mysql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 22:41.