PHP. Изучение языков и web-технологий PHP. Изучение языков и web-технологий

Конспект изучения языков и web-технологий : PHP

 
Мистический роман
БЛИЗКАЯ ДАЛЬ
Татьяны Катушонок

Купить в магазинах:
Близкая даль
Близкая даль
Близкая даль
Близкая даль
Близкая дальБлизкая даль
Озарение души
Сборник стихов Татьяны Катушонок
Осознание красоты спасет мир
Web technologies and programming languages
Web технологии и языки
XML - XSLT
Изучаем XML
Преобразования
HTML
Изучаем HTML
Теги
Javascript и AJAX
Три кита
Листенеры
Каталог
Список литературы
Основы языка
Publishing MySQL Data on the Web
Структурное программирование
Простая CMS
Особенности коннекта к Oracle
Cookies, Sessions, Access Control, Binaty Data

Простая CMS
четверг
Просто рабочий конспект
Чтобы перейти от простой html-странички, отображающей данные, хранящиеся в базе, необходима CMS - content management system. Такая система состоит из ряда web-страниц, доступ к которым ограничен авторизованным юзерам. Интерфейс должен позволять просматривать и изменять хранящуюся в базе информацию, не заботясь о деталях SQL-запросов.
Функционал можно разместить в отдельных в папках.
В каждой папке находится свой index.php, фактически, свой контроллер.
 
<ul>
      <li><a href="jokes/">Manage Jokes</a></li>
      <li><a href="authors/">Manage Authors</a></li>
      <li><a href="categories/">Manage Joke Categories</a></li>
</ul>
 
Дальше всё по обычной схеме - формы с возвратом в контроллер, где происходит исполнение действий.



Аналогично для любой функциональности.
Если обработка выполняется в основном контроллере, то возврат выполняется с помощью функции:

 
header('Location: .');
exit();
 

Если обработка во внешнем модуле/форме, то возврат  задаётся параметром action="" формы.
Значение может быть пустым, либо , например, action="delete".

В списке отображаемых данных в конце каждой строки (как вариант) добавляется кнопка с определённой функцией или группой функций (delete/edit/...).
В этом случае, каждая строка данных - как форма.
Для связи с основным контроллером передаваемые данные оформляются через скрытые кнопки:
 
<ul>
   <?php foreach ($authors as $author): ?>
     <li>
     <form action="" method="post">
     <div>
        <?php htmlout($author['name']); ?>
        <input type="hidden" name="id" value="<?php echo $author['id']; ?>"/>
        <input type="submit" name="action" value="Edit"/>
        <input type="submit" name="action" value="Delete"/>
     </div>
     </form>
     </li>
  <?php endforeach; ?>
</ul>

 Если использовать checkbox, то достаточно по одной кнопке действий на всю таблицу.
Формирование отмеченного списка строк несколько хитрее:

 
 <?php if (isset($users)): ?>
     <table>
       <tr><th>Отметить</th><th>Юзер</th><th>DBSESSIONID</th><th>Дата входа</th></tr>
       <form action="?" method="post">
            <?php foreach ($users as $user): ?>
                <tr valign="top">
                 <td><input type="checkbox" name="kill[]" id="dbsession<?php $user['id']?>" value="<?php htmlout($user['id']); ?>" /> </td>
                  <td><?php htmlout($user['name']); ?></td>
                  <td><input type="text" name="id[]" value="<?php htmlout($user['id']); ?>" disabled /></td>
                  <td><?php htmlout($user['dt']); ?></td>
                </tr>
                <?php endforeach; ?>
            </table>
       <input type="submit" name="askme" value="Подтвердить удаление"/>
       <input type="hidden" name="action" value="delete"/>
    </form>
 <?php endif; ?>



Поскольку количество строк таблицы с данными заранее неизвестно, в качестве значения атрибута name тега  <input type="checkbox" ... > задаётся массив, например, kill[] .
В основном контроллере список обрабатывается:

 
if (isset($_POST['action']) and $_POST['action'] == 'delete' and isset($_POST['kill']) )
{
  $list = "'" . join("','", $_POST['kill']) . "'";
  $sql = 'delete from sys#locks where dbsessionid in ( ' . $list . ')' ;
  $stid = oci_parse($link, $sql);
  $result = oci_execute($stid, OCI_DEFAULT);
  include 'ctrl_sql_err.php';
  oci_commit($link);
  header('Location: .');
  exit();
}
 

Последний пример - коннект к Oracle.

Формирование переменного pop-up списка (<id>,<имя автора>) c установкой default -значения.

 
<?php foreach ($authors as $author): ?>
     <option value="<?php htmlout($author['id']); ?>" 
                 <?php if ($author['id'] == $authorid) echo ' selected="selected"';?>>
                 <?php htmlout($author['name']); ?>
     </option>
<?php endforeach; ?>
 

Где id - скрытое поле. В pop-up листе только name.

Аналогично, для checkbox:

 
<?php foreach ($categories as $category): ?>
    <div><label for="category<?php htmlout($category['id']);?>">
             <input type="checkbox" name="categories[]" id="category<?php htmlout($category['id']); ?>"
                       value="<?php htmlout($category['id']); ?>"
                        <?php if ($category['selected']) echo ' checked="checked"'; ?>/>
            <?php htmlout($category['name']); ?></label></div>
<?php endforeach; ?>
 

Гибко и просто!

Ярлыки: ,

Подпишись на новости PHP по e-mail
posted by Sergey @ 06:53  
0 Comments:

Отправить комментарий

<< Home
 
Близкая даль
Подпишись на новости Javascript и AJAX письмом:

Напишите ваш e-mail :

Delivered by FeedBurner

Предыдущий пост
Архив
Линки
Статистика

Subscribe in a reader

Powered by FeedBurner

BLOGGER

© PHP. Изучение языков и web-технологий