PHP MYSQL — Развернуть справку
Вопрос
Привет,
У меня есть данные, хранящиеся в MySQL с разделителем «,» в 1 таблице.У меня также есть строки и столбцы, хранящиеся в базе данных.Теперь мне нужно вывести данные, используя номера строк и столбцов, хранящиеся в базе данных, чтобы нарисовать таблицу.
Номера строк и столбцов вводятся пользователем, поэтому они могут различаться.
Допустим, в столбце есть число 3, а в строках — 3.
Мне нужно сделать это как display,
|___d1__|___d2__|___d3__|
|___d4__|___d5__|___d6__|
|___d7__|___d8__|___d9__|
Где d1-d9 — это данные, хранящиеся в базе данных MySQL с разделителем «,» в одной таблице.
Спасибо за помощь.
Решение
Вы можете превратить значения, разделенные запятыми, из столбца данных в массив, используя функцию взрыв():
<?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');
?>
Для отображения таблицы нужны два вложенных цикла for:
<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>
Другие советы
Это не поможет вам решить эту самую проблему, но небольшой совет:НИКОГДА не записывайте значения, разделенные запятыми, в поле базы данных.Вы не сможете разумно запрашивать информацию, хранящуюся таким образом, и код вашего приложения будет загромождён уродливыми преобразованиями.Вместо этого используйте отдельную таблицу со ссылкой на основную таблицу и одной строкой на каждое значение.
предполагая, что пользователь установил размер таблицы для 2 строк и 3 столбцов и вводит некоторые данные для 6 ячеек, данные, которые будут поступать в базу данных, будут
2,3,d1,d2,d3,d4,d5,d6
когда вы извлечете данные из ячейки и разнесете полученную строку, вы получите одномерный массив с 8 элементами
$r = $e[0] строк
$c = $e[1] столбцы
$e[2-7] данные
- написать открывающий тег <table>
- две петли, одна в другой,
- первый сгенерирует код для начала строки
- написать открывающий тег <tr>
- внутри одного будет сгенерирован код для строки.
- написать открывающий тег <td>
- запись данных $e[1 + позиция, рассчитанная из внутреннего и внешнего циклов]
- написать закрывающий тег <td>
- конец внутреннего цикла
- написать закрывающий тег <tr>
- конец внешнего цикла
- написать закрывающий тег <table>
Это должно дать вам представление