Попробуйте этот пример:
Мы опубликуем имя и фамилию пользователя в таблице.
создать таблицу в вашей базе данных. Обратите внимание, что он должен иметь префикс "jos _"
Мы назовем эту форму "имена". Поэтому мы назовем нашу таблицу "jos_names"
В строке SQL в PHPMyAdmin (или любом другом инструменте, который вы используете ..) выполните этот запрос, чтобы создать новую таблицу:
CREATE TABLE `databasename`.`jos_names` (`id` int(11) NOT NULL auto_increment, `firstname` VARCHAR(100), `lastname` VARCHAR(100), PRIMARY KEY (`id`) )
Чтобы упростить вещи, мы опубликуем результаты на той же странице. Построим форму:
<?php
/** post form to db module **/
// No direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
//--POST YOUR FORM DATA HERE-->
$fname = $_POST['fname'];
$lname = $_POST['lname'];
//--END POST YOUR FORM DATA---|
//--build the form------------>
?>
<form name="names" id="names" action="<?php echo JURI::current(); ?>" method="post">
<p><input type="text" name="fname" id="fname" value="" /></p>
<p><input type="text" name="lname" id="lname" value="" /></p>
<p><input id="submit" name="submit" type="submit" value="Submit Names" /></p>
</form>
//--END BUILD THE FORM--------|
<?
if( (isset($lname)) || (isset($fname)) ) {
//first name or last name set, continue-->
$data =new stdClass();
$data->id = NULL;
$data->firstname = $fname;
$data->lastname = $lname;
$db = JFactory::getDBO();
$db->insertObject('#__names', $data, id);
} else {
echo '<h4>One Field Is Required!</h4>';
}
?>
Это должно сделать это. Если вы пишете традиционный модуль Joomla, это должен быть ваш файл helper.php.
ПРИМЕЧАНИЯ:
Включать скрипт «die» только один раз в документ joomla .. (определено ('_JEXEC') ..
JURI :: current () автоматически читает URL текущей страницы. Если вы вызываете эхо JURI :: current (); на странице с URL http://www.example.com/names,, тогда будет отображаться та же ссылка.
Важно, чтобы действие = "" указывало на точный URL-адрес, на котором вы будете публиковать этот модуль.
Кроме того, считается плохой практикой отправлять данные в «SELF», но вы ограничены модулем, поэтому, если вы не создадите компонент или плагин, вы должны опубликовать свою форму в «SELF», как это сделано с этим пример. (JURI :: ток ();)
Когда в среде Joomla нет необходимости объявлять имя базы данных, имя пользователя или пароль, так как Joomla уже «вошла в систему». Поэтому вместо запроса databasename
. jos__tablename
, в joomla вы можете заменить запрос с этим: #__tablename
. На самом деле, это лучший метод при работе с db-запросами и Joomla, поскольку пользователям не нужно использовать префикс jos_ по умолчанию, joomla автоматически заменяет «# » на любой префикс. В моем случае "# " равно "jos"
Обратите внимание при запросе sql для создания таблицы .. убедитесь, что вы заменили databasename
на фактическое имя вашей базы данных ..
Это должно сделать это.
Если по какой-либо причине вы не можете опубликовать данные:
1) Убедитесь, что форма не перенаправляет на другую страницу, когда вы нажимаете кнопку Отправить. Если это так, замените действие формы "" на абсолютный URL-адрес, по которому эта страница опубликована ... затем перейдите оттуда.
2) Иногда метод $ data = new не работает. Это зависит от того, как вы настроили свой модуль, функции и классы.
Вот альтернатива:
$db =& JFactory::getDBO();
$query = "INSERT INTO `#__names` (`fname`, `lname`)
VALUES ($fname, $lname);";
$db->setQuery( $query );
$db->query();