2016-11-27 2 views
0

NEWMODULEプラグインで単純なフォームを作成し、フォームデータを保存するデータベーステーブルを作成しましたが、フォームデータをデータベースに挿入する方法がわかりません。 フォームデータをmoodleのデータベースに挿入する方法

class myform_form extends moodleform { 

public function definition() { 
    global $DB,$CFG; 

    $mform = &$this->_form; 
    $mform->addElement('text', 'tendethi', get_string('tendethi', 'myform')); 
    $mform->setType('tendethi', PARAM_TEXT); 
    $mform->setDefault('tendethi','Nhập tên đề thi'); 
    $mform->addElement('text', 'mdt', get_string('madethi','myform')); 
    $mform->setType('mdt', PARAM_TEXT); 
    $mform->setDefault('mdt','Nhập mã đề thi'); 
    $mform->addElement('duration', 'timelimit', get_string('thoigianlambai','myform')); 
    $mform->setType('timelimit', PARAM_TEXT); 
    $mform->addElement('text', 'gvrd', get_string('giaovienrade','myform')); 
    $mform->setType('gvrd', PARAM_TEXT); 
    $mform->setDefault('gvrd','Nhập họ tên giáo viên ra đề thi'); 
    $mform->addElement('text', 'tmh', get_string('tenmonhoc','myform')); 
    $mform->setType('tmh', PARAM_TEXT); 
    $mform->setDefault('tmh','Nhập tên môn học'); 

    $buttonarray=array(); 
    $buttonarray[] = &$mform->createElement('submit', 'submitbutton', get_string('savechanges')); 
    $buttonarray[] = &$mform->createElement('reset', 'resetbutton', get_string('revert')); 
    $buttonarray[] = &$mform->createElement('cancel'); 
    $mform->addGroup($buttonarray, 'buttonar', '', array(' '), false); 
    $mform->closeHeaderBefore('buttonar'); 

、これはデータベースへのコードの挿入フォームデータである:私は、これは私のコードで、my_form.phpにコードを保存

// insert database into table 
//global $DB; 
$tendethi = optional_param('tendethi', null, PARAM_TEXT); 
$mdt = optional_param('mdt', null, PARAM_INT); 
$timelimit = optional_param('timelimit', null, PARAM_INT); 
$gvrd = optional_param('gvrd', null, PARAM_TEXT); 
$tmh = optional_param('tmh', null, PARAM_TEXT); 
if($data = $mform->get_data()){ 
$record = new stdClass(); 
$record->tendethi = $tendethi ; 
$record->mdt = $mdt ; 
$record->timelimit = $timelimit ; 
$record->gvrd = $gvrd ; 
$record->tmh = $tmh ; 
$DB=insert_record('myform_form', $record, false); 

}

私を助けてください!あなたのコードはおおよそ次のようになります

答えて

0

$urlaftersubmission = new moodle_url(); // You will need to fill this in. 
$form = new myform_form(); 
if ($form->is_cancelled()) { 
    redirect($urlaftersubmission); 
} 
if ($data = $form->get_data()) { 
    $DB->insert_record('name_of_table', $data); 
    redirect($urlaftersubmission); 
} 
echo $OUTPUT->header(); 
$form->display(); 
echo $OUTPUT->footer(); 

注意、あなたはそれがデータベースに挿入するための正しい形式であるために少しデータを調整する必要があります。また、プラグインのinstall.xmlまたはupgrade.phpファイルを使用してデータベーステーブルを作成してください(そしてそれらのファイルを正しく生成するためにMoodleの組み込みxmldbエディタを使用してください)。そうしないと、Moodleはデータを挿入するためにそれらを認識しません。

+0

大変ありがたいことに、データを格納するためにxmldbでテーブルを作成しました。フォームに記入して保存ボタンをクリックしましたが、エラーです。これはエラーです。 \ lib \ deprecatedlib.phpの857行:coding_exception throw \ mod \ myform \ view.phpの56行目:error()を呼び出す

Invalid array parameter detected in required_param(): timelimit
  • line 641 of \lib\moodlelib.php: call to debugging()
  • line 40 of \mod\myform\view.php: call to optional_param()

+0

なぜoptional_paramを呼び出しているのかわからない - フォームのデータが必要な場合はget_data()を呼び出してください既にやっているように、上記のように)、optional_paramを呼び出す理由はありません(特に、 'duration'フィールドをタイムスタンプにフォーマットしないので)。 – davosmith

+0

ありがとう、私は挿入し、データベースを選択しました。データを挿入した後、私は情報テーブルのデータが挿入されていることを表示します、私はこのテーブルの編集と削除のボタンを作成したい、テーブルのデータラインの隣に、どうすればいいですか?手伝って頂けますか?どうもありがとうございました。 –

関連する問題