1

私は、一連のメンバーをリストし、ユーザーが各メンバーに投票してコメントを追加できるようにする式エンジンCMSを持っています。次に、これらすべてのメンバーを個別の行として、EEインストールで作成したカスタムデータベーステーブルに送信する必要があります。ただし、EEからの送信を行うフォームを正確に呼び出す方法はわかりません。これが私のコードです:

<tr>
    <td><input type="text" name="user[0][name]" value=""></td>
    <td><input type="text" name="user[0][party]" value=""><br></td>
    <td><input type="text" name="user[0][marks]" value=""></td>
    <td><input type="text" name="user[0][comments]" value=""></td>
</tr>
<tr>
    <td><input type="text" name="user[1][name]" value=""></td>
    <td><input type="text" name="user[1][party]" value=""><br></td>
    <td><input type="text" name="user[1][marks]" value=""></td>
    <td><input type="text" name="user[1][comments]" value=""></td>
</tr>

提出コード:

foreach($_POST['user'] as $user)
{
    $this->db->insert('mytable', $user);
}

しかし、EEフォームからこのphpコードを呼び出すにはどうすればよいですか?それは単純なこと<form action="url.php">?ですか?EEのデータベース接続文字列を利用するようにそのphpコードをどのように設定しますか?

4

2 に答える 2

1

Adityaはそれほど遠くありません。必要なのは、EEをインスタンス化することだけです。したがって、フォームが結果ページ/テンプレートを通常のhtmlとしてターゲットにする場合、たとえば:(<form action="/form-result">または何でも)、フォームを受け取るテンプレートにPHPを含めるのが手っ取り早い方法です。

そのページ(フォームを受け取る)で、次の情報を入力します(テンプレートでPHPを有効にする必要があります)。

<?php
$EE =& get_instance();
$postUsers = $EE->input->post('user');

foreach($postUsers as $user) {
    // Extra Cleaning
    $user = $EE->db->escape_str($user);
    $user = $EE->security->xss_clean($user);
    // Fields and values to save to DB
    $dbFields = array(
        'user' => $user['name'],
        'party' => $user['party'],
        'marks' => $user['marks'],
        'comments' => $user['comments']
    );
    // Prefix variable used for good practice, but could hard code
    $EE->db->insert($EE->db->dbprefix . 'mytable', $dbFields);
}
?>

フィールドを変更または追加する場合に備えて、配列を再作成してDBに送信する長い方法を示しましたが、配列は同じ構造になるため、(クリーニング後に)$userをデータベースに渡すだけで済みます。 。

フォームによって送信される複数のPOST変数(暗黙の配列ではなく)の場合は、次のようなものが必要になります。

foreach($_POST as $var) {
    $postUsers = $EE->input->post($var);

より理想的な解決策は、結果のテンプレートから呼び出されて上記をトリガーするプラグイン、またはおそらくEEに組み込まれているACTセキュリティ機能を使用して送信される適切なフォームを「リッスン」する拡張機能を開発することです。しかし、それはおそらくあなたの要件に不必要なレベルの複雑さを追加します。

于 2012-07-08T16:46:57.800 に答える
0

しかし、EEフォームからこのphpコードを呼び出すにはどうすればよいですか?

私は通常それらを次のように参照します:

<form action="<?php echo base_url('form_processing_controller') ?>">

CodeIgniterを使用するとき。

さらに、$_POST[]CodeIgniterの自動ロードされたInputクラスを使用できるのになぜ使用するのですか?

$this->input->post('item_name')

...これにより、CIは悪意のあるアクティビティを除外します。これに関するユーザーガイドをチェックしてください:http://codeigniter.com/user_guide/libraries/input.html

于 2012-07-08T12:00:02.897 に答える