Foros del Web » Programando para Internet » PHP »

Error en mostrar datos de una BD

Estas en el tema de Error en mostrar datos de una BD en el foro de PHP en Foros del Web. Hola, resulta que estoy haciendo un panel de mensajes En mi base de datos yo tengo dos mensajes, pero siempre me muestra uno, como podran ...
  #1 (permalink)  
Antiguo 16/01/2013, 12:49
 
Fecha de Ingreso: enero-2013
Mensajes: 40
Antigüedad: 11 años, 10 meses
Puntos: 2
Leer mensajes enviados

Hola, resulta que estoy haciendo un panel de mensajes



En mi base de datos yo tengo dos mensajes, pero siempre me muestra uno, como podran ver la imagen, quise ponerle array(); pero al parecer no lo hice bien... Me dan una mano?

Código PHP:
<
?
$query5 = "SELECT * FROM msjrec ORDER BY fecha DESC";
$resultado5 = mysql_query($query5, $conexion);
$total5 = mysql_num_rows($resultado5);

if($total5>0){
    while ($fila = mysql_fetch_assoc($resultado5)) {
        $id = $fila['id_mensaje'];
        $asunto = $fila['asunto'];
        $mensaje = $fila['mensaje'];
            $de = $fila2['usuario_envia'];
        $fecha = $fila2['fecha'];

        $query5 = "SELECT * FROM msjrec ORDER BY fecha DESC";
        $resultado5 = mysql_query($query5, $conexion);
        $total5 = mysql_num_rows($resultado5);

        if($total5>0){
                    while ($fila = mysql_fetch_assoc($resultado5)) {
                            
                $de = $fila['usuario_envia'];
                $query6 = "SELECT * FROM usuario WHERE nombre_usuario = '$de'";
                $resultado6 = mysql_query($query6, $conexion);
                $total6 = mysql_num_rows($resultado6);
                                    
                if($total6>0){
                    while ($fila = mysql_fetch_assoc($resultado6)) {
                        $rango = $fila['rango'];
                        $edad = $fila['edad'];
                        $comentarios = $fila['comentarios'];
                        $sexo = $fila['sexo'];

                        if($rango == 'administrador'){ ?>

                            <style>#autor a{
                            color:red; }
                            #rango{
                            color:red;}</style>

                        <? }

                        if(
$rango == 'moderador'){ ?>

                            <style>#autor a{
                            color:blue; }
                            #rango{
                            color:blue;}</style>

                        <? }

                        if(
$rango == 'usuario'){ ?>

                        <style>#autor a{
                        color:black; }
                        #rango{
                        color:black;}</style>

                        <? }
                                            
                        echo 
'<div id="showmsg"><div id="autormsg"><b><div id="autor"><a href="./profil.php?profil='.$de.'" target="a_blank">'.$de.'</a></div></b><div id="rango">'.$rango.'</div><div id="extrainfo"><p>Edad: '.$edad.'</p><p>Comentarios: '.$comentarios.'</p><p>Sexo: '.$sexo.'</p></div></div><div id="titlemsg"><a name="msg'.$id.'"<p><b>Asunto: '.$asunto.'Fecha: '.date("d-m-y",$fecha).'</b></p></div><div id="msg"><p>'.$mensaje.'</p></div></div>';
                    }
                }
            }
        }
    }
?>
  #2 (permalink)  
Antiguo 16/01/2013, 16:03
 
Fecha de Ingreso: enero-2013
Mensajes: 40
Antigüedad: 11 años, 10 meses
Puntos: 2
Error en mostrar datos de una BD

Hola, resulta que estoy haciendo un panel de mensajes



En mi base de datos yo tengo dos mensajes, pero siempre me muestra uno, como podran ver la imagen, quise ponerle array(); pero al parecer no lo hice bien... Me dan una mano?

Código PHP:
<
?
$query5 = "SELECT * FROM msjrec ORDER BY fecha DESC";
$resultado5 = mysql_query($query5, $conexion);
$total5 = mysql_num_rows($resultado5);

if($total5>0){
    while ($fila = mysql_fetch_assoc($resultado5)) {
        $id = $fila['id_mensaje'];
        $asunto = $fila['asunto'];
        $mensaje = $fila['mensaje'];
            $de = $fila2['usuario_envia'];
        $fecha = $fila2['fecha'];

        $query5 = "SELECT * FROM msjrec ORDER BY fecha DESC";
        $resultado5 = mysql_query($query5, $conexion);
        $total5 = mysql_num_rows($resultado5);

        if($total5>0){
                    while ($fila = mysql_fetch_assoc($resultado5)) {
                            
                $de = $fila['usuario_envia'];
                $query6 = "SELECT * FROM usuario WHERE nombre_usuario = '$de'";
                $resultado6 = mysql_query($query6, $conexion);
                $total6 = mysql_num_rows($resultado6);
                                    
                if($total6>0){
                    while ($fila = mysql_fetch_assoc($resultado6)) {
                        $rango = $fila['rango'];
                        $edad = $fila['edad'];
                        $comentarios = $fila['comentarios'];
                        $sexo = $fila['sexo'];

                        if($rango == 'administrador'){ ?>

                            <style>#autor a{
                            color:red; }
                            #rango{
                            color:red;}</style>

                        <? }

                        if(
$rango == 'moderador'){ ?>

                            <style>#autor a{
                            color:blue; }
                            #rango{
                            color:blue;}</style>

                        <? }

                        if(
$rango == 'usuario'){ ?>

                        <style>#autor a{
                        color:black; }
                        #rango{
                        color:black;}</style>

                        <? }
                                            
                        echo 
'<div id="showmsg"><div id="autormsg"><b><div id="autor"><a href="./profil.php?profil='.$de.'" target="a_blank">'.$de.'</a></div></b><div id="rango">'.$rango.'</div><div id="extrainfo"><p>Edad: '.$edad.'</p><p>Comentarios: '.$comentarios.'</p><p>Sexo: '.$sexo.'</p></div></div><div id="titlemsg"><a name="msg'.$id.'"<p><b>Asunto: '.$asunto.'Fecha: '.date("d-m-y",$fecha).'</b></p></div><div id="msg"><p>'.$mensaje.'</p></div></div>';
                    }
                }
            }
        }
    }
?>
Saludangas
  #3 (permalink)  
Antiguo 16/01/2013, 16:06
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 13 años, 6 meses
Puntos: 76
Respuesta: Error en mostrar datos de una BD

humm buenos yo veo bien el codigo,

solo que te aconsejo

en el segundo while ($fila = mysql_fetch_assoc($resultado6))
cambia la variable $fila por no se $fila2 por ejemplo, para que no se sobreescriba o presente algun conflicto con $fila del primer while
  #4 (permalink)  
Antiguo 16/01/2013, 18:06
 
Fecha de Ingreso: enero-2013
Mensajes: 40
Antigüedad: 11 años, 10 meses
Puntos: 2
Respuesta: Error en mostrar datos de una BD

No eso no es... yo me di cuenta que si esta fuera de las llaves propias del while, va todo bien, pero si estan afuera te muestra solo 1:

Código PHP:
<?

if($total>0){
     while(
$fila mysql_fetch_assoc($resultado){
          
$asunto $fila['asunto'];
          echo 
$asunto;
     }
}
Todo bien, pero si mando el asunto aca, todo mal.

Código PHP:
if($total>0){
     while(
$fila mysql_fetch_assoc($resultado){
          
$asunto $fila['asunto'];
          echo 
$asunto;
     }

Saben la solucion?
  #5 (permalink)  
Antiguo 16/01/2013, 18:33
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años, 7 meses
Puntos: 270
Respuesta: Error en mostrar datos de una BD

Creo que sé por donde van los tiros.No lo puedo asegurar, porque no codifico así.
Piensa un momento qué ocurre si tienes 50 mensajes.
Vas a ejecutar 1 + 50 queries a la base de datos.
Cambia tu query a:
Código SQL:
Ver original
  1. SELECT * FROM msjrec,usuario WHERE msjrec.usuario_envia=nombre_usuario ORDER BY fecha DESC

(es muy básica, habría que asegurarse de que hay indices, y varias cosas más). Pero así, tengas 2, o 100 mensajes, sólo haces 1 query (y solo necesitas 1 bucle..menos código).
  #6 (permalink)  
Antiguo 17/01/2013, 21:24
 
Fecha de Ingreso: enero-2013
Mensajes: 40
Antigüedad: 11 años, 10 meses
Puntos: 2
Respuesta: Error en mostrar datos de una BD

No me sirvio, pero me hiciste dar cuenta que a todos les mostraria todos los mensajes, Gracias e.e

Etiquetas: bd, enviados, mensajes, mysql
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 15:07.