Foros del Web » Programando para Internet » PHP »

mostrar datos de base de datos con un determinado formato

Estas en el tema de mostrar datos de base de datos con un determinado formato en el foro de PHP en Foros del Web. Hola Ando un poco liado y no se si realmente se pueda lograr. Tengo dos tablas Tabla1 y Tabla2. Quisiera mostrar los datos de la ...
  #1 (permalink)  
Antiguo 17/09/2014, 13:26
 
Fecha de Ingreso: mayo-2013
Ubicación: Alicante
Mensajes: 35
Antigüedad: 10 años, 10 meses
Puntos: 0
mostrar datos de base de datos con un determinado formato

Hola
Ando un poco liado y no se si realmente se pueda lograr.
Tengo dos tablas Tabla1 y Tabla2.
Quisiera mostrar los datos de la Tabla1, pero si alguno de estos datos está también en la Tabla2 que los muestre de otro color.
Intenté con un if pero no me funcionó.

Ayuda por favor, es importante.
  #2 (permalink)  
Antiguo 17/09/2014, 13:50
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: mostrar datos de base de datos con un determinado formato

Cita:
Intenté con un if pero no me funcionó.
Sería interesante ver exactamente lo que hiciste, ¿o es nuestra responsabilidad adivinar?

Cita:
Ayuda por favor, es importante.
Claro, así como también es importante que expliques mejor y muestres más código para entender.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 18/09/2014, 02:53
 
Fecha de Ingreso: mayo-2013
Ubicación: Alicante
Mensajes: 35
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: mostrar datos de base de datos con un determinado formato

Ok gracias por el interes. Aquí especifico un poco más:
Tengo dos tablas en phpmyadmin
Tabla 'frutos', con los campos id y nombre
Tabla 'enviados', con los campos id y frutos

En la página php tengo la vinculación a la base de datos y creado dos juegos de registros, una de cada tabla. No sé si sea necesario poner este código.

Luego tengo creada una tabla que muestra los datos de la tabla 'frutos', región repetida para que muestre todos los campos. Debajo pongo el código.

Código HTML:
<table width="50%" border="1" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <th scope="col">ID</th>
    <th scope="col">Frutos</th>
  </tr>
  <?php do { ?>
    <tr>
      <td><?php echo $row_frutos['id']; ?></td>
      <td><?php if ($row_frutos['nombre'] == $row_enviados['frutos']){ ?><font color="#CC6600"><?php echo $row_frutos['nombre']; ?></font><?php }else{ ?><font color="#009999"><?php echo $row_frutos['nombre']; ?></font><?php }?></td>
    </tr>
    <?php } while ($row_frutos = mysql_fetch_assoc($frutos)); ?>
</table> 
Solo me cambia el formato(color) al primer registro coincidente que encuentra, pero los restantes no.
Intenté agregando esto antes del if, pero no muestra los datos:

