Pregunta

Saludos,

Tengo datos almacenados en mysql con delimitador ", " en 1 mesa. También tengo filas y columnas almacenadas en la base de datos. Ahora tengo que generar los datos usando filas y columnas almacenadas en la base de datos para dibujar la tabla.

Las filas y el número de columna son entradas del usuario, por lo que pueden variar.

Digamos que hay un número 3 en la columna y 3 en las filas.

Necesito hacerlo como mostrar como,

|___d1__|___d2__|___d3__|
|___d4__|___d5__|___d6__|
|___d7__|___d8__|___d9__|

Donde d1-d9 serían los datos almacenados en la base de datos mysql con delimitador ", " en una mesa.

Gracias por ayudarme.

¿Fue útil?

Solución

Puede convertir los valores separados por comas de su columna de datos en una matriz utilizando la función explotar ():

<?php
  $result = mysql_query('SELECT rows, columns, data from table_name where id=1');
  $record = mysql_fetch_assoc($result);

  $rows = $record['rows'];
  $columns = $record['columns'];

  $data = explode(',' , $record['data']);

  if (sizeof($data) != $rows * $columns) die('invalid data');
?>

Para mostrar la tabla, necesita dos bucles for anidados:

<table>
<?php for ($row = 0; $row < $rows; $row++) : ?>
    <tr>
    <?php for ($column = 0; $column < $columns; $column++) : ?>
        <td>
            <?php echo $data[$row * $columns + $column]; ?>
        </td>
    <?php endfor ?>
    </tr>
<?php endfor ?>
</table>

Otros consejos

Esto no lo ayudará a resolver este mismo problema, pero un buen consejo: nunca escriba valores separados por comas en un campo de base de datos. No puede consultar de manera sensata la información almacenada de esta manera, y el código de su aplicación estará abarrotado de conversiones feas. En su lugar, use una tabla separada con una referencia a la tabla principal y una fila por valor.

suponiendo que el usuario establezca el tamaño de la tabla para 2 filas y 3 columnas y realice alguna entrada para 6 celdas, los datos que irán a la base de datos serán

  

2,3, d1, d2, d3, d4, d5, d6

cuando vayas a buscar datos de la celda y hagas explotar en una cadena obtenida obtendrás una matriz de 1 dimensión con 8 elementos

$ r = $ e [0] filas

$ c = $ e [1] cols

$ e [2-7] datos

  • wrtite openning < tabla > etiqueta
  • dos bucles, uno en otro,
  • el primero generará código para el inicio de la fila
  • wrtite openning < tr > etiqueta
  • dentro de uno generará código para la fila.
  • escribir apertura < td > etiqueta
  • escribir datos $ e [1 + posición calculada desde el interior y el exterior de los bucles]
  • escribir cierre < td > etiqueta
  • final del bucle interior
  • wrtite cierre < tr > etiqueta
  • fin del bucle exterior
  • wrtite cierre < tabla > etiqueta

Debería darte la idea

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top