Foros del Web » Programando para Internet » PHP »

Problema con Consulta Ajax con "where"(sql)

Estas en el tema de Problema con Consulta Ajax con "where"(sql) en el foro de PHP en Foros del Web. Buenas tardes, vengo de nuevo con una duda con la que espero me puedan ayudar :) Bueno hace dias empece a trabajar en un nuevo ...
  #1 (permalink)  
Antiguo 26/01/2012, 14:58
Avatar de geeck22  
Fecha de Ingreso: agosto-2010
Ubicación: Tijuana B.C.
Mensajes: 79
Antigüedad: 13 años, 7 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
  #2 (permalink)  
Antiguo 26/01/2012, 17:38
Avatar de cfranco  
Fecha de Ingreso: enero-2008
Ubicación: Barcelona - España
Mensajes: 182
Antigüedad: 16 años, 2 meses
Puntos: 6
Respuesta: Problema con Consulta Ajax con "where"(sql)

Creo que tu error esta aquí:
Código PHP:
echo '<a name="comentarios"><div id="comentarios"></a>';
        include(
'comentarios.php'); //aqui muestra los comentarios ya hechos
        
echo '</div>'
Y Pienso que puede ser así:
Código PHP:
echo '<a name="comentarios"><div id="comentarios">';
        include(
'comentarios.php'); //aqui muestra los comentarios ya hechos
        
echo '</div></a>'
La etiqueta <a> no está bien colocada, ya nos dirás si es ese el error.
__________________
Salud y Éxitos
PFI Tube
  #3 (permalink)  
Antiguo 26/01/2012, 17:56
Avatar de geeck22  
Fecha de Ingreso: agosto-2010
Ubicación: Tijuana B.C.
Mensajes: 79
Antigüedad: 13 años, 7 meses
Puntos: 7
Respuesta: Problema con Consulta Ajax con "where"(sql)

Cita:
Iniciado por cfranco Ver Mensaje
Creo que tu error esta aquí:
Código PHP:
echo '<a name="comentarios"><div id="comentarios"></a>';
        include(
'comentarios.php'); //aqui muestra los comentarios ya hechos
        
echo '</div>'
Y Pienso que puede ser así:
Código PHP:
echo '<a name="comentarios"><div id="comentarios">';
        include(
'comentarios.php'); //aqui muestra los comentarios ya hechos
        
echo '</div></a>'
La etiqueta <a> no está bien colocada, ya nos dirás si es ese el error.
gracias por contestar :),

ya modifique la linea que me dijiste pero el problema persiste, yo creo que el problema esta en comentarios.php o ajax.js
__________________
Si te ayudo mi respuesta, dale clic en "Me gustó, ¡gracias!", nada te cuesta :)
  #4 (permalink)  
Antiguo 26/01/2012, 18:28
Avatar de cfranco  
Fecha de Ingreso: enero-2008
Ubicación: Barcelona - España
Mensajes: 182
Antigüedad: 16 años, 2 meses
Puntos: 6
Respuesta: Problema con Consulta Ajax con "where"(sql)

Cuando la primera vez instancias a <div id="comentarios"> funciona, pero la segunda vez este valor ya está utilizado y cuando llamas a la función se ejecuta pero no encuentra el div.

Se me ocurre que cada vez que vayas guardándolo vayas creando otro div con un identificador que podría ser el id_post y así sabrías instanciar a un div específico.
__________________
Salud y Éxitos
PFI Tube
  #5 (permalink)  
Antiguo 26/01/2012, 18:34
Avatar de geeck22  
Fecha de Ingreso: agosto-2010
Ubicación: Tijuana B.C.
Mensajes: 79
Antigüedad: 13 años, 7 meses
Puntos: 7
Respuesta: Problema con Consulta Ajax con "where"(sql)

