Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Tabla dinámica con la base de datos

Estas en el tema de Tabla dinámica con la base de datos en el foro de PHP en Foros del Web. Buenos días Quería saber como puedo crear una tabla de 5 columnas y una X cantidad de filas Yo en la base de datos tengo ...
  #1 (permalink)  
Antiguo 12/03/2015, 07:49
 
Fecha de Ingreso: febrero-2015
Mensajes: 27
Antigüedad: 9 años, 2 meses
Puntos: 0
Pregunta Tabla dinámica con la base de datos

Buenos días

Quería saber como puedo crear una tabla de 5 columnas y una X cantidad de filas

Yo en la base de datos tengo guardada las direcciones donde se guardan unas fotos

Y en la pagina tengo un select donde el usuario elije un producto

De acuerdo al producto (tiene su propio id), quiero que en la tabla aparezcan las fotos
Hasta acá no hay problema

El problema es que no todos los productor tienen la misma cantidad de fotos

Quería saber como hacer esa tabla, que dinamicamente con la base de datos se sumen filas para que se llene la tabla

ej: si tiene 3 fotos solo se me cree una fila de fotos, o si tiene 10 fotos se me creen 2 filas de fotos, o si tiene 24 fotos se me creen 5 filas de fotos y deje un lugar vació y asi
  #2 (permalink)  
Antiguo 12/03/2015, 07:52
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Tabla dinámica con la base de datos

¿Quieres decir que necesitas una fila por cada 5 imágenes?

SI es así entonces está muy mal tu diseño de la base de datos, así no se hacen las cosas, la idea de usar relaciones entre tablas es, que, si tienes 3 fotos tengas tres filas en otra tablas relacionada a tu tabla principal, etc.

Es decir, es muy rebuscada tu "solución" y el dejar huecos en la base de datos es inaceptable.

PDTA: tu problema tiene que ver mucho más con base de datos que con programación PHP, por favor procura consultar en el sub-foro adecuado para la próxima.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 12/03/2015, 08:06
 
Fecha de Ingreso: febrero-2015
Mensajes: 27
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Tabla dinámica con la base de datos

Cita:
Iniciado por pateketrueke Ver Mensaje
¿Quieres decir que necesitas una fila por cada 5 imágenes?

SI es así entonces está muy mal tu diseño de la base de datos, así no se hacen las cosas, la idea de usar relaciones entre tablas es, que, si tienes 3 fotos tengas tres filas en otra tablas relacionada a tu tabla principal, etc.

Es decir, es muy rebuscada tu "solución" y el dejar huecos en la base de datos es inaceptable.

PDTA: tu problema tiene que ver mucho más con base de datos que con programación PHP, por favor procura consultar en el sub-foro adecuado para la próxima.

Entendiste mal, en la pagina quiero que se haga una tabla y que diatónicamente si es necesario por la cantidad de fotos en la base de datos, se agrege una fila en la tabla de mi pagina

se hace con php segun entendi, pero no se como
  #4 (permalink)  
Antiguo 12/03/2015, 08:08
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Tabla dinámica con la base de datos

¿Entonces con tablas te referías a <table> de HTML?

Caray, de haber sabido, perdón por no interpretar bien tu mensaje, pero pudiste ser más claro.

Acá tienes una guía de cómo construir tablas (de html) así como lo mencionas: http://www.forosdelweb.com/f18/aport...tablas-618528/
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 12/03/2015, 08:16
 
Fecha de Ingreso: febrero-2015
Mensajes: 27
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Tabla dinámica con la base de datos

Cita:
Iniciado por pateketrueke Ver Mensaje
¿Entonces con tablas te referías a <table> de HTML?

Caray, de haber sabido, perdón por no interpretar bien tu mensaje, pero pudiste ser más claro.

Acá tienes una guía de cómo construir tablas (de html) así como lo mencionas: [url]http://www.forosdelweb.com/f18/aporte-representacion-datos-con-tablas-618528/[/url]
Perdón, tenes razón, trae a la confucion

Pero en la guía para hacer las tablas que me pasas esta definido la cantidad de filas y columnas;

Yo tengo definido las columas, pero las filas son de acuerdo a los datos que traigo de la base de datos

es lo que antes trate de explicar, si en la base de datos hay 9 datos la tabla tendria que tener 9/5
Osea 2 filas

Y asi varia con cada producto la cantidad de filas

Repito, los productos se elijen con un select que hace un submit y en ese submit trae los datos de la base de datos que no se como hacerlos dinamicos

Me exprese mejor? es rebuscado mi problema lo sé jaja
  #6 (permalink)  
Antiguo 12/03/2015, 08:29
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: Tabla dinámica con la base de datos

No se entiende el problema que te puede causar repartir 9 fotos en dos filas de 5. A fin de cuentas, si ya tienes los 9 registros de la base, luego son simplemente iteraciones anidadas, con dos contadores y dentro del loop interno, una condicion de salida para el caso de terminarse los items antes de completar las cinco celdas.
En realidad u problema está más relacionado con el razonamiento del algoritmo que otra cosa.
¿Por qué no posteas como lo tienes hasta ahora, y vemos qué se puede mejorar?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 13/03/2015, 04:44
 
Fecha de Ingreso: febrero-2015
Mensajes: 27
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Tabla dinámica con la base de datos

Cita:
Iniciado por gnzsoloyo Ver Mensaje
No se entiende el problema que te puede causar repartir 9 fotos en dos filas de 5. A fin de cuentas, si ya tienes los 9 registros de la base, luego son simplemente iteraciones anidadas, con dos contadores y dentro del loop interno, una condicion de salida para el caso de terminarse los items antes de completar las cinco celdas.
En realidad u problema está más relacionado con el razonamiento del algoritmo que otra cosa.
¿Por qué no posteas como lo tienes hasta ahora, y vemos qué se puede mejorar?

Código PHP:
<body>
    <?php     $xxx 0?>
        <form name="formul" method="get" action="test.php">
            <?php $selected_val $_GET["miSelect"]; ?>
            <select name='miSelect' onchange='this.form.submit()' id='miSelect'>
            <?php
                
while ($row $stmt->fetch()) {        
                echo 
"<option value='$id' ";
                if(
$_GET['miSelect']==$id){ 
                echo 
" SELECTED ";
                };
                echo 
">";
                echo 
$titulo;
                echo 
"</option>";
                if (
$xxx == 0){
                
$selected_val "$id";
                }        
                
$xxx += 1;    
                }
            
?>
            </select>
            <?php if(isset($_GET['miSelect'])){
            
$selected_val $_GET['miSelect'];
            };
            
?>
        </form>

        <?php
        
// Mostrar las fotos seleccionadas

        
if ($selected_val 0){
            
$stmtt $mysqli->prepare("SELECT FotId, FotUrl, FotUrl2, FotUrl3, FotUrl4, FotUrl5, FotUrl6, FotUrl7, FotUrl8, FotUrl9, FotUrl10, FotUrl11, FotUrl12, FotUrl13, FotUrl14, FotUrl15 FROM tblfoto WHERE AutId = $selected_val");
            
$stmtt->execute();
            
$stmtt->store_result();
            
$stmtt->bind_result($FotIdi$foto1$foto2$foto3$foto4$foto5$foto6$foto7$foto8$foto9$foto10$foto11$foto12$foto13$foto14$foto15);
            while (
$rows $stmtt->fetch()) { }                    
                                }    
?>
        <br>
        <br>
        <img src="<?php echo $FotUrll ?>" width="140" height="70" alt="Tam. original" border="3">
Primero esta el select, elijo el auto

Después preparo las fotos de acuerdo a su id

No todos los autos tienen solo 15 fotos

en la ultima linea muestro solo una imagen, pero tengo que mostrar todas las fotos que tenga el auto en el formato que dije

en 5 columnas y la cantidad de filas necesarias
  #8 (permalink)  
Antiguo 13/03/2015, 05:25
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: Tabla dinámica con la base de datos

Cita:
No todos los autos tienen solo 15 fotos
Eso se entiende perfectamente, pero esto:
Código SQL:
Ver original
  1. SELECT FotId, FotUrl, FotUrl2, FotUrl3, FotUrl4, FotUrl5, FotUrl6, FotUrl7, FotUrl8, FotUrl9,
  2. FotUrl10, FotUrl11, FotUrl12, FotUrl13, FotUrl14, FotUrl15
  3. FROM tblfoto
  4. WHERE AutId = $selected_val
