Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Ocultar campos que no posean información de otra tabla

Estas en el tema de Ocultar campos que no posean información de otra tabla en el foro de Mysql en Foros del Web. Buenas! tengo el siguiente problema. Tengo dos tablas. Marcas Modelos Hago la siguiente consulta de la base de datos. Código PHP: $subtipo = $row [ ...
  #1 (permalink)  
Antiguo 04/07/2011, 14:39
Avatar de dvbeaumont  
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 145
Antigüedad: 13 años
Puntos: 1
Pregunta Ocultar campos que no posean información de otra tabla

Buenas! tengo el siguiente problema.

Tengo dos tablas.
  • Marcas
  • Modelos

Hago la siguiente consulta de la base de datos.


Código PHP:
$subtipo=$row["id_subtipo"];     
 
$result_m=mysql_query("select * from t_marca WHERE id_subtipo=".$subtipo." ORDER BY id_marca",$linke); 
   while(
$row_m mysql_fetch_array($result_m)) { 
          echo
"<li><a href='detalle-producto.php?id_modelo=".$row_m["ma_name"]."'>".$row_m["ma_name"]."</a></li>"
  
$marca=$row_m["id_marca"]; 
  
$result_e=mysql_query("select * from t_modelos WHERE  id_subtipo=".$subtipo." AND id_marca=".$marca." AND t_modelos.id_marca != 0 ORDER BY id_modelo ;",$linke)  or die( "Error en query: $linke, el error  es: " mysql_error() );   
        while (
$row_e mysql_fetch_array($result_e)){ 
        if(
$marca==$row_e["id_marca"]){ 
echo
"<li><a href='detalle-producto.php?id_modelo=".$row_e["id_modelo"]."'>".$row_e["mo_titulo"]."</a></li>"
    } else { 
echo
""
    }}} 
   echo
"</ul></div></li>";} 
    
   echo
"</ul></li>";} 
Sucede que no logro hacer que las marcas que no posean modelos dejen de aparecer. Pues este comando:

Código PHP:
  $result_e=mysql_query("select * from t_modelos WHERE  id_subtipo=".$subtipo." AND id_marca=".$marca." AND t_modelos.id_marca != 0 ORDER BY id_modelo ;",$linke)  or die( "Error en query: $linke, el error  es: " mysql_error() ); 
Me indica que si la marca no posee modelos no aparecerá.

Esto solo aplica si coloco la llamada dentro del while que esta en ella.