Código PHP:
for ($i=0$i<$row_frutos['nombre']->length$i++) {
        
$frutas $row_frutos['nombre']->item($i); 
y cerrandolo después del if
Código PHP:
<?php ?>
  #4 (permalink)  
Antiguo 18/09/2014, 03:51
 
Fecha de Ingreso: enero-2011
Ubicación: Barcelona
Mensajes: 36
Antigüedad: 13 años, 3 meses
Puntos: 5
Respuesta: mostrar datos de base de datos con un determinado formato

Hola andy82,

He visto varios fallos en tu código, te comento:
-Lo primero, tabula correctamente el código, hasta que no me lo he copiado y tabulado no he entendido bien que querías hacer.
-Las funciones de mysql que utilizas están obsoletas, en próximas versiones desaparecerán y dejaran e utilizarse, deberías utilizar mysqli.
-El problema creo que lo podrías resolver con 1 sola consulta, pero ya que tú lo has hecho en dos, lo he hecho igual.
El código esta explicado con comentarios, si algo no lo entiendes no dudes en preguntar.

Saludos, Alex.

Código PHP:
<? 
        $sql
="SELECT * FROM enviados";
        
//Ejecuta query...
        
$arrNombresEnviados=array();
        while(
$row_enviados mysql_fetch_assoc($enviados)){
            
$arrNombresEnviados[]=$row_frutos['nombre'];
        }
        
//Obtienes array con todos los nombres de frutos enviados en $arrNombresEnviados
        
        
$sql="SELECT * FROM frutos";
        
//Ejecuta query...
?>
<table width="50%" border="1" align="center" cellpadding="0" cellspacing="0">
    <tr>
        <th scope="col">ID</th>
        <th scope="col">Frutos</th>
    </tr>
    <?while($row_frutos mysql_fetch_assoc($frutos)){ //En este codigo no hace falta usar el do-while, pero alomejor tu haces alguna otra cosa antes y si lo necesitas.?>
        <tr>
            <td><?=$row_frutos['id']?></td>
            <td>
                <?if(in_array($row_frutos['nombre'], $arrNombresEnviados)){ //Si el nombre actual se encuentra dentro de la array $arrNombresEnviados devuelbe true?> 
                    <font color="#CC6600"><?=$row_frutos['nombre']?></font>
                <?}else{?>
                    <font color="#009999"><?=$row_frutos['nombre']?></font>
                <?}?>
            </td>
        </tr>
    <?}?>
</table>
  #5 (permalink)  
Antiguo 18/09/2014, 09:15
 
Fecha de Ingreso: mayo-2013
Ubicación: Alicante
Mensajes: 35
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: mostrar datos de base de datos con un determinado formato

Gracias Alex por querer ayudarme.
Probé tu código tal como está y me sale cantidad de errores. Luego lo adapté al mio y no muestra el resultado deseado(Cambia el formato al primer valor de la tabla, sin que esté en la otra). En parte entiendo lo que planteas. Sería: si $arrNombresEnviados está dentro de in_array($row_frutos['nombre'] darle tal formato. ¿Es así o al revés?

Quería preguntarte si tu hiciste la prueba y te funcionó, porque yo estoy intentando de todo y no me sale.

Saludos.
  #6 (permalink)  
Antiguo 18/09/2014, 09:25
 
Fecha de Ingreso: mayo-2013
Ubicación: Alicante
Mensajes: 35
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: mostrar datos de base de datos con un determinado formato

Los datos insertados en la tabla frutos son:
id nombre
1 Manzana
2 Uva
3 Melon
4 Mango
5 Naranja
6 Platano

Datos de la tabla enviados:
id frutos
1 Melon
2 Naranja

Como yo tenía anteriormente el código reconocía solo el primer valor, como muestra en la imagen, pero ahí quedaba.

  #7 (permalink)  
Antiguo 18/09/2014, 09:55
 
Fecha de Ingreso: enero-2011
Ubicación: Barcelona
Mensajes: 36
Antigüedad: 13 años, 3 meses
Puntos: 5
Respuesta: mostrar datos de base de datos con un determinado formato

Si te daba errores sería por los nombres de variables, acabo de probarlo simulando resultados de las consultas y funciona correctamente.
Código PHP:
<? 
        $sql
="SELECT * FROM enviados";
        
//Ejecuta query...
        //Simula resultados de la query
        
$enviados[]=array('id'=>'1','nombre'=>'Melon');
        
$enviados[]=array('id'=>'3','nombre'=>'Naranja');
        
        
$arrNombresEnviados=array();
        
// while($row_enviados = mysql_fetch_assoc($enviados)){
        
foreach($enviados as $row_frutos){ //Por la modificación me veo obligadoa usar foreach, pero para la consulta utiliza la linea de arriba
            
$arrNombresEnviados[]=$row_frutos['nombre'];
        }
        
//Obtienes array con todos los nombres de frutos enviados en $arrNombresEnviados
        
        
$sql="SELECT * FROM frutos";
        
//Ejecuta query...        
        //Simula resultados de la query
        
$frutos[]=array('id'=>'1','nombre'=>'Manzana');
        
$frutos[]=array('id'=>'2','nombre'=>'Uva');
        
$frutos[]=array('id'=>'3','nombre'=>'Melon');
        
$frutos[]=array('id'=>'4','nombre'=>'Mango');
        
$frutos[]=array('id'=>'5','nombre'=>'Naranja');
        
$frutos[]=array('id'=>'5','nombre'=>'Platano');
        
?>
<table width="50%" border="1" align="center" cellpadding="0" cellspacing="0">
    <tr>
        <th scope="col">ID</th>
        <th scope="col">Frutos</th>
    </tr>
    <? //while($row_frutos = mysql_fetch_assoc($frutos)){ 
    
foreach($frutos as $row_frutos){ //Por la modificación me veo obligadoa usar foreach, pero para la consulta utiliza la linea de arriba?>
        <tr>
            <td><?=$row_frutos['id']?></td>
            <td>
                <?if(in_array($row_frutos['nombre'], $arrNombresEnviados)){ //Si el nombre actual se encuentra dentro de la array $arrNombresEnviados devuelbe true?> 
                    <font color="#CC6600"><?=$row_frutos['nombre']?></font>
                <?}else{?>
                    <font color="#009999"><?=$row_frutos['nombre']?></font>
                <?}?>
            </td>
        </tr>
    <?}?>
</table>

Etiquetas: sql
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:17.