Форум русской поддержки Joomla!® CMS
08.12.2016, 13:50:11 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

RSForm и MySQL

 (Прочитано 348 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Aztwin
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 14


« : 16.05.2016, 10:27:00 »

Всем добра форумчане! Прошу помощи в решении проблемы со скриптом или настройкой RSForm для отправки данных формы в нужную мне таблицу в базе. Написал PHP скрипт

Код:
<?php

// обработка полученных данных
$id = $_POST['id'];
$matchday_id = $_POST['matchday_id'];
$nember = $_POST['nember'];
$dete = $_POST['dete'];
$team1_id = $_POST['team1_id'];
$team2_id = $_POST['team2_id'];
$score1 = $_POST['score1'] ? $_POST['score1'] : 'null';
$score2 = $_POST['score2'] ? $_POST['score2'] : 'null';
$stadium_id = $_POST['stadium_id'] ? $_POST['stadium_id'] : 'null';
$viewers = $_POST['viewers'] ? $_POST['viewers'] : 'null';

// подключение к базе данных
require_once 'link.php';

// запрос
$result = mysqli_query($link, " INSERT INTO matches VALUES ('$id', '$matchday_id', $nember, '$dete', $team1_id, $team2_id, $score1, $score2, $stadium_id, $viewers) ");

// закрытие соединения
mysqli_close();

?>

 который собирает данные $_POST и делает INSERT в базу. Если открыть сам скрипт файл напрямую имя_сайта/insert_match.php то всё нормально работает. Но если подгрузить скрипт в форму или скопировать во второе поле ---$_POST form data can be modified here, before it is added to the database---  то ничего не работает. Что я не так делаю?
Записан
robert
Профи
********

Репутация: +344/-11
Offline Offline

Пол: Мужской
Сообщений: 3591


« Ответ #1 : 16.05.2016, 11:26:04 »

Код:
<?php
// обработка полученных данных
$id = $_POST['id'];
---
$result = mysqli_query($link, " INSERT INTO matches VALUES ('$id', '$matchday_id', $nember, '$dete', $team1_id, $team2_id, $score1, $score2, $stadium_id, $viewers) ");
?>
Ооо, SQL-инъекция передает вам привет! А не работает, по-видимому, из-за неправильного указания пути, как я вам уже ответил в дрйгой теме.
Записан
Septdir
Живу я здесь
******

Репутация: +35/-3
Online Online

Пол: Мужской
Сообщений: 838


Skype: septdir


« Ответ #2 : 16.05.2016, 11:29:24 »

Там же теперь отдельный функционал для добавления в базу. даже кода не надо.
Что же касается вашего кода, то можно сделать на api Joomla
Код:
$item = new stdClass();
$item->id = $_POST['id']; // WHY NOT AUTO ?
$item->matchday_id = $_POST['matchday_id'];
$item->nember = $_POST['nember'];
$item->dete = $_POST['dete']; // WHY NOT AUTO ?
$item->team1_id = $_POST['team1_id'];
$item->team2_id = $_POST['team2_id'];
$item->core1 = $_POST['score1'] ? $_POST['score1'] : 'null'; // ?
$item->score2 = $_POST['score2'] ? $_POST['score2'] : 'null'; // ?
$item->stadium_id = $_POST['stadium_id'] ? $_POST['stadium_id'] : 'null'; //  ?
$item->viewers = $_POST['viewers'] ? $_POST['viewers'] : 'null'; // ?
$item_action = JFactory::getDbo()->insertObject('#__table_name', $item);

P.S на будущее пишиите задачу целиком. А если говорим о базе то не плохо бы глянуть на ее структуру. А то малолу вы в int text записать пытаетесь
Записан
Aztwin
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 14


« Ответ #3 : 16.05.2016, 11:33:12 »

Там же теперь отдельный функционал для добавления в базу. даже кода не надо.
Что же касается вашего кода, то можно сделать на api Joomla

P.S на будущее пишиите задачу целиком. А если говорим о базе то не плохо бы глянуть на ее структуру. А то малолу вы в int text записать пытаетесь

А можете по подробнее расписать что и как сделать? Млин уже который день бьюсь... Плиз... и какие данные нужны?
Записан
Aztwin
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 14


« Ответ #4 : 16.05.2016, 11:35:55 »

Ооо, SQL-инъекция передает вам привет! А не работает, по-видимому, из-за неправильного указания пути, как я вам уже ответил в дрйгой теме.
Я пока еще о безопасности не думал. Мне бы для начала в базу залить данные из формы...
Записан
Septdir
Живу я здесь
******

Репутация: +35/-3
Online Online

Пол: Мужской
Сообщений: 838


Skype: septdir


« Ответ #5 : 16.05.2016, 11:41:32 »

А можете по подробнее расписать что и как сделать? Млин уже который день бьюсь... Плиз... и какие данные нужны?
Ну если просите помочь с базой всегда не плохо бы показывать структуру самой таблицы. А то всякое бывает. Помню как-то раз бился почти целый день над ошибкой, а оказалось что я parent написал paarent.
По существу вашего вопроса. На сайте RSJoomla есть куча роликов и документации. Если не помогает. То у них очень отзывчивый саппорт. Сегодня понедельник по UTC+2:00 сейчас 9:35, так что кат-раз.  
Ну а если у вас стоит варез. будьте любезны страдать сами. ИМХО
Записан
SDKiller
Dev Team
******

Репутация: +325/-5
Offline Offline

Пол: Мужской
Сообщений: 2749


...ergo sum


« Ответ #6 : 16.05.2016, 11:44:31 »

...то можно сделать на api Joomla

Какое-то у вас однобокое использование API Joomla.

Почему у вас используется голый $_POST ?
Записан
Septdir
Живу я здесь
******

Репутация: +35/-3
Online Online

Пол: Мужской
Сообщений: 838


Skype: septdir


« Ответ #7 : 16.05.2016, 11:47:20 »

Какое-то у вас однобокое использование API Joomla.

Почему у вас используется голый $_POST ?
Да лень было. я просто копирнул что под рукой было и посавил его значения. могу конечно переписать через JRequest::getVar();
Записан
SDKiller
Dev Team
******

Репутация: +325/-5
Offline Offline

Пол: Мужской
Сообщений: 2749


...ergo sum


« Ответ #8 : 16.05.2016, 11:55:04 »

...могу конечно переписать через JRequest::getVar();

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

И, кстати, JRequest уже давно объявлен deprecated, так что если уж переписывать, то используя актуальный код.
Записан
Septdir
Живу я здесь
******

Репутация: +35/-3
Online Online

Пол: Мужской
Сообщений: 838


Skype: septdir


« Ответ #9 : 16.05.2016, 12:13:39 »

Если уж поучать новичка, да ещё в таком тоне, то хотя бы делать это правильно, тем более что вопрос безопасности уже был поднят несколькими постами ранее.
А в каком тоне?. Вопрос безопасности. К отправлению человека читать документацию, отношения не имеет. Ибо в документации он найдет как сделать то что ему нужно, не написав ни сточки кода.
Код:
И, кстати, JRequest уже давно объявлен deprecated, так что если уж переписывать, то используя актуальный код.
да флейм идет года c 2014. Вот только его как использовали так и используют. да и Jinput тоже со своими прибамбасами.
Так что новичку это знать абсолютно без надобности. хотя какой он новичок если уже дошел до того что ему нужна работа со своей базой.
« Последнее редактирование: 16.05.2016, 12:37:17 от Septdir » Записан
Aztwin
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 14


« Ответ #10 : 16.05.2016, 13:08:09 »

Ну если просите помочь с базой всегда не плохо бы показывать структуру самой таблицы. А то всякое бывает. Помню как-то раз бился почти целый день над ошибкой, а оказалось что я parent написал paarent.
По существу вашего вопроса. На сайте RSJoomla есть куча роликов и документации. Если не помогает. То у них очень отзывчивый саппорт. Сегодня понедельник по UTC+2:00 сейчас 9:35, так что кат-раз.  
Ну а если у вас стоит варез. будьте любезны страдать сами. ИМХО

Поставил RSForm только из за того, что не смог найти решения своей проблемы. Наткнулся в инэте на статью, что в в компоненте RSForm можно указать своей php скрипт, вот и подумал что это может быть решением моей проблемы. Ведь сам скрипт удачно отрабатывал задачу и вносил данные в таблицу. Про структуры таблицы в которую нужно вносить данные (matches) или матчи. Вот структура таблицы:
Код:
-- таблица матчи
CREATE TABLE `matches` (
`id` CHAR(15) NOT NULL PRIMARY KEY COMMENT 'код матча', -- пример TLC-2016-01-001 вносится вручную
`matchday_id` CHAR(11) NOT NULL COMMENT 'код турнира', -- пример TLC-2016-08 ссылка на таблицу туры
`nember` SMALLINT UNSIGNED NOT NULL COMMENT 'номер матча', -- пример 001
`dete` DATE COMMENT 'дата матча', -- пример 2016-05-01
`team1_id` TINYINT UNSIGNED COMMENT 'код команды 1', -- пример 1 ссылка на таблицу команды
`team2_id` TINYINT UNSIGNED COMMENT 'код команды 2', -- пример 2 ссылка на таблицу команды
`score1` TINYINT UNSIGNED COMMENT 'очки 1', -- пример 0
`score2` TINYINT UNSIGNED COMMENT 'очки 2', -- пример 0
`stadium_id` TINYINT UNSIGNED COMMENT 'код стадиона', -- пример 1 ссылка на таблицу стадионы
`viewers` SMALLINT UNSIGNED COMMENT 'зрители', -- пример 50000
UNIQUE (matchday_id, nember),
UNIQUE (team1_id, dete, team2_id),
FOREIGN KEY (matchday_id) REFERENCES matchdays (id) ON DELETE CASCADE,
FOREIGN KEY (team1_id) REFERENCES teams1 (id) ON DELETE CASCADE,
FOREIGN KEY (team2_id) REFERENCES teams2 (id) ON DELETE CASCADE,
FOREIGN KEY (stadium_id) REFERENCES stadiums (id) ON DELETE CASCADE
) COMMENT 'таблица матчи';
DESC matches;
Записан
Septdir
Живу я здесь
******

Репутация: +35/-3
Online Online

Пол: Мужской
Сообщений: 838


Skype: septdir


« Ответ #11 : 16.05.2016, 13:12:27 »

Наткнулся в инэте на статью, что в в компоненте RSForm можно указать своей php скрипт, вот и подумал что это может быть
Статья старая.
Если лень искать самому.
Текст:
https://www.rsjoomla.com/support/documentation/rsform-pro/customizing-rsform-pro/mapping-submission-info-to-other-database-tables.html
Видео:
https://www.rsjoomla.com/video-tutorials/rsformpro/ep-67-how-to-transform-an-rsformpro-submission-into-a-joomla-article.html
Саппорт :
https://www.rsjoomla.com/support.html
Записан
Aztwin
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 14


« Ответ #12 : 16.05.2016, 13:16:54 »

Статья старая. Если лень искать самому.
Нее, я про решение в самой Joomla без сторонних расширений. Чтобы можно было в самой статье сделать форму с отправкой данных в базу...
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet