урду Русский
Английский English Deutsch Deutsch español Español français Français итальянский Italiano нидерландский Nederlands португальский Português Русский Русский Ελληνικά Ελληνικά
Login



 
Добро пожаловать в Jumi! Учебник >> >> Самостоятельная вызова формы в Joomla! содержание

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

Для удовлетворения своих потребностей, я решил написать этот учебник. Учебник предназначен для Joomla! 1.0.x кодирования начинающих, но промежуточные можете найти некоторые приемы полезным.

В этом шаг за шагом уроке вы узнаете,

  • что сам форм Коллинг являются и для каких целей они служат,
  • некоторые наиболее полезные PHP и Joomla! 1.0.x трюков, которые имеют отношение к себе формы призвание. Например:
    • как сценарий ловит, что пользователь отправил данные,
    • как распознать URL адрес, по которому скрипт работает,
    • Как отключить конкретного Joomla! с кэш страницы,
    • , что Joomla! конкретным объектом базы данных $, $ моей есть, где искать свои методы и их описание,
    • и так далее

Какие формы само призвание есть, и для какой цели они служат

Каждая форма собирает данные из респондентов.

Собранные данные не сохраняются в форме, но они - как правило, после нажатия кнопки отправки - послали куда-то. Они направляются в некоторую обработку сценария, который "сидит" на другой адрес URL, и что - после возможной предварительной обработки, - пишет в базу данных и / или отправляет их на адрес электронной почты.

Это наиболее распространенный подход. И такой подход используют стандартную Joomla! формы компонентов.

Но можно жить без компонентов формы, возможно, чтобы наши собственные формы, которые будут включены в содержание статьи. Формы могут отправлять собранную информацию для себя и обрабатывать их. Это так называемые формы само призвание.

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

В этом уроке я покажу вам, как.

Потому что должен быть какой-то скрипт там манипулирует с данными формы я буду использовать плагин Jumi для этого в том числе скрипты в содержании. Если вы предпочитаете другой плагин для PHP-скрипт включения в Joomla! Содержание Вы можете использовать его.

Описание демо-формы

Хотя вид демо очень конкретного вы можете написать любой формы можно представить в подходе объяснить в этой статье.

Не делайте тесты на общедоступном сервере производства, но и на локальном хосте только!

Допустим, мы хотим

  • форма голосования, которая собирает ответы на 3 взаимоисключающие вопросы,
  • сохранить ответы в базе данных вместе с датой и временем ответа на этот вопрос и вместе с идентификацией пользователя,
  • чтобы показать, "спасибо" объявление и резюме результатов, но только для тех пользователей, кто голосовал.

Основная стратегия

Разделение кода на несколько частей, функциональных и логических блоков дает много преимуществ. Хотя я не буду обсудили преимущества здесь я буду следовать этой общей хорошей практикой здесь.

Существуют две основные логические блоки в нашу задачу:

  • показать образуют + сбор данных + + проверить их сохранения данных в базе данных (само форме вызовом)
  • читать данные из базы данных и показывать результаты.

Так что я буду разделить наше приложение на два файла сценария также: self_call_form.php а также show_results.php.

Мы будем вдаваться в подробности в следующем.

Но давайте начнем с базой данных, в первую очередь.

База данных

Пусть наши таблицы базы данных, имя xxx_mytable_test где ххх означает для Joomla! префикс базы данных. Некоторые Joomla! пользователи других Йос префикс имеют префикс мес. Я предполагаю, Йос префикс в следующем.

Я повторяю наша задача сохранить дату и время записи, идентификации пользователей и ответ.

Не вдаваясь в MySQL баз данных и таблиц дизайн деталей, которые можно найти в структуре таблиц описано в MySQL языке будет:

Инструкция CREATE TABLE IF NOT EXISTS `jos_mytable_test` (
`ID` Int (11) NOT NULL auto_increment,
`` Recordtime даты NOT NULL по умолчанию "0000-00-00 00: 00: 00,
`User_id` VARCHAR (15) NOT NULL по умолчанию "хозяин",
`Ответить` Int (6) NOT NULL по умолчанию "0,
PRIMARY KEY (`ID`)
) TYPE = MyISAM;

Поле идентификатор был добавлен только в таблице запись уникальной идентификации.

Вы должны создать таблицу в базе данных Joomla. Убедитесь, что ваш префикс jos_. Если он все еще mos_, изменить префикс таблиц.

В таблице можно создать с помощью PhpMyAdmin либо вручную, либо автоматически с помощью копирования и вставки заявления MySQL выше.

Я буду считать таблицу jos_mytable_test создается с этого времени.

self_call_form.php

