Я создаю часть системы, в которой пользователь может определить «представления» из базы данных mysql.
Я хочу, чтобы какой-то способ генерации простых таблиц / отчетов HTML из данных, но не только простой вывод sql-запросов – простых объединений, вероятно, недостаточно.
Есть идеи?
Просто чтобы быть ясным : я прекрасно знаю, как создать таблицу HTML с PHP / MySQL – это простая часть. Я хочу, чтобы мои ПОЛЬЗОВАТЕЛИ могли создавать свои собственные таблицы, не подвергаясь этому процессу!
Правильно, я дам несколько подробностей – спасибо за все ответы:
В настоящее время пользователи могут создавать таблицы с помощью мастера, а затем просматривать / редактировать / удалять записи в этих таблицах. Это затрудняет представление примера, поскольку таблицы могут измениться. Данные, которые я ожидаю, что клиент будет вводить, – это аренда домов – таблица домов, арендаторов, комнат, вопросы обслуживания и т. Д.
То, что я хочу сделать, это создать некоторый базовый отформатированный вывод определенного вида, например «показать рентабельность аренды в текущем месяце для всех домов» или «показать просроченных арендаторов» или «показать комнаты без арендаторов». После настройки они будут отображаться только, а не редактироваться, поэтому процесс должен быть терпимым для настройки.
Имеет ли это смысл? Если это невозможно, я просто перекодирую взгляды – просто делает систему менее гибкой!
Вы должны определить, как пользователи будут создавать эти HTML-таблицы. Устанавливают ли они несколько строк и столбцов, а затем загружают таблицу вручную?
Как только мы должны были сделать систему шаблонов, где все изображения, свойства css, позиционирование различных html-блоков и т. Д. Вся система была 5 или 6 таблицами mysql только для хранения свойств шаблонов, но если это просто таблица, вы можете облегчить процесс ,
Представьте одну таблицу mysql для формата таблицы и свойств (количество строк, количество столбцов, ширину столбца, цвета и т. Д.) И другую таблицу mysql для ввода данных. Эта вторая таблица должна иметь столбцы для хранения позиций даты, строки и столбца.
В остальном все формы доступны для нетехнических пользователей для настройки и подачи таблицы, а также для рендеринга таблицы с некоторыми петлями и запросами PHP.
Это то, что вы ищете? Он будет динамически генерировать html-таблицу из результата mysql независимо от того, какой или какой большой результат.
//this function dynamically outputs a basic HTML table from any mysql result function createTable($result) { $table = '<table><tr>'; for ($x=0;$x<mysql_num_fields($result);$x++) $table .= '<th>'.mysql_field_name($result,$x).'</th>'; $table .= '</tr>'; while ($rows = mysql_fetch_assoc($result)) { $table .= '<tr>'; foreach ($rows as $row) $table .= '<td>'.$row.'</td>'; $table .= '</tr>'; } $table .= '<table>'; //mysql_data_seek($result,0); //if we need to reset the mysql result pointer to 0 return $table; }
Вот как вы печатаете таблицу:
echo createTable($result);
Вы можете использовать phpMyAdmin, чтобы показать MySQL в хороших таблицах, или если вы хотите сам его закодировать, вы можете использовать PHP и HTML для выполнения работы:
<table> <?php mysql_connect("localhost", "mysql_user", "mysql_password") or die("Could not connect: " . mysql_error()); mysql_select_db("mydb"); $result = mysql_query("SELECT id, name FROM mytable"); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { ?> <tr> <td><?=$row['id']; ?></td> <td><?=$row['name']; ?></td> </tr> <? } mysql_free_result($result); ?> </table>
Изменить: после прочтения ваших изменений, может быть, не самая лучшая идея заставить пользователей «создавать свои собственные таблицы», но вместо этого предоставить им несколько опций и сортировать заказы, чтобы создать лучший пользовательский интерфейс. В противном случае это просто форма с некоторыми элементами ввода и некоторыми операторами if.
Вам придется разоблачить пользователей для части процесса, так как они должны каким-то образом описать отношения таблиц и таблиц. Вы можете взять страницу от таких, как Crystal Reports, Visual Studio и phpMyAdmin, и создать визуальный дизайнер таблиц. Таблица представлена в виде прямоугольника с заголовком, отображающим имя таблицы и список полей. Таблицы находятся на холсте и могут быть размещены в любом месте этого холста. Внешние ключи представляются в виде линий, соединяющих поля.
Вы можете использовать тот же интерфейс, что и создатель запроса: пользователь указывает, какие таблицы запрашивать, перетаскивая их из списка таблиц в холст, какие поля они интересуют (возможно, включает флажок рядом с каждым столбцом) и какие поля для объединения, соединяя поля с линиями. Чтобы присоединиться к таблице для себя, вы можете разрешить добавление таблицы в запрос более одного раза или разрешить подключать поля в таблице к другим полям в одной таблице.
Если у вас его нет, возьмите phpMyAdmin , установите его, откройте базу данных и перейдите на вкладку «Дизайнер», чтобы узнать, как она работает. Вы также можете посмотреть некоторые скриншоты
Примерно 100% веб-сайтов выполняют ту же задачу: создайте таблицы HTML из базы данных SQL.
Таким образом, вы можете получить себе книгу PHP / Mysql, чтобы получить представление. Хотя все таблицы жестко запрограммированы программистом.
Что касается пользовательских представлений, это может быть немного сложнее. Но возможно тоже
<?php $query="SELECT * FROM table_name"; $result=mysql_query($query); $numfields = mysql_num_fields($result); echo "<table border=1><tr>"; for ($i=0; $i < $numfields; $i++) // Header { echo '<th>'.mysql_field_name($result, $i).'</th>'; } echo "</tr>"; while ($res=mysql_fetch_row($result)) //you may use mysql_fatch_array($result) which can hendel both $res[name] and $res[1] { echo" <tr> <td> $res[0]</td> <td> $res[1]</td> <td> $res[2]</td> . . . </tr>"; } echo"</table>"; ?>
100% Работа только что изменилась. $ query в соответствии с вашей таблицей