Foros del Web » Programando para Internet » PHP »

PHP OO mensajes nuevos

Estas en el tema de mensajes nuevos en el foro de PHP en Foros del Web. Buenas gente estoy creando una pagina con php. Mi problema es el siguiente: Quiero mostrarle a un usuario que tiene mensajes que aun no lee, ...
  #1 (permalink)  
Antiguo 22/09/2011, 21:45
 
Fecha de Ingreso: agosto-2011
Ubicación: en mi casa
Mensajes: 37
Antigüedad: 13 años, 3 meses
Puntos: 1
mensajes nuevos

Buenas gente estoy creando una pagina con php.
Mi problema es el siguiente:
Quiero mostrarle a un usuario que tiene mensajes que aun no lee, pero al momento de hacer la query y todo siempre me aparece que tengos todos los mensajes leidos.
Aqui el codigo solicitando:

Código PHP:
<?php 
echo "Bienvenido: {$_SESSION["s_username"]}";
echo 
"<br>";
if (
$row['leido']=='no') {
                echo 
"Tienes mensajes nuevos";
            } else {
            echo 
"No tienes mensajes nuevos";
            }
?>
y aca la query para solicitar lo de arriba

Código SQL:
Ver original
  1. $query = mysql_query("SELECT leido FROM mensaje WHERE para='".$_SESSION['s_username']."'") OR die (mysql_error());
  2. $row = mysql_fetch_array($query);

Si alguien pudiera ayudarme porfavor se lo agradeceria muchisimo ;)

Última edición por SantosMc03; 22/09/2011 a las 21:46 Razón: error
  #2 (permalink)  
Antiguo 22/09/2011, 21:51
 
Fecha de Ingreso: noviembre-2009
Mensajes: 535
Antigüedad: 15 años
Puntos: 25
Respuesta: mensajes nuevos

en tu base de datos crea una culumna vesitado o cualquier nombre que quieres INT(1) NULL por ejemplo.
al rejestrar el mensaje nuevo dare un valor de 1, y al visitar lo le modificas a 0, y de esta manera sera en tu consulta seleccionar el ... where vesitado = '0' hay varias manera de hacer la consulta

en este ejemplo valor 0 = visitado y 1 = no visitado
__________________
cada vez que aprendes algo te crees que no sabes nada
  #3 (permalink)  
Antiguo 22/09/2011, 23:09
 
Fecha de Ingreso: agosto-2011
Ubicación: en mi casa
Mensajes: 37
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: mensajes nuevos

no me funciono :/
  #4 (permalink)  
Antiguo 22/09/2011, 23:12
 
Fecha de Ingreso: noviembre-2009
Mensajes: 535
Antigüedad: 15 años
Puntos: 25
Respuesta: mensajes nuevos

mostrame la tabla bd y te ayudare
__________________
cada vez que aprendes algo te crees que no sabes nada
  #5 (permalink)  
Antiguo 22/09/2011, 23:17
 
Fecha de Ingreso: agosto-2011
Ubicación: en mi casa
Mensajes: 37
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: mensajes nuevos

te la envie por mp
  #6 (permalink)  
Antiguo 22/09/2011, 23:25
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: mensajes nuevos

Este es el código que me enviaste por privado...

Código PHP:
Ver original
  1. echo "Bienvenido: {$_SESSION["s_username"]}";
  2. echo "<br>";
  3. $userid = $_GET['id'];
  4. $get_messages = mysql_query(
  5. "SELECT ID FROM mensaje WHERE para='" . $_SESSION['s_username'] . "' ORDER BY ID DESC") or
  6. $get_messages2 = mysql_query(
  7. "SELECT * FROM mensaje WHERE para='" . $_SESSION['s_username'] . "' ORDER BY ID DESC") or
  8. $num_messages = mysql_num_rows($get_messages);
  9. $id = $_GET['id'];
  10. echo '<tr>';
  11. $str = "SELECT COUNT(*) FROM mensaje WHERE leido = 0";
  12. //ejecutamos la consulta
  13. if ($str = 0) {
  14.     echo "Mensajes sin leer: " . $sql['leidos'];
  15. } else {
  16.     echo 'No tienes mensajes nuevos';
  17. }

Que puedo ver??? ammm varias cosas.

1. Cuál es la función de la variable $get_messages2 ¿?
2. Ya probaste que recoja correctamente la sesión s_username ?
3. ¿Que intentas hacer aquí?

Código PHP:
Ver original 

No sería:

Código PHP:
Ver original
  1. $res = mysql_query($consulta) or die (mysql_error());
  2.  
  3. if ($str = 0) {
  4.     echo "Mensajes sin leer: " . $sql['leidos'];
  5. } else {
  6.     echo 'No tienes mensajes nuevos';
  7. }

4. de donde sale la variable $sql?
5. ¿Porqué le pasas $sql a la función mysql_query?
6. Porque llamas 2 veces a $_GET['id]

Código PHP:
Ver original
  1. $userid = $_GET['id'];
  2. $id = $_GET['id'];

7. ¿Dónde usas la variable $id o $userid ?
8... Arregla principalmente el punto 3.

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #7 (permalink)  
Antiguo 22/09/2011, 23:26
 
Fecha de Ingreso: noviembre-2009
Mensajes: 535
Antigüedad: 15 años
Puntos: 25
Respuesta: mensajes nuevos

aqui mismo dime solo las columnas y la consulta que haces?
__________________
cada vez que aprendes algo te crees que no sabes nada
  #8 (permalink)  
Antiguo 22/09/2011, 23:28
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: mensajes nuevos

Gracias arros por no dejarme editar... Sigo...

9. Le estás pasando el parámetro que no es a mysql_fetch_array
10. $str = "SELECT COUNT(*) FROM mensaje WHERE leido = 0"; (No debería ir la condición con el usuario y los leídos???)

y en el código de arriba sería, sino que no me dejaron editar:

Código PHP:
Ver original
  1. $res = mysql_query($consulta) or die (mysql_error());
  2.  
  3. $sql = mysql_fetch_array($res);
  4. if ($sql['campo a comprobar'] = 0) {
  5.     echo "Mensajes sin leer: " . $sql['leidos'];
  6. } else {
  7.     echo 'No tienes mensajes nuevos';
  8. }

aquí

if ($str = 0) {

que intentas hacer??? 1 sólo paréntesis = asignación y == son igualdad. Además $str es un array, porqué lo compruebas con cero?

planea bien lo que quieres hacer antes de escribir el código.

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Última edición por andresdzphp; 22/09/2011 a las 23:58

Etiquetas: php+mysql, problema-php, querys
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 16:53.