Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] while para hacer mas dinamico un programa

Estas en el tema de while para hacer mas dinamico un programa en el foro de PHP en Foros del Web. Hola gente, tengo un programa hecho por mi que trae elementos de una base de datos pero está hecho de una forma muy estatica en ...
  #1 (permalink)  
Antiguo 27/11/2015, 10:51
 
Fecha de Ingreso: septiembre-2009
Mensajes: 39
Antigüedad: 14 años, 8 meses
Puntos: 0
while para hacer mas dinamico un programa

Hola gente, tengo un programa hecho por mi que trae elementos de una base de datos pero está hecho de una forma muy estatica en la que si sigue asi, no podria expandirlo a futuro tal como tengo pensado, por lo cual, les voy a mostrar parte del codigo que actualmente está escrito tal cual y segun veo podria ser mucho mas dinamico y en muchas menos lineas de codigo usando solo un while y una tabla nueva en mysql que es el motor que uso para traer elementos.

esto es lo que tengo actualmente:
Código PHP:
                        <div id="01">
                            <?php
                            $result1 
mysqli_query($link"SELECT * FROM products WHERE productCategoria = '1' AND habilitado = '1'");

                            while (
$fila1 mysqli_fetch_array($result1)) {
                                
mostrarDatos1($fila1);
                            }
                            
mysqli_free_result($result1);
                            
?>     
                        </div>
                        <div id="02">
                            <?php
                            $result1 
mysqli_query($link"SELECT * FROM products WHERE productCategoria = '2' AND habilitado = '1'");

                            while (
$fila1 mysqli_fetch_array($result1)) {
                                
mostrarDatos1($fila1);
                            }
                            
mysqli_free_result($result1);
                            
?>                        
                        </div>
como verán lo único que cambia entre un div y otro es el nombre del div que cambia entre 01, 02, 03, 04 y asi hasta 12... y la consulta de la base de datos que tambien cambia en paralelo "productCategoria = '1', "productCategoria = '2', "productCategoria = '3' etc y asi hasta 12 tambien

entonces hice una tabla llamada categorias con varios campos, cuyo campo ID es el que coincide con estos números que actualmente llegan hasta el 12.

Ahora vamos al while que hice para reemplazar todo eso, que es el motivo de mi problema, no me esta funcionando el siguiente codigo:

Código PHP:
                  <?php
                        $result 
mysqli_query($conn"SELECT ID FROM categorias");
                
?>                
                <?php
                
while ($fila mysqli_fetch_array($result)) {
                    
$id $fila['ID'];
                    
?>
                    
                    <div id="<?php echo $id?>">
                            <?php
                            $result1 
mysqli_query($link"SELECT * FROM products WHERE productCategoria = $id AND habilitado = '1'");

                            while (
$fila1 mysqli_fetch_array($result1)) {
                                
mostrarDatos1($fila1);
                            }
                            
mysqli_free_result($result1);
                            
?>     
                        </div>
                <?php }; ?>
segun yo tengo algo mal en la consulta pero no me estoy dando cuenta que... si me pueden dar una mano, sería de gran ayuda, muchas gracias.
  #2 (permalink)  
Antiguo 27/11/2015, 11:25
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: while para hacer mas dinamico un programa

Saludo.
El problema es que se están usando dos variables para la conexión,
una $conn y otra $link.

__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 27/11/2015, 12:32
 
Fecha de Ingreso: septiembre-2009
Mensajes: 39
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: while para hacer mas dinamico un programa

ok, acabo de corregir eso poniendo a ambas $link, tengo varias consultas dentro del archivo y funcionan, en esta me parece que el error se encuentra en la variable $id que no se si está bien la sintaxis en
Código PHP:
"SELECT * FROM products WHERE productCategoria = $id AND habilitado = '1'"); 
  #4 (permalink)  
Antiguo 27/11/2015, 13:13
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: while para hacer mas dinamico un programa

Saludo
Pues hacerle un echo a ese query a ver como queda.
Podría ser también concatenando los valores
Ej
"SELECT * FROM products WHERE productCategoria = ".$id." AND habilitado = '1'"
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #5 (permalink)  
Antiguo 27/11/2015, 13:47
 
Fecha de Ingreso: septiembre-2009
Mensajes: 39
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: while para hacer mas dinamico un programa

Muchas gracias mortiprogramador el problema estaba en otro lado pero me diste ideas para ir probando, al final la consulta estaba bien de esta forma
"SELECT * FROM products WHERE productCategoria = $id AND habilitado = '1'"

lo que estaba mal era el reemplazo del nombre de los div ya que el script que utilizo para llamar a cada div requiere que tenga un 0, por lo cual cada div tal como dije se llaman 01, 02, 03, etc... y yo estaba haciendo echo del $id tal cual, por lo cual solo bastaba con hacer <div id="0<?php echo $id; ?>"> agregandole ese 0 y listo, muchas gracias, doy el tema como solucionado.

Etiquetas: Ninguno
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:04.