Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/01/2012, 14:58
Avatar de geeck22
geeck22
 
Fecha de Ingreso: agosto-2010
Ubicación: Tijuana B.C.
Mensajes: 79
Antigüedad: 13 años, 8 meses
Puntos: 7
Pregunta Problema con Consulta Ajax con "where"(sql)

Buenas tardes, vengo de nuevo con una duda con la que espero me puedan ayudar :)

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>'
ajax.js
Código Javascript:
Ver original
  1. function objetoAjax(){
  2.     var xmlhttp=false;
  3.     try {
  4.         xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  5.     } catch (e) {
  6.         try {
  7.            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  8.         } catch (E) {
  9.             xmlhttp = false;
  10.         }
  11.     }
  12.  
  13.     if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
  14.         xmlhttp = new XMLHttpRequest();
  15.     }
  16.     return xmlhttp;
  17. }
  18. function enviarComentario(){
  19.     //donde se mostrará lo comentarioss
  20.     divResultado = document.getElementById('comentarios');
  21.     //valores de los inputs
  22.     id_post=document.nuevoComentario.id_post.value;
  23.     usuario=document.nuevoComentario.usuario.value;
  24.     comentario=document.nuevoComentario.comentario.value;
  25.     //instanciamos el objetoAjax
  26.     ajax=objetoAjax();
  27.     //uso del medotod POST
  28.     //archivo que realizará la operacion
  29.     ajax.open("POST", "http://xxxx.com/diseno/post.php?comentar",true);
  30.     ajax.onreadystatechange=function() {
  31.         if (ajax.readyState==4) {
  32.             //mostrar comentarioss en esta capa
  33.             divResultado.innerHTML = ajax.responseText
  34.             //llamar a funcion para limpiar los inputs
  35.             LimpiarCampos();
  36.         }
  37.     }
  38.     ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  39.     //enviando los valores
  40.     ajax.send("id_post="+id_post+"&usuario="+usuario+"&comentario="+comentario)
  41. }
  42. function LimpiarCampos(){
  43.     document.nuevoComentario.comentario.value="";
  44.     document.nuevoComentario.id_post.focus();
  45. }

post.php?comentar
Código PHP:
Ver original
  1. include("conexion-bd.php");
  2.     $id_post = $_POST['id_post'];
  3.     $usuario = $_POST['usuario'];
  4.     $comentario = $_POST['comentario'];
  5.     $sql="INSERT INTO comentarios (id, id_post, usuario, fecha, comentario) VALUES ('', '$id_post', '$usuario', CURDATE(), '$comentario')";
  6.     mysql_query($sql);
  7.     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>";
?>
este sistema funciona bien y me muestra los comentarios al insante al comentar, pero como utilizare este script para todas las variables de los post del blog debo de seleccionar los comentarios de cada post por su id asi que si agrego
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 :)

Última edición por geeck22; 26/01/2012 a las 16:18