.
Пишем Easy CMS. Урок 15. Расшифровка строки таблицы (PHP, CMS, админка)
Автор megabax   
19.07.2011 г.
Структура программы на примере простейшей программы

Пишем Easy CMS. Урок 15. Расшифровка строки таблицы (PHP, CMS, админка)

Что бы смотреть урок полностью, подпишитесь на платный раздел.

В платном разделе статья находиться здесь.


Продолжим писать админку для сайта "Тесты". Сегодня мы напишем модуль редактирования вопросов теста. Вот как он будет выглядеть:

Пишем Easy CMS. Урок 15. Расшифровка строки таблицы (PHP, CMS, админка)

А когда мы нажимаем на кнопочку "Расшифровка" у нас открывается список вопросов к этому тесту:

Пишем Easy CMS. Урок 15. Расшифровка строки таблицы (PHP, CMS, админка)

И так, с чего же начнем? С класса ECMS_Table_viewer. Мы добавим к нему новое поле  $decipher, что значит "расшифровщик":

class ECMS_Table_viewer extends ECMS_Base_class {

 

    ...

 

    public $decipher=null;

...

... ну, и конечно же, наш главный файл admin.php:

<?php

    session_start();

?>

<html>

 

<head>

  <title>Тест EASY CMS</title>

  <LINK HREF="ECMS.css" REL="stylesheet" TYPE="text/css">

</head>

 

 

 

<?php

    include_once("EASYCMSBase.php");

    include_once("EASYCMSDB.php");

    include_once("EASYCMSVisual.php");

    include_once("tests_lib.php");

    init_ECMS();

   

 

    //создадим базу данных и законнектимся к ней

    $db=new ECMS_Database("test","localhost","root","123");

    $db->set_prefix("T");

    $db->connect();

   

    //создадим "движок" сайта

    $engine=new ECMS_Web_Engine();

    $engine->set_name("engine");

 

    //Создадим контроллер ссылок

    $rc=new ECMS_References_controller();

    $rc->url="http://localhost";

    $rc->file_name="admin.php";

    $rc->set_name("refcont");

 

    //создадим таблицу вопросов

    $tb=new ECMS_Table("questions", $db);

    $tb->set_name("questions");

    $tb->fields[]=new ECMS_Field("id","Код","int",true);

    $fl=new ECMS_Field("text","Текст вопроса","text",false);

    $fl->_width=70;

    $tb->fields[]=$fl;

    $tb->fields[]=new ECMS_Field("test","Тест","int",false);

    $qv=add_table($engine,$tb,$db,"questions_view",$rc,null);

 

    //создадим таблицу тестов

    $tb=new ECMS_Table("tests", $db);

    $tb->set_name("tests");

    $tb->fields[]=new ECMS_Field("id","Код","int",true);

    $tb->fields[]=new ECMS_Field("name","Наименование","text",false);

    $fl=new ECMS_Field("description","Описание","text",false);

    $fl->_width=70;

    $tb->fields[]=$fl;

    add_table($engine,$tb,$db,"tests_view",$rc,$qv);

   

 

    //создадим таблицу пользователей

    $tb=new ECMS_Table("users", $db);

    $tb->set_name("users");

    $tb->fields[]=new ECMS_Field("id","Код","int",true);

    $tb->fields[]=new ECMS_Field("name","Наименование","text",false);

    $tb->fields[]=new ECMS_Field("password","Пароль","text",false);

    $tb->fields[]=new ECMS_Field("email","email","text",false);

    $tb->fields[]=new ECMS_Field("permissionLevel","Уровень доступа","int",false);

    add_table($engine,$tb,$db,"users_view",$rc,null);

   

    //Превратим входные параметры в событие

    $is_handled=false;

    if(isSet($_GET["option"])) {

        $msg=$engine->create_message();

        $msg["destination_name"]=$_GET["objname"];

        $msg["row_id"]=$_GET["rowid"];

        $msg["option"]=$_GET["option"];

        $msg["form_name"]=$_GET["form_name"];

        $msg["field"]=$_GET["field"];

        $engine->send_message($msg,false,$engine);

        if($_GET["objname"]==$engine->get_name()) {

            !$is_handled=true;

            $ltb=$engine->get_table();

            if($ltb!=null) $_SESSION['view_name']=$ltb->get_name()."_view";

        }

    }

    if(!$is_handled) {

        //если нет сообщенией то устаналиваем текущей таблицу тестов

        $msg=$engine->create_message();

        $msg["destination_name"]=$engine->get_name();

        $msg["option"]="edittable";

        if($_SESSION['view_name']!=null) $msg["form_name"]=$_SESSION['view_name']; else $msg["form_name"]="tests_view";

        $engine->send_message($msg,false,$engine);

    }

?>

 

<body>

    <table>

        <tr>

            <td>

                <?php

                    echo '<a href="'.$rc->create_reference_by_name('edittable',$engine).'&form_name=tests_view">';

                    echo 'Тесты';

                    echo '</a> &nbsp';

                    echo '<a href="'.$rc->create_reference_by_name('edittable',$engine).'&form_name=users_view">';

                    echo 'Пользователи';

                    echo '</a> &nbsp';

                ?>

                Оценки тестов Результаты

            </td>

        </tr>

        <tr>

            <td>

                <?php

                    if($engine->get_table()!=null) echo $engine->get_table()->get_name()."<br>";

                    $engine->show();

                ?>

            </td>

        </tr>

    </table>

   

<?php

   

 

?>

 

</body>

 

</html>

 

 

 

Последнее обновление ( 19.07.2011 г. )