本当に簡単なことをしたいのですが、Joomlaの開発経験が少ないため、Joomlaを使用する必要があります。
別のコンポーネントによって宣言され、joomlaデータベースに保存された値(数値)のフィールドがあります。次に、フォームに送信ボタンがあります(ちなみに、私はchronoforms5を使用しています)。
私が欲しいのは、フォームの送信ボタンを押した後、フィールドの値を変更することです。
通常、データベース接続やクエリなどを使用してPHPファイルを記述し、そのAJAXファイルをPHPで呼び出すボタンのJavaScriptハンドラを記述します。しかし、どうすればJoomlaを使用してそれを行うことができますか?私は簡単な解決策を探していますが、セキュリティはほとんど関係ありません。ありがとう!
Chronoforms 5のドキュメントをいくつか読んだことがあります。その後、送信ボタン付きの通常のChronoformsフォームの最後に追加された「カスタムコード」要素にカスタムコードを書き込むことができました。送信が成功すると、次のコードが実行されます。 「POST」パラメーターを読み取り、データベースからフィールドをロードして、いくつかの変更を行った後に更新します。提案や改善はまだ望まれています。
<?php
// Get a db connection.
$db = JFactory::getDbo();
// Create a new query object.
$query = $db->getQuery(true);
// Get event ID from form post
$eventID = $form->data['eventID'];
$numberOfTickets = $form->data['numberOfTickets'];
//#### GET FIELD FROM DB ####//
// Conditions for which records should be updated and selected.
$conditions = array(
$db->quoteName('search') .'='. $db->quote('event-id'.$eventID)
);
$query->select($db->quoteName('replace'))->from($db->quoteName('#__rereplacer'))->where($conditions);
$db->setQuery($query);
$availableTickets = $db->loadResult();
//#### UPDATE FIELD FROM DB ####//
// Fields to update .
$availableTickets = (int)$availableTickets - (int)$numberOfTickets;
if ($availableTickets < 0) {
$availableTickets = 0;
}
$fields = array(
$db->quoteName('replace') . ' = '. $db->quote($availableTickets)
);
$query->update($db->quoteName('#__rereplacer'))->set($fields)->where($conditions);
$db->setQuery($query);
$result = $db->execute();
?>
フォーム拡張機能を使用しているため、オプションと機能に従ってそれを行う必要があります。私はChronoformsでの大きな経験はありませんが、カスタムコードを実行するための送信時オプションを探します。 AJAX(サーバーサイドアクションへの送信時にjs))を実装する必要があるのか、データベースで更新したいものを更新する単純なphpスニペットだけを実装する必要があるのか、私にはわかりません。
また、クロノフォームがフォームからのデータベースデータの操作を可能にする別の内部方法を提供している可能性もあります。そのため、ドキュメントを調べて、クロノフォーム内のすべての可能性を最初に試します。
最後に、CRUDデータベースのことを行う方法を尋ねているかどうかは、質問では明確ではありません...それがあなたが求めているものである場合は、ここで確認してください。
https://docs.joomla.org/Inserting,_Updating_and_Removing_data_using_JDatabase