Muestra que tienes una tabla espantosamente diseñada, que no sólo no te sirve para hacer bien las cosas, sino que te causa problemas aa la hora de intentarlo...
Esa "cosa" que tienes por tabla de foros, está MAL. Ni siquiera respeta el modelo E-R de BBDD, y es la raiz de todo el asunto...

Es un defecto de diseño de datos muy habitual en los principiantes, y te comento que si la rediseñaras, sería muchísimo más sencillo.

Para decirlo en pocas palabras: Si no todos los autos tienen 15 foros, entonces no puedes ni debes crear una tabla con 15 campos para las fotos. Eso no es correcto. Lo que debes hacer es una tabla que tenga una relación 1:N con los autos, tal que haya de cero a N fotos diferentes en diferentes registros, relacionadas con el auto, cada una de ellas a su vez con su propio identificador.
Si lo planteases así, la consulta sería por ejemplo:
Código SQL:
Ver original
  1. SELECT AutId, IdFoto, FotUrl
  2. FROM tblfoto WHERE AutId = $selected_val
Lo que te devolveria un array de 0 a 15 fotos (e incluso podrías poner muchas mas sin causar problemas), que puedes recorrer en forma anidada, y puede construirse en forma dinámica.
Pero tal como lo tienes, tendrás que hardcodear la estructura de 5x3, con uso de if() para validar si existe o no URL en el campo que aplica.
La verdad, creo que modificar esa cosa que usas de tabla e un trabajo más simple.

Pero, bueno, es tu decisión... ¿Qué quieres hacer? ¿Corriges ese diseño defectuoso, o quieres seguir con lo que tienes y sufrir cada vez que necesites hacer algo con las fotos?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 13/03/2015, 07:00
 
Fecha de Ingreso: febrero-2015
Mensajes: 27
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Tabla dinámica con la base de datos

Entiendo perfectamente que la bd esta espantosamente diseñada

Pero no tengo permisos de modificarla

Hice una cadena muy larga de if donde defino cuales casillas estan nulas, para ver cuantas fotos tiene cada auto


Código PHP:
        <?php
        
// Mostrar las fotos seleccionadas
        