es buena idea, aunque ya me di cuenta porque no muestra los comentarios despues de comentar, el error es que dentro de post.php (formulario para comentar) esta llamando como include a comentarios.php (donde se hace la consulta) asi que $id_post = $_GET['meme']; no genera nada porque no tiene ningun tipo de variable (comentarios.php), asi que lo que debo hacer es mover comentarios.php dentro de post.php para que detecte el id o darle explode a la url para sacar el id en comentarios.php (es confuso pero ya estoy por solucionarlo)

Gracias por responder, cuando lo tenga listo editare el post por si a alguien le sirve despues
__________________
Si te ayudo mi respuesta, dale clic en "Me gustó, ¡gracias!", nada te cuesta :)
  #6 (permalink)  
Antiguo 26/01/2012, 19:21
Avatar de geeck22  
Fecha de Ingreso: agosto-2010
Ubicación: Tijuana B.C.
Mensajes: 79
Antigüedad: 13 años, 7 meses
Puntos: 7
Respuesta: Problema con Consulta Ajax con "where"(sql)

batalle tantas horas para que la respuesta fuera asi de simple como agregar esta linea al principio de comentarios.php

Código PHP:
Ver original
  1. $sqlurl = mysql_query("SELECT * FROM comentarios");
  2. while($datos = mysql_fetch_assoc($sqlurl)){$id_post = $datos['id_post'];}
__________________
Si te ayudo mi respuesta, dale clic en "Me gustó, ¡gracias!", nada te cuesta :)
  #7 (permalink)  
Antiguo 26/01/2012, 19:23
Avatar de geeck22  
Fecha de Ingreso: agosto-2010
Ubicación: Tijuana B.C.
Mensajes: 79
Antigüedad: 13 años, 7 meses
Puntos: 7
Respuesta: Problema con Consulta Ajax con "where"(sql)

para los que les pueda interesar esta fue la SOLUCION:

comentarios.php
Código PHP:
Ver original
  1. <?php
  2. $sqlurl = mysql_query("SELECT * FROM comentarios");
  3. while($datos = mysql_fetch_assoc($sqlurl)){$id_post = $datos['id_post'];}
  4. include("conexion-bd.php");
  5. echo "
  6. <table width=\"100%\">
  7. <tr>
  8. <td width=\"110px\"><b>Usuario</b></td><td align=\"center\"><b>Comentario</b></td>
  9. </tr>";
  10. $sql = mysql_query("SELECT * FROM comentarios WHERE id_post = '$id_post' ORDER BY id DESC");
  11. while($dato = mysql_fetch_assoc($sql)){
  12. $id_post = $dato['id_post'];
  13. $usuario = $dato['usuario'];
  14. $fecha = $dato['fecha'];
  15. $comentario = $dato['comentario'];
  16. $sql_1 = mysql_query("SELECT * FROM usuarios WHERE usuario = '$usuario'");
  17. while($dato = mysql_fetch_assoc($sql_1)){
  18. $avatar = $dato['avatar'];
  19. $avatar_e = $dato['avatar_e'];
  20. $avatar_e_10 = $dato['avatar_e_10'];
  21. echo "
  22. <tr valign=\"top\">
  23. <td><center>$usuario</center><img src=\"$avatar\" width=\"98px\" height=\"112px\"></td><td><font size=\"3px\">$comentario</font></td>
  24. </tr>
  25. ";
  26. }}
  27. echo "</table>";
  28. ?>
es tonto xD pero todos tienen momentos de tontes aveces :P

Gracias por tener las ganas de ayudar ForosDelWeb! :)
__________________
Si te ayudo mi respuesta, dale clic en "Me gustó, ¡gracias!", nada te cuesta :)
  #8 (permalink)  
Antiguo 26/01/2012, 19:26
Avatar de cfranco  
Fecha de Ingreso: enero-2008
Ubicación: Barcelona - España
Mensajes: 182
Antigüedad: 16 años, 2 meses
Puntos: 6
Respuesta: Problema con Consulta Ajax con "where"(sql)

Lo importante es que pudiste dar con la solución, bien hecho!
__________________
Salud y Éxitos
PFI Tube

Etiquetas: ajax, formulario, html, mysql, sql, variables, usuarios
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:13.