Содержание
Delphi for PHP: отображение таблицы

Посмотрим, как в Delphi for PHP можно отобразить табличные данные. Для этого при помощи MySQL Administrator создадим таблицу goods с информацией о товарах. Поля таблицы:



Кодировка таблицы и Table Engine - как у таблицы users. Заполним таблицу несколькими записями для примера.

В Delphi for PHP добавим новую форму <File - New - Form>. Поместим на форму метку Label1 с надписью База данных. Теперь отобразим данные из таблицы goods. Можно перетащить на форму компоненты Database, Table (или Query), Datasource и DBGrid и произвести их настройку, а можно подключить базу данных и сделать это почти автоматически. Для этого на панели Data Explorer нужно по правой кнопке на записи MySQL зарегистрировать базу данных. В нашем примере параметры регистрации:



После рагистрации получим дерево базы данных со всеми таблицами и полями.



Теперь достаточно в панели Data Explorer выбрать нужную таблицу и перетащить ее на форму. При этом будут автоматически созданы, поименованы и настроены необходимые компоненты для отображения содержимого БД в виде таблицы.



Настроим колонки для отображения. Для этого в свойстве Columns сетки введем количество и наименования столбцов, а также соответствующие им поля запрашиваемой таблицы. Также можно настроить другие характеристики, например, ширину поля, цвет и, главное, - свойство ReadOnly. По умолчанию это свойство установлено в false, что позволяет напрямую редактировать данные в сетке.



В результате при тестировании получим в браузере запрошенную таблицу:



Примечание.
Все это работает только в случае, если папка с файлами проекта находится в папке на диске C:. Возможно, это особенности триал-версии, но при размещении проекта на другом диске в браузере ничего не отображается.

Естественно, можно отобразить содержимое таблицы или запроса традиционным способом. Для этого нужно поместить на форму компоненты Database и Query (можно просто скопировать их из первой формы), настроить их и написать обработку, срабатывающую при старте формы (событие OnShow для формы Unit2 в Object Inspector). Обработка события может выглядеть следующим образом:

               function Unit2Show($sender, $params)
               {

                 //устанавливаем соединение
                 $this->Database1->Open();

                 //устанавливаем кодировку запросов
                 $sql="SET NAMES cp1251";
                 $this->Query1->SQL=$sql;
                 $this->Query1->LimitStart='-1';
                 $this->Query1->LimitCount='-1';
                 $this->Query1->Open();
                 $this->Query1->Close();

                 //выполняем запрос
                 $sql="select name, um, quantity, cost from `test`.`goods`";
                 $this->Query1->SQL=$sql;
                 $this->Query1->LimitStart='0';
                 $this->Query1->LimitCount='10';
                 $this->Query1->Open();

                 //количество записей должно быть больше нуля
                 if ($this->Query1->readRecordCount()>0)
                 {

                   //отображаем заголовок таблицы
                   echo "<br>";
                   echo '<font size=3>База данных</font>';
                   echo "<br>";
                   echo "<br>";
                   echo "<table cellspacing=0 cellpadding=1 border=1
                         width=90% align=left>";

                   //отображаем названия полей
                   echo "<tr>";
                   echo "<th align=center>
                         <font size=2>Наименование</font></th>";
                   echo "<th align=center>
                         <font size=2>Единица измерения</font></th>";
                   echo "<th align=center>
                         <font size=2>Количество</font></th>";
                   echo "<th align=center>
                         <font size=2>Цена</font></th>";
                   echo "</tr>";

                   //в цикле выводим записи из результата запроса
                   $this->Query1->First();
                   while (!$this->Query1->EOF)
                   {

                     echo "<tr>";
                     echo "<td>" . $this->Query1->name . "</td>";
                     echo "<td>" . $this->Query1->um . "</td>";
                     echo "<td>" . $this->Query1->quantity . "</td>";
                     echo "<td>" . $this->Query1->cost . "</td>";
                     echo "</tr>";

                     $this->Query1->Next();

                   }

                   echo '</table>';

                 }

                 $this->Query1->Close();

                 //закрываем соединение
                 $this->Database1->Close();

               }

В результате получим:



Результат похож,  но действий пришлось выполнить побольше.

Итак, теперь программа умеет открывать окно аутентификации и при положительном результате перенаправлять пользователя на страницу с табличной информацией. Есть, однако, проблема. Если просто набрать в адресной строке браузера http://localhost/mytest/unit2.php (или в Delphi for PHP выполнить команду Run из формы unit2), то страница с таблицей данных откроется безо всякой аутентификации. Для того, чтобы подобные страницы мог посещать только пользователь, прошедший аутентификацию, задействуем механизм сессий.

Содержание

© re-stichka.narod.ru
При публикации данного материала ссылка на источник обязательна.

Hosted by uCoz