Pergunta

Saudações,

Eu tenho dados armazenados no MySQL com delimitador "," em 1 tabela. Eu também tenho linhas e coluna armazenadas no banco de dados. Agora eu tenho que produzir os dados usando linhas e número da coluna armazenados no banco de dados para desenhar a tabela.

As linhas e o número da coluna são a entrada do usuário, para que possa variar.

Digamos que exista o número 3 na coluna e 3 em linhas.

Eu preciso fazer isso como a exibição, como,

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

Onde D1-D9 seria os dados armazenados no banco de dados MySQL com delimitador "," em uma tabela.

Obrigado por me ajudar.

Foi útil?

Solução

Você pode transformar os valores separados da vírgula da sua coluna de dados em uma matriz usando a função explode ():

<?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 exibir a tabela, você precisa de dois loops aninhados:

<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>

Outras dicas

Isso não ajudará a resolver esse problema, mas uma palavra de bom conselho: nunca escreva valores separados por vírgula em um campo de banco de dados. Você não pode consultar sensivelmente informações armazenadas assim, e seu código de aplicativo será confuso com conversões feias. Em vez disso, use uma tabela separada com uma referência à tabela principal e uma linha por valor.

Supondo que o tamanho da tabela do conjunto de usuários para 2 linhas e 3 colunas e faça algumas células de entrada 6, dados que serão destinados ao banco de dados serão

2,3, D1, D2, D3, D4, D5, D6

Quando você buscar dados da célula e fazer explodir na string buscada, você receberá 1 matriz de dimensões com 8 elementos

$ r = $ e [0] linhas

$ c = $ e [1] cols

$ E [2-7] dados

  • tag wrtite abrindo <tabela>
  • dois loops, um em outro,
  • O primeiro gerará código para o início da linha
  • Wrtite Openning <tr> tag
  • Dentro, um gera código para linha.
  • Escreva de abertura <td> tag
  • Escreva dados $ e [1 + posição calulada de dentro e fora dos loops
  • Escreva o fechamento <td> tag
  • final do loop interno
  • tag wrtite fechamento <tr>
  • Fim do loop externo
  • tag wrtite fechamento <tabela>

Deve te dar a ideia

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top