Foros del Web » Programando para Internet » PHP »

Sistema de visitas

Estas en el tema de Sistema de visitas en el foro de PHP en Foros del Web. Hola forosdelweb He conseguido hacer que se muestren los datos de la base de datos pero me encuentro en un problema que no se como ...
  #1 (permalink)  
Antiguo 14/04/2012, 09:03
 
Fecha de Ingreso: diciembre-2011
Mensajes: 414
Antigüedad: 12 años, 4 meses
Puntos: 1
Sistema de visitas

Hola forosdelweb

He conseguido hacer que se muestren los datos de la base de datos pero me encuentro en un problema que no se como realizar-lo de acuerdo?

Estoy creando un sistema de comentarios y consigo mostrar los datos del comentarios de la siguiente manera

///Mostrar comentarios//
$sql = "SELECT * FROM comentarios ";
$query = mysql_query($sql,$con);
while( $row = mysql_fetch_assoc($query) ){
echo "Publicado por ".$row['id_usuario']."<br>";
echo "Comentarios:".$row['comentario']."<br><br>";
}

Esto funciona, se muestra el id del usuario y el comentario, mi problema viene dado a que cuando le doy a responder el comentario no se como configurar la base de datos para que se muestra cada respuesta en su comentarios correspondiente.

La base de datos la tengo pensada hacer asi

comentarios : id_comentario , id_usuario , comentario (var)
respuesta:id_respuesta, id_comentario2 ,id_user, respuesta (var)

el id_respuesta esta relacionado con el id_comentario asi que lo que pretendia era cambiar la consulta ...pero no se que parametros utilizar.

Última edición por kfh1992; 14/04/2012 a las 09:28
  #2 (permalink)  
Antiguo 14/04/2012, 10:15
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: Sistema de visitas

select repuesta.respuesta, comentarios.* from comentarios left join respuestas on respuestas.id_comentario2=comentarios.id_comentari o


si tienes cualquir duda, aqui estamos.
suerte!
  #3 (permalink)  
Antiguo 15/04/2012, 09:18
 
Fecha de Ingreso: diciembre-2011
Mensajes: 414
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: Sistema de visitas

seria de la misma manera mostrarlo?es que no entiendo esta consulta me la podrias explicar?
  #4 (permalink)  
Antiguo 15/04/2012, 11:01
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 8 meses
Puntos: 66
Respuesta: Sistema de visitas

Código PHP:
<?php
$sql 
"SELECT * FROM comentarios ";
$query mysql_query($sql,$con);
while( 
$row mysql_fetch_assoc($query) ){
  echo 
"Publicado por ".$row['id_usuario']."<br>";
  echo 
"Comentarios:".$row['comentario']."<br><br>";
  
$sql_res "SELECT * FROM respuesta where id  id_comentario2=$row['comentario']";
  
$query_res mysql_query($sql_res$con);
  while( 
$row_res mysql_fetch_assoc($query_res) ){
     
muestras aquí las respuestas
  
}
}
?>

saludos,
__________________
Tu álbum de cromos online!!
  #5 (permalink)  
Antiguo 15/04/2012, 14:37
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: Sistema de visitas

Tal como propone Santris es una manera facil de entender, pero fijate que, si hay 100 respuestas, su bucle va a llamar 100 veces al segundo select.
De esta otra, se soluciona con una sola llamada a la db.

si en lugar de comentarios.* pones comentarios.fecha, comentarios.comentario, comentarios.xxx...vas a mejorar aun mas el rendimiento.