Существуют два основных метода, посредством которого форма общения с окружающей средой: POST и GET. GET, передает (и читает) данные из URL приложения. Мы не будем использовать метод GET здесь.

Метод POST записывает данные в глобальные переменные PHP $ _POST. Итак, мы имеем полный доступ к данным, сюда.

Генеральный алгоритм self_call_form.php

Если нет соответствующих данных в $ _POST, то есть нет ответа от пользователя, а затем показать форму. Если пользователь ответил, то поблагодарить его и написать ответ (и других данных) в базе данных.

Алгоритм выше переведены на язык PHP выглядит этот код:

функция self_form()
 / / Радио название кнопки (в данном случае "ответ") должно быть именем столбца в базе данных слишком!
{

 $ Якорь  =  "MyForm";  / / $ Якоря переменными мы должны будем позже
 эхо " ";  / / HTML якорь нам понадобится позже
 эхо "
"; / / Форма контейнера if(!Исеть($ _POST["Ответ"])) / / Если нет ответа, то писать виде { $ Return_url = Get_return_url($ Якорь); эхо "
"; эхо "

Вы нашли этот учебник полезным? "; эхо " Абсолютно нет.\n"; эхо " Так себе.\n"; эхо " Да. Спасибо за это.\n"; эхо "<Тип входного =" Отправить "OnClick =" возвращение checkForm (this.form) "    Значение = "Отправить" класс = 'кнопки' /> "; эхо ""; } еще / / Если есть ответ благодарность и написать ответ в базе данных { эхо " Спасибо за голосование ";   write_data($ _POST["Ответ"]); } эхо ""; }

Объяснения и некоторые хитрости

PHP функция Исеть ("ответ") проверяет "ответ" Погода существует в $ _POST.

Мы хотим, чтобы форма для отправки данных на себя. Это означает, что на тот же адрес URL (формы и ее обработка сценария можно найти на тот же адрес). Мы можем использовать жесткий кодированный адрес адрес страницы, или, как в нашем случае, мы можем получить URL из окружающей среды Joomla с помощью простого трюка. Используя хитрость лучше, чем первый жесткий кодированный подход, потому что наш код можно использовать повторно в различных страниц без прикосновения.

Так в чем здесь фокус, содержащихся в функции get_return_url ($ якорь).

Функция get_return_url ()
функция get_return_url($ Якорь)
{
 if ($ Query_string = MosGetParam( $ _SERVER,  'QUERY_STRING',  '' ))

 {
  $ Вернуться  =  'Index.php?  .  $ Query_string;
 
 }
 еще
 {

  $ Вернуться  =  'Index.php';
 
 }
 / / URL-адрес начинается с index.php сейчас

 
 
 / / Преобразование и в & для XTML соответствия

 $ Вернуться  =  str_replace( '&',  "&",  $ Вернуться );
 
 / / Добавление якорь в конце URL-адрес

 $ Вернуться  .="# $ Якорь";  / / Добавление якорь URL
 / / Http:// prepand в начале URL
 возвращение sefRelToAbs($ Вернуться);



}

Существует никакого чуда в нем. Функция просто возвращает URL адрес, где она работает (в нашей форме). В том числе и якоря.

Почему я включил (HTML) якорь в обратный адрес?

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

Я хотел бы обратить ваше внимание на Joomla! конкретные mosGetParam функции () тоже. Это самая полезная функция. И должны быть использованы в вас образуется интенсивно.

Общее описание mosGetParam () можно найти здесь. Один из практического использования следующим образом:

Вместо использования:

$ _POST ['SomeName']

что лучше использовать:

mosGetParam ($ _POST, 'SomeName)

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

Однако, если у вас есть много данных, которые будут обрабатываться он может быть довольно много времени чахоточный вывести все значения из $ _POST один за другим: либо путем непосредственного доступа к ним или через mosGetParam () функцию. Существует еще одна хитрость: использовать PHP функция экстракт ($ _POST), который строит переменных и присваивает им имена все содержимое $ _POST.

Обратите внимание, мы используем $ _SERVER в функции get_return_url (). $ _SERVER Другой PHP глобальные переменные как $ _POST и могут быть некоторые использования в сценарии тоже. Если вы не знаете значения переменных вы можете показать их в своем сценарии с использованием var_dump ($ somoevaribale) функции.

Функция checkForm ()

Эта функция проверки JavaScript, которая проверяет ввод пользователя по отношению к некоторым правилам. Это письмо является на самом деле адрес электронной почты, это имя не пустой, и т.д.

Еще раз: вы можете найти различные сценарии проверки на источники сотни интернет.

В нашем демо-форме мы будем проверить, что пользователь выбрал "ответ" радио-кнопки. Если нет "ответ" не подают данные, но показывать предупреждение: