Foros del Web » Programando para Internet » PHP »

inner join, where

Estas en el tema de inner join, where en el foro de PHP en Foros del Web. hola: NECESITO UN GRANDISIMO FAVOR, YA QUE ESTOY BLOQUEADO EN La SIGUIENTE PARTE: TENGO UN WHILE QUE ME CARGA LAS SIGUIENTES LISTAS: <?php do { ...
  #1 (permalink)  
Antiguo 26/06/2012, 13:48
 
Fecha de Ingreso: junio-2012
Ubicación: bogota
Mensajes: 44
Antigüedad: 11 años, 10 meses
Puntos: 2
inner join, where

hola: NECESITO UN GRANDISIMO FAVOR, YA QUE ESTOY BLOQUEADO EN La SIGUIENTE PARTE: TENGO UN WHILE QUE ME CARGA LAS SIGUIENTES LISTAS:

<?php do { ?>
<ul>
<li class='section-title'><?php echo $row_DivDinamicoT['nombre']; ?></li>
<?php do { ?>
<li><?php echo $row_DivDinamico['nombre']; ?></li>
<?php } while ($row_DivDinamico = mysql_fetch_assoc($DivDinamico)); ?>
</ul>
<?php } while ($row_DivDinamicoT = mysql_fetch_assoc($DivDinamicoT)); ?>

EN LAS BASES DE DATOS TENGO UN DivDinamicoT QUE PUEDE CONTENER MUCHOS DivDinamico
COMO UN MENU CON SUBMENUS
¿ COMO HAGO PARA ASIGNAR LOS DIVDINAMICO A LOS DIVDINAMICOT ?

SERIA CON UN WHERE O CON INNER JOIN

MIL GRACIAS
  #2 (permalink)  
Antiguo 26/06/2012, 17:28
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: inner join, where

1- Bienvenido a FDW
2- Por favor no escribas todo en mayúsculas, resulta incómodo leer así
3- Para códigos usa la herramienta Highlight que tiene el foro
4- Proporciona más información de lo que estás haciendo y lo que tienes, sin conocer la estructura de tus tablas es imposible ayudar
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 27/06/2012, 11:04
 
Fecha de Ingreso: junio-2012
Ubicación: bogota
Mensajes: 44
Antigüedad: 11 años, 10 meses
Puntos: 2
Información Respuesta: inner join, where

en otras palabras
php - mysql

tengo una base de datos: - tabla:tema "id, nombre, año"
- tabla:subtema "id, nombre, id_tema"

resulta que al unir los subtemas con los temas no me esta dando.
en otras palabras al momento de unir:
id_tema "tabla.subtemas" con= id "tabla.temas"

no me sale ya lo intente con while, mysql_fetch_assoc, mysql_free_result y no no logro conseguir entrelazar o unirlos.

espero haberme explicado bien,
  #4 (permalink)  
Antiguo 27/06/2012, 12:06
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 3 meses
Puntos: 128
Respuesta: inner join, where

Hola, muestra tu código para entender lo que planteas.


Saludos.



__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #5 (permalink)  
Antiguo 27/06/2012, 12:36
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: inner join, where

Puedes hacerlo con una sóla consulta con la tabla subtemas y JOIN de la tabla temas, ordenado por ID del tema, ejemplo:

Código SQL:
Ver original
  1. SELECT s.*, t.nombre AS nombretema
  2.     FROM subtemas s
  3.     JOIN temas t ON s.id_tema = t.id
  4.     ORDER BY s.id_tema

Después en PHP tu ciclo sería algo como:
Código:
ultimo_tema = 0; // Esto es sólo para control
while(/* leer registro de la consulta */) {
    si(ultimo_tema != subtema['id_tema']) {
         ultimo_tema = subtema['id_tema'];
         // Aquí muestras el tema, usando nombretema para el campo temas.nombre
    }
    // Aquí muestras el subtema
}
Bueno, esa es la forma básica, te toca "traducirlo" a PHP y aplicar el HTML necesario
__________________
- León, Guanajuato
- GV-Foto
  #6 (permalink)  
Antiguo 27/06/2012, 13:22
 
Fecha de Ingreso: junio-2012
Ubicación: bogota
Mensajes: 44
Antigüedad: 11 años, 10 meses
Puntos: 2
Respuesta: inner join, where

hola
quisas la pregunta sobra
pero cambio el si por if
  #7 (permalink)  
Antiguo 27/06/2012, 13:31
 
Fecha de Ingreso: junio-2012
Ubicación: bogota
Mensajes: 44
Antigüedad: 11 años, 10 meses
Puntos: 2
Respuesta: inner join, where

te lo pongo de otra forma tengo el siguiente codigo php
Código PHP:
Ver original
  1. //cargo un do while para los menus con li clase menu y llamo al campo nombre menu
  2.         <?php do { ?>
  3.              
  4.             <li class='menu'><?php echo $row_menu['nombre_menu']; ?></li>
  5.            
  6. //cargo un do while para los submenus con li clase sub-menu y llamo al campo nombre sub menu
  7.      <?php do { ?>
  8.              <li class="sub-menu"><?php echo $row_submenu['nombre_submenu']; ?></li>
  9.  
  10. //cierro los while
  11.              <?php } while ($ row_submenu = mysql_fetch_assoc($submenu)); ?>  
  12.             <?php } while ($row_menu = mysql_fetch_assoc($menu)); ?>

el problema que me sale es:
al primer menu me salen todos los submenus.
al segundo o tercero o etc menu no me sale ningun submenu.
si agrego mas submenus en la base de datos, todos se van al primer menu.
los submenus se deben de ir al menu que yo le diga por medio del "id_menu"
  #8 (permalink)  
Antiguo 27/06/2012, 15:39
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: inner join, where

Bueno, como te decía, se puede con 1 sola consulta leer menú y submenú y tú lo estás haciendo... con dos?, no lo sé, porque no las muestras y con un sólo ciclo puedes mostrar todo.

Otra cosa, sugiero usar while(condicion) {} en lugar de do { } while(condicion);, porque el primero siempre evalúa antes de ejecutar las líneas dentro del ciclo y el segundo siempre se ejecutará al menos una vez y después evalúa la condición; suponiendo que una consulta no devuelva registros, verás un error o warning, a menos que verifiques primero esa situación.
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: join, 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 22:33.