Código PHP:
$sql "select repuesta.respuesta, comentarios.* from comentarios left join respuestas on respuestas.id_comentario2=comentarios.id_comentario";
$primeravez=1;
$query mysql_query($sql,$con);
while( 
$row mysql_fetch_assoc($query) ){
  if(
$primeravez==1){
    echo 
"Publicado por ".$row['id_usuario']."<br>";
    echo 
"Comentarios:".$row['comentario']."<br><br>";
    
$primeravez=0;
  }
  echo 
$row['nombre columna 1 de la tabla comentarios'];
  echo 
$row['nombre columna n de la tabla comentarios'];

salud!
  #6 (permalink)  
Antiguo 18/04/2012, 07:53
 
Fecha de Ingreso: diciembre-2011
Mensajes: 414
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: Sistema de visitas

este es mi codigo entero

<?php
include("config.php");
$sql = "SELECT * FROM comentarios ";
$query = mysql_query($sql,$con);
while( $row = mysql_fetch_assoc($query) ){
echo "Publicado por ".$row['id_usuario']."<br>";
echo "Comentarios:".$row['comentario']."<br><br>";
}
?>

Como podría agregar lo que me habeis ofrecido?
  #7 (permalink)  
Antiguo 18/04/2012, 08:29
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: Sistema de visitas

partiendo de

comentarios : id_comentario , id_usuario , comentario (var)
respuesta:id_respuesta, id_comentario2 ,id_user, respuesta (var)
Código PHP:
$sql "select repuesta.respuesta, comentarios.comentario,comentario.id_usuario from comentarios left join respuestas on respuestas.id_comentario2=comentarios.id_comentario"
$primeravez=1
$query mysql_query($sql,$con); 
while( 
$row mysql_fetch_assoc($query) ){ 
  if(
$primeravez==1){ 
    echo 
"Publicado por ".$row['id_usuario']."<br>"
    echo 
"Comentarios:".$row['comentario']."<br><br>"
    
$primeravez=0
  } 
  echo 
$row['respuesta']; 

  #8 (permalink)  
Antiguo 18/04/2012, 08:45
 
Fecha de Ingreso: diciembre-2011
Mensajes: 414
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: Sistema de visitas

Me sale este error


( ! ) Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\wamp\www\web\librovisitas.php on line 6

<?php
include("config.php");
$sql = "select repuesta.respuesta, comentarios.comentario,comentario.id_usuario from comentarios left join respuestas on respuestas.id_comentario2=comentarios.id_comentari o";
$primeravez=1;
$query = mysql_query($sql,$con);
while($row = mysql_fetch_assoc($query) ){
if($primeravez==1){
echo "Publicado por ".$row['id_usuario']."<br>";
echo "Comentarios:".$row['comentario']."<br><br>";
$primeravez=0;
}
echo $row['respuesta'];
}
?>

Será algo de la consulta?No hay error de código
  #9 (permalink)  
Antiguo 18/04/2012, 09:10
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: Sistema de visitas

Estoy teniendo problemas con mi pc... me inserta espacios al enviar!!!!
al final, de
$sql = "select repuesta.respuesta, comentarios.comentario,comentario.id_usuario from comentarios left join respuestas on respuestas.id_comentario2=comentarios.id_comentari o";

quita el penultimo espacio...
  #10 (permalink)  
Antiguo 18/04/2012, 09:15
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: Sistema de visitas

$sql = "select repuesta.respuesta, comentarios.comentario,comentario.id_usuario from comentarios left join respuesta on respuesta.id_comentario2=comentarios.id_comentario ";


tambnien habia un error en 'respuestas en lugar de 'respuesta'
  #11 (permalink)  
Antiguo 20/04/2012, 06:25
 
Fecha de Ingreso: diciembre-2011
Mensajes: 414
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: Sistema de visitas

me sigu edando un error en la misma linia

<?php
include("config.php");
$sql = "select repuesta.respuesta, comentarios.comentario,comentario.id_usuario from comentarios left join respuesta on respuesta.id_comentario2=comentarios.id_comentario ";
$primeravez=1;
$query = mysql_query($sql,$con);
while($row = mysql_fetch_assoc($query) ){
if($primeravez==1){
echo "Publicado por ".$row['id_usuario']."<br>";
echo "Comentarios:".$row['comentario']."<br><br>";
$primeravez=0;
}
echo $row['respuesta'];
}
?>


( ! ) Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\wamp\www\web\librovisitas.php on line 6
Call Stack

# Time Memory Function Location
1 0.0010 370944 {main}( ) ..\librovisitas.php:0
2 0.0074 378048 mysql_fetch_assoc ( ) ..\librovisitas.php:6

El config.php es de la siguiente manera

<?php
///Servidor local///
$server = "localhost";
///Nombre base de datos
// MySQL username to access the database with.
$db_user = "kfernandez";
//Contraseña administrador
$db_pass = "hermanos2";
//Seleccionar tabla
$table = "users";
$db_base = "web";
//Datos de conexión
$con = mysql_connect($server, $db_user, $db_pass)or die (mysql_error);
mysql_select_db("web");
?>
  #12 (permalink)  
Antiguo 20/04/2012, 08:19
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: Sistema de visitas

Código PHP:
<?php
include("config.php");
$sql "select respuesta.respuesta, comentarios.comentario,comentarios.id_usuario from comentarios left join respuesta on respuesta.id_comentario2=comentarios.id_comentario"
$primeravez=1
$query mysql_query($sql,$con); 
while(
$row mysql_fetch_assoc($query) ){ 
if(
$primeravez==1){ 
echo 
"Publicado por ".$row['id_usuario']."<br>"
echo 
"Comentarios:".$row['comentario']."<br><br>"
$primeravez=0

echo 
$row['respuesta']; 

?>
habia algun error de nombre de campos 'repuesta' y 'comentario' en lugar de 'comentarios'...
  #13 (permalink)  
Antiguo 21/04/2012, 15:12
 
Fecha de Ingreso: diciembre-2011
Mensajes: 414
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: Sistema de visitas

Ahora está bien el código pero creo que no está montado bien del todo

O sea de esta manera se muetra asi

http://img84.xooimage.com/files/1/8/...s1-33c61cf.jpg

Vale cuando hay diversas estados

http://img77.xooimage.com/files/5/a/...s2-33c6217.jpg (esto son los comentarios publicados)

Después procedemos a las respuestas

http://img84.xooimage.com/files/8/4/...s3-33c6251.jpg

Lo primero es que quiero mostrar TODOS los comentarios enviados :/ y luego que cada id_respuesta se situe en su lugar respectivo.

Lo entendeis?
  #14 (permalink)  
Antiguo 22/04/2012, 02:53
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: Sistema de visitas

Código PHP:
<?php 
include("config.php"); 
$sql "select respuesta.respuesta, comentarios.comentario,comentarios.id_usuario,comentarios.id as comentario_id from comentarios left join respuesta on respuesta.id_comentario2=comentarios.id_comentario";  
$query mysql_query($sql,$con);  
$ultimo_comentario_id="";
while(
$row mysql_fetch_assoc($query) ){  
    if(
$ultimo_comentario_id<>$row["comentario_id"]){  
        echo 
"Publicado por ".$row['id_usuario']."<br>";  
        echo 
"Comentarios:".$row['comentario']."<br><br>";  
        
$ultimo_comentario_id=$row["comentario_id"];  
    }  
    echo 
$row['respuesta'];  
}  
?>

a ver si hora te sirve...

Saludos!
  #15 (permalink)  
Antiguo 22/04/2012, 06:54
 
Fecha de Ingreso: diciembre-2011
Mensajes: 414
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: Sistema de visitas

Ahora no me sale absolutamente nada xd

el error es el mismo que el anterior

( ! ) Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\wamp\www\web\librovisitas.php on line 6
  #16 (permalink)  
Antiguo 22/04/2012, 08:22
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: Sistema de visitas

disculpa, pero escribo código sin poder testear. Sin embargo, son errores fácilmente detectables...(cometarios.id no existia, era comentarios.comentario_id)


Código PHP:

<?php 
include("config.php"); 
$sql "select respuesta.respuesta, comentarios.comentario,comentarios.id_usuario,comentarios.id_comentario from comentarios left join respuesta on respuesta.id_comentario2=comentarios.id_comentario";  
$query mysql_query($sql,$con);  
$ultimo_comentario_id="";
while(
$row mysql_fetch_assoc($query) ){  
    if(
$ultimo_comentario_id<>$row["comentario_id"]){  
        echo 
"Publicado por ".$row['id_usuario']."<br>";  
        echo 
"Comentarios:".$row['comentario']."<br><br>";  
        
$ultimo_comentario_id=$row["id_comentario"];  
    }  
    echo 
$row['respuesta'];  
}  
?>

Última edición por oscartt67; 22/04/2012 a las 08:25 Razón: aclaracion
  #17 (permalink)  
Antiguo 22/04/2012, 14:58
 
Fecha de Ingreso: diciembre-2011
Mensajes: 414
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: Sistema de visitas

No hace falta disculparte , una cosa a comentar, o sea creo que no se me entiende lo que quiero hacer, es que el comentario "Es un buen dia" , tenga de respuesta sus comentarios id_respuesta (que en teoria son 3) , de la manera que me das cada uno va desordenado.

http://img76.xooimage.com/files/1/7/...s4-33cf9e9.jpg
  #18 (permalink)  
Antiguo 23/04/2012, 02:30
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: Sistema de visitas

Al final de la select, añade order by comentarios.comentario
  #19 (permalink)  
Antiguo 23/04/2012, 07:15
 
Fecha de Ingreso: diciembre-2011
Mensajes: 414
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: Sistema de visitas

Y mira como se ve y lo que quiero decir xd, se que soy pesado pero nose porque razón no lo consigo sacar hacia delante.

La respuesta al comentario publicado por 1 "Es buen dia" tendría que tener lo siguiente

"hace un buen dia" "ya lo sabiamos" "vamos a la playa oh ohh ohh"

http://img80.xooimage.com/views/6/5/...6-33d3f0a.jpg/

Y mira como sale

La base de datos respuesta esta configurada así.

http://img77.xooimage.com/views/9/e/...7-33d4009.jpg/
  #20 (permalink)  
Antiguo 23/04/2012, 07:37
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: Sistema de visitas

Oye, hagamos una cosa. Reporta tal y como tienes el codigo ahora mismo. Yo llego a casa, creo la db como la tienes tu, te escribo el codigo correcto y testeado y te lo envio, ok?
Saludos! ..y tranki, que buscar una solucion no te hace pesado!
  #21 (permalink)  
Antiguo 23/04/2012, 08:04
 
Fecha de Ingreso: diciembre-2011
Mensajes: 414
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: Sistema de visitas

Aqui dejo la base de datos

sql.rar

http://kfernandez.comuf.com/duda/

Todo el codigo

<?php
include("config.php");
$sql = "select respuesta.respuesta, comentarios.comentario,comentarios.id_usuario,come ntarios.id_comentario from comentarios left join respuesta on respuesta.id_comentario2=comentarios.id_comentario order by comentarios.comentario";
$query = mysql_query($sql,$con);
$ultimo_comentario_id="";
while($row = mysql_fetch_assoc($query) ){
if($ultimo_comentario_id<>$row["id_comentario"]){
echo "Publicado por ".$row['id_usuario']."<br>";
echo "Comentarios:".$row['comentario']."<br><br>";
}
echo "Respuesta:".$row['respuesta']."<br><br>";
}
?>

y el config.php

<?php
///Servidor local///
$server = "localhost";
///Nombre base de datos
// MySQL username to access the database with.
$db_user = "kfernandez";
//Contraseña administrador
$db_pass = "hermanos2";
//Seleccionar tabla
$table = "users";
$db_base = "web";
//Datos de conexión
$con = mysql_connect($server, $db_user, $db_pass)or die (mysql_error);
mysql_select_db("web");
?>

Saludos!!
  #22 (permalink)  
Antiguo 23/04/2012, 09:16
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: Sistema de visitas

Código PHP:
$sql "select respuesta.respuesta, comentarios.comentario,comentarios.id_usuario,comentarios.id_comentario from comentarios left join respuesta on respuesta.id_comentario2=comentarios.id_comentario order by comentarios.id_comentario"
$query mysql_query($sql,$con); 
$ultimo_comentario_id="";
while(
$row mysql_fetch_assoc($query) ){ 
    if(
$ultimo_comentario_id<>$row["id_comentario"]){ 
        echo 
"Publicado por ".$row['id_usuario']."<br>"
        echo 
"Comentarios:".$row['comentario']."<br><br>";
        
$ultimo_comentario_id=$row["id_comentario"]; //<-no olvides esto!!!!! 
    

    echo 
"Respuesta:".$row['respuesta']."<br><br>";


Código testeado.

en los datos de la tabla respuesta, (en tu ejemplo), tienes
id_respuesta id_usr id_comentario2
2 15 1
2 8 2
3 10 3


esto, si las 2 primeras filas son respuestas al comentario 2, serian

1 15 2
2 8 2
3 10 3


tienes los valores de las columna id_respuesta y id_comentario2 al revés, entendiendo que respuesta.id_comentario2 se relaciona con comentarios.id_comentario.

Ya comentarás. Saludos.
  #23 (permalink)  
Antiguo 23/04/2012, 13:50
 
Fecha de Ingreso: diciembre-2011
Mensajes: 414
Antigüedad: 12 años, 4 meses
Puntos: 1
Respuesta: Sistema de visitas

Pues de esta manera sigue saliendo igual que antes ....tendría que cambiar lo que me has comentado?Lo que pasa es que no respeta nada del id_respuesta (que eso seria la respuesta al comentario)

Última edición por kfh1992; 23/04/2012 a las 14:11
  #24 (permalink)  
Antiguo 23/04/2012, 14:22
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: Sistema de visitas

si id_respuesta equivale a comentarios.id_comentario, cual es el id de respuesta?
y para que sirve respuesta.id_comentario2?

Etiquetas: mysql, sistema, sql, 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 05:11.