Ver Mensaje Individual
  #2 (permalink)  
Antiguo 01/06/2013, 18:12
Avatar de guardarmicorreo
guardarmicorreo
 
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 12 años, 1 mes
Puntos: 84
Respuesta: Por favor, necesito Listar Paises que Tengan Artículos Publicados Php

Cita:
Iniciado por ArmandoDippet Ver Mensaje
Hola, muy buenas comunidad!.
Hoy vengo con una consulta que me está sacando canas verdes...
Les comento mi problema... Yo tengo un menú dinámico, el cual aparecen primero los continentes, luego, al clikear sobre un continente aparecen todos los países de éste.
Pero mi problema está en que quiero hacer aparecer a los países que tienen publicados productos con un estilo y a los que no tienen artículos publicados de otro.

Les comento que tengo dos tablas, una con los países y otra con los productos, ambas se relacionan por medio de un id_pais. Lo que yo hago es hacer dos consultas por medio de dos funciones...

Código PHP:
Ver original
  1. public function obtener_paises($continente)
  2. {
  3. $sql_paises="select id, nombre,continente from paises where continente = $continente";
  4. $res_paises=mysql_query($sql_paises);
  5.  
  6. while($reg_paises=mysql_fetch_assoc($res_paises))
  7. {
  8. $this->user[]=$reg_paises;
  9. }
  10. return $this->user;
  11. }
  12.  
  13.  
  14. public function obtener_lista_si_tiene_productos($continente,$tipo )
  15. {
  16. $sql_productos="select pais,continente,tipo from producto where continente = $continente and tipo = $tipo group by (pais)";
  17. $res_productos=mysql_query($sql_productos);
  18.  
  19. while($reg_productos=mysql_fetch_assoc($res_produc tos))
  20. {
  21. $this->user[]=$reg_productos;
  22. }
  23. return $this->user;
  24. }
  25.  
  26. Bien, por ahora todo bien con esto... Ahora los llevo a imprimir en pantalla al archivo en el cual lo necesito siguiendo este código...
  27.  
  28. $paises=$u->obtener_paises(1);
  29.  
  30. $productos=$u->obtener_lista_si_tiene_productos(1,$_GET["valor"]);
  31.  
  32. Y los imprimo así mediante un Doble ciclo for
  33.  
  34. <?php
  35.  
  36. for($i=0;$i<sizeof($paises);$i++)
  37. {
  38. for($j=0;$j<sizeof($productos);$j++)
  39. {
  40. if($paises[$i]["id"]==$productos[$j]["pais"])
  41. {
  42. ?>
  43. <li><a class="invarseColor" href="#"><strong><?php echo $paises[$i]["nombre"]; ?></strong></a></li>
  44. <?php
  45. }else{
  46. ?>
  47. <li><?php echo $paises[$i]["nombre"]; ?></li>
  48. <?php
  49. }
  50.  
  51. }
  52.  
  53. }
  54.  
  55. ?>
Espero se entienda, la cosa es que me imprime lo que yo quiero, pero me repite el país tantas veces como artículos haya (por más de que sean distintos paises)...

Bueno, espero que un alma bondadosa me pueda ayudar en esto, le estaré realmente agradecido... Muchas gracias de antemano!.
he intentado comprender tu código. lo que te voy a decir es en base a lo que he entendido que está mal en él.

1º realizas dos consultas cuando deberías realizar solamente una (utilizando inner join).

2º si imprimes todos los datos de productos siendo que cada producto tiene asociado un país, es normal que ese país termine repitiéndose.
para solucionar esto no imprimas el campo país de cada producto y problema solucionado.

3º si quieres aplicar estilos distintos tienes dos formas: javascript junto con css3 o algo más rústico con css3 controlado con php.

no puedo ayudarte en más puesto que tus preguntas no están claras, no te explicas lo suficientemente bien.

si no entiendes nada de nada, ni con una ayuda genérica, lo mejor al final es que lo haga alguien que entienda.

saludos.