$foto"foto";
        if (
$selected_val 0){
            
$stmtt $mysqli->prepare("SELECT FotId, FotUrl, FotUrl2, FotUrl3, FotUrl4, FotUrl5, FotUrl6, FotUrl7, FotUrl8, FotUrl9, FotUrl10, FotUrl11, FotUrl12, FotUrl13, FotUrl14, FotUrl15 FROM tblfoto WHERE AutId = $selected_val");
            
$stmtt->execute();
            
$stmtt->store_result();
            
$stmtt->bind_result($FotIdi$foto1$foto2$foto3$foto4$foto5$foto6$foto7$foto8$foto9$foto10$foto11$foto12$foto13$foto14$foto15);
            while (
$rows $stmtt->fetch()) { 
            if(
$foto1 == NULL)
            {
            
$lugar1 FotUrl;
        
//    echo $lugar1;
            
}        
            else
            {
                if(
$foto2 == NULL)
                {
                
$lugar2 FotUrl2;
            
//    echo $lugar2;
                
}        
                else
                {
                    if(
$foto3 == NULL)
                    {
                    
$lugar3 FotUrl3;
                
//    echo $lugar3;        
                    
}
                        else
                        {
                            if(
$foto4 == NULL)
                            {
                            
$lugar4 FotUrl4;
                        
//    echo $lugar4;
                            
}            
                                else
                                {
                                    if(
$foto5 == NULL)
                                    {
                                    
$lugar5 FotUrl5;
                                
//    echo $lugar5;        
                                    
}
                                        else
                                        {
                                            if(
$foto6 == NULL)
                                            {
                                            
$lugar6 FotUrl6;
                                        
//    echo $lugar6;
                                            
}        
                                                else
                                                {
                                                    if(
$foto7 == NULL)
                                                    {
                                                    
$lugar7 FotUrl7;
                                                
//    echo $lugar7;
                                                    
}        
                                                        else
                                                        {
                                                            if(
$foto8 == NULL)
                                                            {
                                                            
$lugar8 FotUrl8;
                                                        
//    echo $lugar8;
                                                            
}
                                                                else
                                                                {
                                                                    if(
$foto9 == NULL)
                                                                    {
                                                                    
$lugar9 FotUrl9;

                                                                
///    echo $lugar9;
                                                                    
}                        
                                                                        else
                                                                        {
                                                                            if(
$foto10 == NULL)
                                                                            {
                                                                            
$lugar10 FotUrl10;
                                                                        
//    echo $lugar10;
                                                                            
}        
                                                                                else
                                                                                {
                                                                                    if(
$foto11 == NULL)
                                                                                    {
                                                                                    
$lugar11 FotUrl11;
                                                                                
//    echo $lugar11;
                                                                                    
}        
                                                                                        else
                                                                                        {
                                                                                            if(
$foto12 == NULL)
                                                                                            {
                                                                                            
$lugar12 FotUrl12;
                                                                                        
//    echo $lugar12;
                                                                                            
}        
                                                                                                else
                                                                                                {
                                                                                                    if(
$foto13 == NULL)
                                                                                                    {
                                                                                                    
$lugar13 FotUrl13;
                                                                                                
//    echo $lugar13;
                                                                                                    
}        
                                                                                                        else
                                                                                                        {
                                                                                                            if(
$foto14 == NULL)
                                                                                                            {
                                                                                                            
$lugar14 FotUrl14;
                                                                                                        
//    echo $lugar14;
                                                                                                            
}        
                                                                                                                else{
                                                                                                                    if(
$foto15 == NULL){
                                                                                                                    
$lugar15 FotUrl15;
                                                                                                                
//    echo $lugar15;
                                                                                                                    
}
                                                                                                                    else{
                                                                                                                        
$fullIn=1;
                                                                                                                    
//    echo $fullIn;
                                                                                                                    
}
                                                                                                                    }}}}}}}}}}}}}}        
        }                    
                                }    

        
$cant_filas $stmtt->num_rows;
        echo 
$cant_filas
        
$campoElejido $lugar1 .$lugar2 .$lugar3 .$lugar4 .$lugar5 .$lugar6 .$lugar7 .$lugar8 .$lugar9 .$lugar10 .$lugar11 .$lugar12 .$lugar13 .$lugar14 .$lugar15;
        if(
$cant_filas==1){
            
//Lo que aparece en la pantalla es el campo donde se tiene que guardar, primera fila, misma columna
            
echo "En la primera fila" .$campoElejido"El Id de la fila"$FotIdi;
        }
        if(
$cant_filas==2){
            
//Mismo nombre de columna, pero se guarda en la segunda fila
            
echo "En la segunda fila" .$campoElejido"El Id de la fila" .$FotIdi;
        };
        
?>
Y funciona bien, pero no se con estos datos como hacer la tabla con las fotos
  #10 (permalink)  
Antiguo 13/03/2015, 07:07
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: Tabla dinámica con la base de datos

TE planteo la lógica de una construccion dinámica de una tabla. Rellena tu las cosas que faltan:
Código PHP:
If($result)
          {
        
// Inicio de la tabla
        // ... 
        // Tomar total de campos de la tabla
        
$fcount mysqli_field_count($result);
        
// REcorrer el total de registros
        
while ($row mysqli_fetch_array($result)) {
            
// Crear nueva linea
            
$celda 0;
            for (
$i 0$i $fcount$i++) {
                
// contar campo
                
$celda $celda 1;
                
// por cada campo de una linea
                
if(isset ($row[$i]) or $row[$i]!="")
                {
                    
// Agrega celda con dato
                
}
                else 
                {
                    
//agrega celda vacia
                
}
                
//verificar si se terminaron los campos.
                // de no ser asi, se cierra la linea y se abre otra
                
if ($celda 5) {
                    
// cerrar la linea y abrir una nueva.
                    // ...
                    // el contador de campos se vuelve a cero
                    
$celda 0;
                }
                }
            }
            
// cierre de linea
        
}
        
// cierre de tabla
        //...        
        

Por cierto, yo insistiría con tu cliente que se DEBE modificar esa estructura, porque generará muy graves problemas a futuro.
Como arquitecto de la aplicación y responsable del desarrollo es tu obligación advertir al cliente de lo nocivo de esa estructura. Y en caso que el cliente rechace el cambio, que te lo responda por escrito, porque sino luego te harán responsable a ti de una decisión que no tomaste.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 13/03/2015, 07:16
 
Fecha de Ingreso: febrero-2015
Mensajes: 27
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Tabla dinámica con la base de datos

Cita:
Iniciado por gnzsoloyo Ver Mensaje
TE planteo la lógica de una construccion dinámica de una tabla. Rellena tu las cosas que faltan:
Código PHP:
If($result)
          {
        
// Inicio de la tabla
        // ... 
        // Tomar total de campos de la tabla
        
$fcount mysqli_field_count($result);
        
// REcorrer el total de registros
        
while ($row mysqli_fetch_array($result)) {
            
// Crear nueva linea
            
$celda 0;
            for (
$i 0$i $fcount$i++) {
                
// contar campo
                
$celda $celda 1;
                
// por cada campo de una linea
                
if(isset ($row[$i]) or $row[$i]!="")
                {
                    
// Agrega celda con dato
                
}
                else 
                {
                    
//agrega celda vacia
                
}
                
//verificar si se terminaron los campos.
                // de no ser asi, se cierra la linea y se abre otra
                
if ($celda 5) {
                    
// cerrar la linea y abrir una nueva.
                    // ...
                    // el contador de campos se vuelve a cero
                    
$celda 0;
                }
                }
            }
            
// cierre de linea
        
}
        
// cierre de tabla
        //...        
        

Por cierto, yo insistiría con tu cliente que se DEBE modificar esa estructura, porque generará muy graves problemas a futuro.
Como arquitecto de la aplicación y responsable del desarrollo es tu obligación advertir al cliente de lo nocivo de esa estructura. Y en caso que el cliente rechace el cambio, que te lo responda por escrito, porque sino luego te harán responsable a ti de una decisión que no tomaste.
Se lo remarque muchas veces al cliente, voy a pedirle la respuesta por escrito asi no tengo complicaciones

Así lo pongo abajo de la cadena de if que puse antes?

Código PHP:
If($stmtt)  //en vez de $result pongo donde yo guarde los datos de la busqueda
          
{
        
// Inicio de la tabla
        // Tomar total de campos de la tabla
        
$fcount mysqli_field_count($stmtt);
        
// REcorrer el total de registros
        
while ($row mysqli_fetch_array($stmtt)) {
            
// Crear nueva linea
            
$celda 0;
            for (
$i 0$i $fcount$i++) {
                
// contar campo
                
$celda $celda 1;
                
// por cada campo de una linea
                
if(isset ($row[$i]) or $row[$i]!="")
                {
                    
// Agrega celda con dato
                
}
                else 
                {
                    
//agrega celda vacia
                
}
                
//verificar si se terminaron los campos.
                // de no ser asi, se cierra la linea y se abre otra
                
if ($celda 5) {
                    
// cerrar la linea y abrir una nueva.
                    // ...
                    // el contador de campos se vuelve a cero
                    
$celda 0;
                }
                }
            }
            
// cierre de linea
        
}
        
// cierre de tabla 
Tendria que agregar la foto correspondiente de acuerdo a la cantidad de fotos

Por que me salta Warning: mysqli_field_count() expects parameter 1 to be mysqli, object given in /home2/mrcarcl/public_html/PreProduccion/test.php on line 185
  #12 (permalink)  
Antiguo 13/03/2015, 07:30
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: Tabla dinámica con la base de datos

Sólo te plantee la lógica. No he verificado la exactitud del uso de las funciones de MySQLI.
Para eso debes usar el manual...

http://php.net/manual/es/mysqli.field-count.php

http://php.net/manual/es/mysqli-result.fetch-array.php

Sin duda deben estar faltando cosas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: select, 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 03:19.