Bueno hace dias empece a trabajar en un nuevo proyecto tipo blog donde decidi que seria mas estetico insertar comentarios mediante ajax para no actualizar la pagina
consegui este script el cual adapte a mis necesidades
formulario para comentar:
Código PHP:
//<script language="JavaScript" type="text/javascript" src="http://xxxx.com/diseno/ajax.js"></script> (llamo el script ajax)
echo "
<form name=\"nuevoComentario\" action=\"\" onsubmit=\"enviarComentario(); return false\">
<h1>Deja tu Comentario:
<input name=\"id_post\" type=\"text\" value=\"$meme\" style=\"visibility:hidden;width:1px;height:1px;\"/>
<input name=\"usuario\" type=\"text\" value=\"$usuario\" style=\"visibility:hidden;width:1px;height:1px;\"/>
</h1>
<textarea name=\"comentario\" style=\"width:100%;\" rows=\"4\"></textarea>
<input type=\"submit\" name=\"Submit\" value=\" Comentar \" style=\"float:right;\" />
</form>
";
}
echo '<a name="comentarios"><div id="comentarios"></a>';
include('comentarios.php'); //aqui muestra los comentarios ya hechos
echo '</div>';
Código Javascript:
Ver original
function objetoAjax(){ var xmlhttp=false; try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlhttp = false; } } if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp = new XMLHttpRequest(); } return xmlhttp; } function enviarComentario(){ //donde se mostrará lo comentarioss divResultado = document.getElementById('comentarios'); //valores de los inputs id_post=document.nuevoComentario.id_post.value; usuario=document.nuevoComentario.usuario.value; comentario=document.nuevoComentario.comentario.value; //instanciamos el objetoAjax ajax=objetoAjax(); //uso del medotod POST //archivo que realizará la operacion ajax.open("POST", "http://xxxx.com/diseno/post.php?comentar",true); ajax.onreadystatechange=function() { if (ajax.readyState==4) { //mostrar comentarioss en esta capa divResultado.innerHTML = ajax.responseText //llamar a funcion para limpiar los inputs LimpiarCampos(); } } ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); //enviando los valores ajax.send("id_post="+id_post+"&usuario="+usuario+"&comentario="+comentario) } function LimpiarCampos(){ document.nuevoComentario.comentario.value=""; document.nuevoComentario.id_post.focus(); }
post.php?comentar
Código PHP:
Ver original
include("conexion-bd.php"); $id_post = $_POST['id_post']; $usuario = $_POST['usuario']; $comentario = $_POST['comentario']; $sql="INSERT INTO comentarios (id, id_post, usuario, fecha, comentario) VALUES ('', '$id_post', '$usuario', CURDATE(), '$comentario')"; include("comentarios.php");
comentarios.php
Código PHP:
<?php
$id_post = $_GET['meme'];
include("conexion-bd.php");
echo "
<table width=\"100%\">
<tr>
<td width=\"110px\"><b>Usuario</b></td><td align=\"center\"><b>Comentario</b></td>
</tr>";
$sql = mysql_query("SELECT * FROM comentarios ORDER BY id DESC");
while($dato = mysql_fetch_assoc($sql)){
$id_post = $dato['id_post'];
$usuario = $dato['usuario'];
$fecha = $dato['fecha'];
$comentario = $dato['comentario'];
$sql_1 = mysql_query("SELECT * FROM usuarios WHERE usuario = '$usuario'");
while($dato = mysql_fetch_assoc($sql_1)){
$avatar = $dato['avatar'];
$avatar_e = $dato['avatar_e'];
$avatar_e_10 = $dato['avatar_e_10'];
echo "
<tr valign=\"top\">
<td><center>$usuario</center><img src=\"$avatar\" width=\"98px\" height=\"112px\"></td><td><font size=\"3px\">$comentario</font></td>
</tr>
";
}}
echo "</table>";
?>
WHERE id_post = '$id_post'
en esta linea: $sql = mysql_query("SELECT * FROM comentarios ORDER BY id DESC");
quedaria algo asi: $sql = mysql_query("SELECT * FROM comentarios WHERE id_post = '$id_post' ORDER BY id DESC");
aqui es donde surge el problema, al comentar ya no aparecen los comentarios al instante como pasaba antes (se insertan correctamente en la base de datos pero no actualizan comentarios.php), pense en actualizar cada sierto tiempo comentarios.php pero me actualiza la pagina completa desde donde hago el include, ya no se que hacer por eso les pido ayuda, consejos, sugerencias o lo que tengan que decir porfavor.
Gracias y Buenas Tardes :)