Código PHP:
  $result_e=mysql_query("select * from t_modelos WHERE  id_subtipo=".$subtipo." AND id_marca=".$marca." AND t_modelos.id_marca != 0 ORDER BY id_modelo ;",$linke)  or die( "Error en query: $linke, el error  es: " mysql_error() );   
        while (
$row_e mysql_fetch_array($result_e)){
          echo
"<li><a href='detalle-producto.php?id_modelo=".$row_m["ma_name"]."'>".$row_m["ma_name"]."</a></li>"
 
        if(
$marca==$row_e["id_marca"]){ 
echo
"<li><a href='detalle-producto.php?id_modelo=".$row_e["id_modelo"]."'>".$row_e["mo_titulo"]."</a></li>"
    } else { 
echo
""

Pero lo que ocasiona es que cada vez que salga un modelo salga encima el nombre de la marca. en vez de listar asi:

Marca1
  • Modelo1
  • modelo2
  • modelo3
Marca2
  • modelo1
  • modelo2
Marca3



Cuando pongo la secuencia que mostre hace rato me sale esto:

Marca1
modelo1
Marca1
Modelo2
Marca2
Modelo1

(pero si evita que salga la marca3)

Deseo que evite que salga la marca 3 pero que me los liste por orden de marca.
  #2 (permalink)  
Antiguo 05/07/2011, 01:06
 
Fecha de Ingreso: marzo-2009
Mensajes: 509
Antigüedad: 15 años, 1 mes
Puntos: 17
Respuesta: Ocultar campos que no posean información de otra tabla

esas cosas se solucionan con un JOIN, pero como no se tu estructura no te puedo decir si left, inner, right...
  #3 (permalink)  
Antiguo 05/07/2011, 01:10
Avatar de dvbeaumont  
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 145
Antigüedad: 13 años
Puntos: 1
Respuesta: Ocultar campos que no posean información de otra tabla

Qué te coloco para ver si puedes ayudarme!?
  #4 (permalink)  
Antiguo 05/07/2011, 05:21
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Ocultar campos que no posean información de otra tabla

Por lo pronto quita todo lo que sea PHP y pon sólo el SQL y además la estructura de las tablas que se usan. Eso ayuda mucho3.
Este foro es de Bases de Datos, no de programación. Poner código PHP o cualquier otro va contra las normas y no nos permite a los que no programamos en ese lenguaje entender el planteo SQL en medio de tata "basura" visual.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 05/07/2011, 11:58
Avatar de dvbeaumont  
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 145
Antigüedad: 13 años
Puntos: 1
Respuesta: Ocultar campos que no posean información de otra tabla

Ok!

Código MySQL:
Ver original
  1. `t_marca` (
  2.   `id_marca` int(10) unsigned NOT NULL auto_increment,
  3.   `ma_name` char(150) NOT NULL,
  4.   `ma_estatus` int(11) default NULL,
  5.   `id_subtipo` int(11) NOT NULL,
  6.   PRIMARY KEY  (`id_marca`)
  7. )


Código MySQL:
Ver original
  1. `t_modelos` (
  2.   `id_modelo` int(10) unsigned NOT NULL auto_increment,
  3.   `id_tipo` int(10) NOT NULL,
  4.   `id_subtipo` int(10) NOT NULL,
  5.   `id_marca` int(11) NOT NULL,
  6.   `mo_titulo` char(150) NOT NULL,
  7.   `mo_subtitulo` char(150) default NULL,
  8.   `mo_descripcion` longtext,
  9.   `mo_caracteristicas` longtext,
  10.   `mo_url` char(250) default NULL,
  11.   `mo_contenido` longblob,
  12.   `mo_tamanio` int(10) unsigned default NULL,
  13.   `mo_tipo` varchar(150) default NULL,
  14.   `mo_nombre_archivo` varchar(255) default NULL,
  15.   `mo_tamanio_unidad` varchar(150) default NULL,
  16.   PRIMARY KEY  (`id_modelo`)
  17. )


Las llamadas son de esta forma.


Código PHP:
Ver original
  1. $result_m=mysql_query("select * from t_marca WHERE id_subtipo=".$subtipo." AND ma_estatus='1' ORDER BY id_marca",$linke);
  2.  
  3.  while($row_m = mysql_fetch_array($result_m)) {
  4.          
  5. echo"<li><a href='buscar.php?id_marca=".$row_m["id_marca"]."'>".$desat."</a></li>";
  6.  
  7.  $marca=$row_m["id_marca"];
  8.  
  9.   $result_e=mysql_query("select * from t_modelos WHERE  id_subtipo=".$subtipo." AND id_marca=".$marca." AND t_modelos.id_marca != 0 ORDER BY id_modelo ;",$linke)  or die( "Error en query: $linke, el error  es: " . mysql_error() );  
  10.        
  11.  while ($row_e = mysql_fetch_array($result_e)){
  12.      
  13.    if($marca==$row_e["id_marca"]){
  14.  
  15. echo"<li><a href='detalle-producto.php?id_modelo=".$row_e["id_modelo"]."'>".$row_e["mo_titulo"]."</a></li>";
  16.    
  17.  }  }}

Mi problema es que deseo hacer que se oculte la marca cuando no tenga modelos, pero no lo logro! hay una sola opción! y seria colocar el echo"de la marca" dentro del while de modelo! pero esto me repetiria constantemente la marca! y deseo es que salga de esta forma..

Marca1
  • modelo1
  • modelo2

y si no hay modelos cargado en alguna otra marca que no salgan!

Etiquetas: campos, tabla
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 02:53.