Создаем компонент — пятница, 29 октября 2010-го

Удаление сообщений. Небольшая оптимизация кода.

Просмотров: 1185

Итак в файле admin.myboard.php в конце файла (но перед ?>) пишем следующее:


  


function show_mess()


{


}


 

Далее весь код написанный в предыдущем шаге, т.е. код расположенный в секции default конструкции switch ($task), вырезаем и вставляем в функцию show_mess(). Должно получиться вот так:


  


function show_mess()


{


               //Сюда вставляем наш скопированный код


}



 

Теперь, в каждом месте, где нам надо вывести вышеупомянутый список (таблицу), мы будем вставлять код:


 


show_mess();


 

 

Так как мы уже, сейчас можем сказать, где должны отображаться сообщения, вставим в нужные места вызов, созданной нами функции.

Привожу фрагмент кода:


 


……………………………


switch ($act)


            {


                    case "view_mess":


                    {


                           switch ($task)


                           {


                                      case "edit":


                                             echo 'Редактирование сообщения';


                                             break;


                                      case "remove":


                                              echo(‘Удаление сообщений’);


                                              show_mess();


                                              break;


                                      case "cancel":


                                              echo 'Отмена редактирования сообщения';


                                              show_mess();


                                              break;


                                      case "save":


                                              echo 'Сохраниение сообщения';


                                              show_mess();


                                              break;


                                      default:


                                              show_mess();


                                              break;


                                }


                        }


                        break;


                        default:


                               echo 'Выбран пункт наша доска';


                               show_mess();


                               break;             


            }


……………………………………


 

Сделав изменения, проверим как работает компонент. Если все нормально, то на нажатие всех кнопок тулбара кроме Изменить, результатом будет отображение соответствующего сообщения и списка объявлений.

После того как вы могли наглядно убедиться, что использование функций более приемлимо, приступим к созданию функции удаляющей выбранные сообщения (в будущем мы проведем еще одну, более крупную оптимизацию – будем создавать классы и т.д.) Для того чтобы реализовать удаление сообщений создадим функцию delete_mess(). Прокомментируем основные моменты.

Функция должна получить список идентификаторов сообщений, которые были выделены пользователем. Для этого в самом начале (после <?php) файла admin.mybord.php поместим следующий код:


  


$cid = josGetArrayInts( 'cid' );


 

Функция josGetArrayInts возвращает в переменную $cid массив переданный скрипту, так как мы использовали при создании списка сообщений стандартные средства Joomla, то все чекбоксы были названы (параметр name) cid[]. Таким образом скрипту был передан массив cid. Также можно использовать и функцию mosGetParam:


 


$cid = mosGetParam( $_REQUEST, 'cid', 0 );


  

Для удаления сообщений больше не нужно никакой информации поэтому пишем собственно саму функцию:


  


function delete_mess($cid)


{


    global $database;


           


            $flag = true;


           


            for ($i=0;$i<count($cid);$i++)


            {


                        $query = "DELETE FROM mdo_message".


                                                "\n WHERE id_message=".$cid[$i];


                                                


                        $database->setQuery($query);


                        if (!$database->query())


                        {


                          $flag=false;


                        }


            }


           


            if ($flag) {echo("Удаление успешно");}


            else {echo("В одном из запросов произошла ошибка");


            }


 

В функции мы просматриваем массив $cid и удаляем из базы те записи, которые удовлетворяют равенству id_message=$cid[$i]( все сообщения идентификаторы которых были переданы в массиве $cid).

Переменная $flag используется для того, чтобы выяснить, все ли запросы на удаление были выполнены. Если хоть один запрос не выполнен, то будет выведено соответствующее сообщение.

Теперь имея на руках функцию нужно вызвать ее в нужном месте:


  


switch ($act)


            {


                     case "view_mess":


                     {


                               switch ($task)


                               {


                                       case "edit":


                                              echo 'Редактирование сообщения';


                                              break;


                                       case "remove":


                                              delete_mess($cid);


//Не забываем передать функции параметр – смассив $cid


                                               show_mess();


                                               break;


                                       case "cancel":


                                                echo 'Отмена редактирования сообщения';


                                                show_mess();


                                                break;


                                       case "save":


                                                echo 'Сохраниение сообщения';


                                                show_mess();


                                                 break;


                                       default:


                                                show_mess();


                                                break;


                                }


                        }


                        break;


                        default:


                                 echo 'Выбран пункт наша доска';


                                 show_mess();


                                 break;             

             }


 

Снова проверяем работоспособность компонента. Если все нормально, то переходим к следующему шагу. На следующем шаге мы рассмотрим редактирование сообщений и напишем соответствующую функцию.

Вариант файла admin.myboard.php  на данном шаге

Важно: очень важно проводить тщательное тестирование на наличие ошибок, проверяйте все возможные случаи использования пользователем вашего компонента.

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

Не регистрировать/аноним

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email.

(При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д.)



(обязательно)