web-dev-qa-db-ja.com

RSForms MySQLテーブルに外部データを送信する

Joomla以外のWebサイトに次のフィールドを持つフォームがあります。

  • フルネーム
  • 電子メールアドレス
  • パブで働く(チェックボックス)
  • サプライヤー(チェックボックス)
  • 18歳以上

外部フォームからJoomlaデータベースに送信する次のコードがあります(JoomlaはRSFormsを使用してこの正確なデータをキャプチャしています)。

     // read form
     if(strcasecmp($_GET['method'],'subscribe') == 0){

         $fullName = $_POST['fullName'];
         $emailAddress = $_POST['emailAddress'];
         $worksInPub = ($_POST['workInPub']==='true');
         $isSupplier = ($_POST['isSupplier']==='true');
         $isOver18 = ($_POST['isOver18']==='true');

         // Do something here with the data. If it fails, modify $response['code'] accordingly

         $response['code'] = 1;

         $response['status'] = $api_response_code[ $response['code'] ]['HTTP Response'];
         $response['data'] = $api_response_code[ $response['code'] ]['Message'];

     } 

上記の変数をデータベースのRSFormsテーブルに送信するには、どのコードを記述する必要がありますか?

SQLステートメントを使用すると、SubmissionIdが含まれません(これは別のデータベーステーブルからのものであるため)

1
RustyJoomla

あなたがする必要があるのはデータベースクエリを書くことだけです。 Joomla APIをインポートして、次のようなJoomlaスタイルのクエリを作成することをお勧めします。

$fullName     = $_POST['fullName'];
$emailAddress = $_POST['emailAddress'];
$worksInPub   = ($_POST['workInPub']==='true');
$isSupplier   = ($_POST['isSupplier']==='true');
$isOver18     = ($_POST['isOver18']==='true');

$db = JFactory::getDbo();     
$query = $db->getQuery(true);

$columns = array('fullName', 'emailAddress', 'workInPub', 'isSupplier', 'isOver18');
$values = array($db->quote($fullName), $db->quote($emailAddress), $db->quote($workInPub), $db->quote($isSupplier), $db->quote($isOver18));

$query->insert($db->quoteName('#__rs_forms_table'))
      ->columns($db->quoteName($columns))
      ->values(implode(',', $values));

$db->setQuery($query);
$db->execute();

私はこれまでにRSFormsを使用したことがないため、フォームのデータがどのように保存されるのかわかりません。そのため、上記は間違っている可能性があります。データベースのテーブル名など、コードにいくつかの調整を加えることもできます

1
Lodder