Bienvenido a datoweb.com!! En este foro podrás encontrar ayuda sobre diseño y desarrollo web en general. Si quieres formar parte de esta comunidad para pedir ayuda o colaborar ayudando a otros usuarios del foro solo tienes que registrarte desde el siguiente enlace: Registrarse en el Foro

Sacar comentarios sin leer al iniciar sesion.

Hola a tod@s.
Ya estoy enganxao otra vez con las malditas consultas. A ver si las subo paso a paso y alguien me puede decir que estoy haciendo mal que seguro que si.

Hago la función:
//Sacar la cantidad de comentarios de cada post sin leer
function comentarios_no_leidos($id_del_comentario) { //Aqui le pasamos la id del post

	
	global $database_conexionwebpaqui, $conexionwebpaqui;
	mysql_select_db($database_conexionwebpaqui, $conexionwebpaqui);
	$query_DatosCom = sprintf("SELECT * FROM comentarios WHERE idpost = %s AND estado =0", $id_del_comentario, "int");
	$DatosCom= mysql_query($query_DatosCom, $conexionwebpaqui) or die(mysql_error());
	$row_DatosCom = mysql_fetch_assoc($DatosCom);
	$totalRows_DatosCom = mysql_num_rows($DatosCom);
	
	if ($totalRows_DatosCom>0) return true;
	else
	return false;

	mysql_free_result($DatosCom);
}
	
Hago la consulta:
mysql_select_db($database_conexionwebpaqui, $conexionwebpaqui);
			$query_ContarComentariosNuevos = "SELECT * FROM comentarios WHERE comentarios.estado = 0";
			$ContarComentariosNuevos = mysql_query($query_ContarComentariosNuevos, $conexionwebpaqui) or die(mysql_error());
			$row_ContarComentariosNuevos = mysql_fetch_assoc($ContarComentariosNuevos);
			$totalRows_ContarComentariosNuevos = mysql_num_rows($ContarComentariosNuevos);
Y le paso las condicionales (1) para que no me tire un error al desconectar (2) si el usuario no es el mismo que el que tiene la sesión iniciada no me lo enseñe
 <?php if (isset ($_SESSION['MM_Id'])){ ?>
                                      
                                      
                                      <?php if ($row_ContarComentariosNuevos['autor'] == $_SESSION['MM_Id']){;?>
                                      
					                  <span class="comments-span">
				                      <i class="fa fa-lg fa-bell"></i>
				                      <a href="../user/notificaciones.php?recordID=<?php echo $row_SacarPosts['id']; ?>"><?php echo comentarios_no_leidos($row_ContarComentariosNuevos['idpost']); ?> Nuevos</a>
				                      </span>
                                      
                                     <?php  }?>
                                     
                                      <?php  }?>
Bueno creo que ya esta todo. A ver si alguien me puede decir que estoy haciendo mal.

Gracias
5
Puntos
1266
Visitas
9
Resp
Por salva hace 110 meses
Principiante
Respuesta #1
Hola cuentanos exactamente q quiered hacer para que tengamos una idea mas clara ahora q sabemos como tienes el codigo Saludos
0
Puntos
Por alber hace 110 meses
Administrador
Respuesta #2
Buenos días Alber. Bufff. Creia que solo yo estaba hasta tarde pegándole al código.
Disculpa, pero estaba tan mareado que no te puse la explicación.
Pues lo que pretendo es que cuando un usuario entre y se loguee le muestre la cantidad de comentarios nuevos que tiene en el post que el ha creado
0
Puntos
Por salva hace 110 meses
Principiante
Respuesta #3
hola buenaasss en la función tienes que pasarte la id del comentario la idpost ya no te sirve, imagina que lo que quieres hacer es que cuando el usuario tenga notificaciones sin leer vea algun indicativo
function comentarios_no_leidos($id_del_comentario) { //Aqui le pasamos la id del comentario

	
	global $database_conexionwebpaqui, $conexionwebpaqui;
	mysql_select_db($database_conexionwebpaqui, $conexionwebpaqui);
	$query_DatosCom = sprintf("SELECT * FROM comentarios WHERE IDCOMENTARIO = %s AND estado =0 AND AUTOR=%s",
	
	//ID del comentario
	$id_del_comentario, "int",
	//ID del autor
	$_SESSION['MM_Id'], "int");
	 
	$DatosCom= mysql_query($query_DatosCom, $conexionwebpaqui) or die(mysql_error());
	$row_DatosCom = mysql_fetch_assoc($DatosCom);
	$totalRows_DatosCom = mysql_num_rows($DatosCom);
	
	if ($totalRows_DatosCom>0) return true;
	else
	return false;

	mysql_free_result($DatosCom);
}
como ves en la función tampoco esta mal que le pases el autor pero lo mas importante es la id del comentario prueba y nos comentas ;)
0
Puntos
Por alber hace 110 meses
Administrador
Respuesta #4
Hola Alber, gracias por tu pronta respuesta.
Tan solo he cambiado la función y la he dejado asi.
//Sacar la cantidad de comentarios de cada post sin leer
function comentarios_no_leidos($id_del_comentario) { //Aqui le pasamos la id del comentario

	
	global $database_conexionwebpaqui, $conexionwebpaqui;
	mysql_select_db($database_conexionwebpaqui, $conexionwebpaqui);
	$query_DatosCom = sprintf("SELECT * FROM comentarios WHERE estado =0 AND idcomentario = %s",
	
	//ID del comentario
	GetSQLValueString ($id_del_comentario, "int"));// Aqui le he puesto el ValueString porque daba un error
	 
	$DatosCom= mysql_query($query_DatosCom, $conexionwebpaqui) or die(mysql_error());
	$row_DatosCom = mysql_fetch_assoc($DatosCom);
	$totalRows_DatosCom = mysql_num_rows($DatosCom);
	
	if ($totalRows_DatosCom>0) return true;
	else
	return false;

	mysql_free_result($DatosCom);
}
Tengo cuatro usuarios creados. 2 que suben posts y que comentan, 1 que solo comenta y 1 que ni sube posts ni comenta.

Pues bien, tal y como esta ahora, cuando me conecto con cualquiera de los 2 que suben posts y tienen comentarios por leer(ambos) no me saca ni el aviso de mensajes (una campanita) ni el total de ellos, o sea, que no me muestra la región.

Si me conecto con el que solo comenta y hago un comentario nuevo si que me saca el aviso de que tiene comentarios nuevos pero no la cantidad, pero el no es el creador del post.
0
Puntos
Por salva hace 110 meses
Principiante
Respuesta #5
ok yo la funcion la haría asi
//Sacar la cantidad de comentarios de cada post sin leer
function comentarios_no_leidos($id_del_comentario) { //Aqui le pasamos la id del comentario

	
	global $database_conexionwebpaqui, $conexionwebpaqui;
	mysql_select_db($database_conexionwebpaqui, $conexionwebpaqui);
	$query_DatosCom = sprintf("SELECT * FROM comentarios WHERE estado =0 AND idcomentario = %s",
	
	//ID del comentario
	GetSQLValueString ($id_del_comentario, "int"));// Aqui le he puesto el ValueString porque daba un error
	 
	$DatosCom= mysql_query($query_DatosCom, $conexionwebpaqui) or die(mysql_error());
	$row_DatosCom = mysql_fetch_assoc($DatosCom);
	$totalRows_DatosCom = mysql_num_rows($DatosCom);
	

	//Obtenemos el total directamente
	return $totalRows_DatosCom;
	mysql_free_result($DatosCom);
}
y la notificación así
<?php if (isset ($_SESSION['MM_Id']) && comentarios_no_leidos($id_del_comentario)>0){// Aqui compribamos si hay notificaciones{ ?>
                                      
                                      
					                  <span class="comments-span">
				                      <i class="fa fa-lg fa-bell"></i>
				                      <a href="../user/notificaciones.php?recordID=<?php echo $row_SacarPosts['id']; ?>"><?php echo comentarios_no_leidos($id_del_comentario) ?> Nuevos</a>
				                      </span>
                                      
                                 
                                      <?php  }?>
ya tienes una idea mas, el tema de las notificaciones es complejo.. saludos
0
Puntos
Por alber hace 110 meses
Administrador
Respuesta #6
Buf, Y tan complejo. Esta noche mi cabeza no paraba de darle vueltas al asunto y ahora mismo llevo todo el día haciendo pruebas y nada. Bueno algo si he conseguido. Se que estoy cerca pero se me escapa algo.
Te digo lo que he hecho.
Me he saltado el paso de ir a notificaciones.php y luego tener que saltar a mis_posts.php ya que el usuario cuando se loguea en el index.php tiene 2 opciones de ver los comentarios del post. 1ª- entrando por el post y 2ª- entrando por las notificaciones por lo tanto entrando por una como por la otra siempre se tendrían que actualizar las 2 tablas(notifica y comentarios) por lo tanto me apaño con solo la de notificaciones y le hago el update cuando entro a ver_post.php entre por donde entre.
He conseguido que solo me muestre la región de las notificaciones de nuevos comentarios al usuario logueado y en los posts que el haya subido. Le he puesto el "return" a la función para que me devuelva "0" si no tiene comentarios,
Pero no hay manera de que me cuente los nuevos comentarios, o sea, los que están en estado "0", siempre me saca que hay 1 nuevo.

Y digo yo. No seria conveniente sacar la Id del post en la función "NotificacionesPendiente" ???
Como podría sacarla?
Saludos,
0
Puntos
Por salva hace 110 meses
Principiante
Respuesta #7
para hacerlo tienes que tener una tabla notificaciones y al insertar un nuevo comentario que tambien inserte una notificacion con un estado por ejemplo 0 no leida y 1 leida, en la funcion notificaciones pendientes consultas la tabla notificaciones

te vas a quitar de encima un montón de problemas a la hora de sacar las notificaciones pendientes
0
Puntos
Por alber hace 110 meses
Administrador
Respuesta #8
Bueno al final ha salido. He seguido tu recomendación pero le he tenido que añadir un campo estado a la tabla comentarios y actualizar las 2 tablas con la id del post.

Igual no es la manera mas practica de hacerlo, pero funciona.

Soy cabezon y por estas cosas me encanta la programación aunque sea un mero y simple aprendiz de casi 51 años, el desafio del hombre contra la maquina. Je,je,je,je,je,

Saludos y gracias por vuestra ayuda.

Ahora, weno mañana, a seguir.
5
Puntos
Por salva hace 110 meses
Principiante
Respuesta #9
salva dijo:
Bueno al final ha salido. He seguido tu recomendación pero le he tenido que añadir un campo estado a la tabla comentarios y actualizar las 2 tablas con la id del post.

Igual no es la manera mas practica de hacerlo, pero funciona.

Soy cabezon y por estas cosas me encanta la programación aunque sea un mero y simple aprendiz de casi 51 años, el desafio del hombre contra la maquina. Je,je,je,je,je,

Saludos y gracias por vuestra ayuda.

Ahora, weno mañana, a seguir.
me alegro de que lo tengas solucionado compañero.. cerramos tema...
0
Puntos
Por demonio23 hace 110 meses
Moderador
Compartir en facebook
Compartir en twitter
Compartir
Para comentar Inicia sesión o Registrate