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
![:-S](http://static.forosdelweb.com/fdwtheme/images/smilies/crap.png)
Gracias y Buenas Tardes :)