PHP MYSQL - взорвать помощь - PullRequest
       15

PHP MYSQL - взорвать помощь

1 голос
/ 16 ноября 2008

Привет,

У меня есть данные, хранящиеся в MySQL с разделителем "," в 1 таблице. У меня есть строки и столбцы, хранящиеся в базе данных тоже. Теперь мне нужно вывести данные, используя строки и номер столбца, хранящиеся в базе данных, чтобы нарисовать таблицу.

Строки и номера столбцов вводятся пользователем, поэтому они могут различаться.

Допустим, в столбце есть номер 3, а в строках - 3.

Мне нужно сделать это как дисплей, как,

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

Где d1-d9 - данные, хранящиеся в базе данных mysql с разделителем "," в одной таблице.

Спасибо за помощь.

Ответы [ 3 ]

6 голосов
/ 16 ноября 2008

Это не поможет вам решить эту проблему, но есть хороший совет: НИКОГДА не пишите через запятую значения в поле базы данных. Вы не можете разумно запрашивать информацию, хранящуюся, как это, и код вашего приложения будет загроможден уродливыми преобразованиями. Вместо этого используйте отдельную таблицу со ссылкой на основную таблицу и по одной строке на значение.

6 голосов
/ 16 ноября 2008

Вы можете превратить разделенные запятыми значения из столбца данных в массив, используя функцию 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');
?>

Для отображения таблицы вам понадобятся два вложенных цикла 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>
0 голосов
/ 16 ноября 2008

при условии, что пользователь установил размер таблицы для 2 строк и 3 столбцов и сделал несколько входных данных для 6 ячеек, данные, которые попадут в базу данных, будут

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

когда вы будете извлекать данные из ячейки и выполнять разнесение по извлеченной строке, вы получите 1 массив измерений с 8 элементами

$ r = $ e [0] строк

$ c = $ e [1] cols

$ e [2-7] data

  • wrtite opening
  • две петли, одна в другой,
  • первый сгенерирует код для начала строки
  • тег wrtite opening
  • внутри одного сгенерирует код для строки.
  • записать открывающий тег
  • запись данных $ e [1 + позиция вычисляется из внутренней и внешней петель]
  • написать закрывающий тег
  • конец внутреннего цикла
  • закрывающий тег
  • конец внешней петли
  • закрыть закрывающий тег

Это должно дать вам идею

...