1

皆さん、こんにちは。私はちょうど codeigniter と php を使い始めました。私は簡単な調査タイプのウェブサイトを作成しています。チェックボックスがあり、質問は多肢選択式になり、チェックボックスがオンの場合は結果がデータベースに保存されます。私の質問は、どうすればそれを行うことができるかということです。これが私のフォームです。事前にみんなの助けに感謝します。

見る

<?php foreach($survay_data as $survay):?> 
    <ul>
        <li><h1><?php echo $survay->Question;?></h1></li> 
        <li><?php echo $survay->qA; ?><input type="checkbox" name="q1[]" value="qA"></li>
        <li><?php echo $survay->qB; ?><input type="checkbox" name="q2[]" value="qB"></li>
        <li><?php echo $survay->qC; ?><input type="checkbox" name="q3[]" value="qC"></li>
        <?php endforeach; ?>
        <input type="textarea" value='a' name="comment">
        <br>
        <input type="submit" value="Submit">
    </ul>

コントローラ

<?php
    class Survay extends CI_Model{

        function dosurvay($arrData){

            $this->db->select('QID, Question, qA, qB, qC');
            $this->db->from('tblquestions');
            $this->db->where('Question', $arrData['Question']);
            $this->db->where('qA', $arrData['qA']);
            $this->db->where('qB', $arrData['qB']);
            $this->db->where('qC', $arrData['qC']);
            $this -> db -> limit(1);

            $query = $this -> db -> get();

            if($query -> num_rows() == 1)
            {
                return $query->result();
            }
            else
            {
                return false;
            }
        }
    }
?>

モデル

<?php
class Survaycontroller extends CI_Controller{
   // 'QID, Question, qA, qB, qC'

    function index()
    {

            $arrData = array();
            $arrData["qA"] = $this->input->post("qA");
            $arrData["qB"] = $this->input->post("qB");
            $arrData["qC"] = $this->input->post("qC");
            $arrData["Question"] = $this->input->post("Question");

            $this->load->model('survay');

            $survay_data = $this->survay->dosurvay($arrData);

            $viewData['survay_data'] = $survay_data;

            $this->load->view('survay_view', $viewData);
    }

}
?>
4

2 に答える 2

5

これはあなたが望むことをするはずです。Stackover に関するチャットに基づいて、回答が提供されています。あなたの質問は、チャットで行ったリクエストほど明確ではありません。問題を解決できるコードを以下で見つけてください

コードイグナイターの基本的な使い方:

コメントの量を減らすために、このコードを提供しています。あなたが Codeigniter にかなり慣れていないことは確かです。できる範囲でお手伝いするしかありません。

ステップ 1: データベース

データベース テーブル「tblquestions」を作成します。フィールドは QID、qA、qB、および qC である必要があります。たくさんある場合は、最大 43 のようなレコードをフィールドに入力します。わずか 5 レコードで十分です。

ステップ 2: モデル

<?php

class Survay extends CI_Model {

    function dosurvay($question_id = null) {

        $this->db->select('QID, Question, qA, qB, qC');
        $this->db->from('tblquestions');
        if ($question_id) {
            $this->db->where('QID', $question_id);
        }
        $this->db->limit(1);
        $query = $this->db->get();

        if ($query->num_rows() == 1) {
            return $query->result();
        } else {
            return false;
        }
    }

 function addsurvay($arrData) {

    $this->db->insert('tblanswers', $arrData);

    if ($this->db->affected_rows() > 0) {
        return $this->db->insert_id();
    } else {
        return false;
    }
}

}
?>

ステップ 3: コントローラー

<?php

class Survaycontroller extends CI_Controller {

    // 'QID, Question, qA, qB, qC'
    function __construct() {
        parent::__construct();
        $this->load->model('survay');
    }

    function index() {
        //This should select the survey question
        $data = array();
        $question_id = $this->uri->segment(3);
        $data[survay_data] = $this->survay->dosurvay($question_id);
        $this->load->view('survay_view', $data);
    }

    function addanswer() {
        //The answer is submitted to this...
        $arrData = array();
        $userid = null;
        if ($this->session->userdata("userid")) {
            $userid = $this->session->userdata("userid");
        }
        if ($this->input->post()) {
            $arrData["answerid"] = $this->input->post("QID");
            $arrData["questionid"] = $this->input->post("qA");
            if ($this->input->post("qA")) {
                $arrData["answerA"] = $this->input->post("qA");
            }
            if ($this->input->post("qB")) {
                $arrData["answerB"] = $this->input->post("qB");
            }
            if ($this->input->post("qC")) {
                $arrData["answerC"] = $this->input->post("qC");
            }
            $arrData["userid"] = $userid;
        }
        $viewData[survay_data_id] = $this->survay->addsurvay($arrData); //Get the ID of the answer stored
        $this->load->view('survay_view', $viewData);
    }

}
?>

ステップ 4: ビュー

<?php if(isset($survay_data)) : ?>
<form action="http://localhost/Surva/index.php/survaycontroller/addanswer/" name="myform" id="myform" method="post">
   <?php foreach ($survay_data as $survay): ?> 
        <ul>
            <li><h1><?php echo $survay->Question; ?></h1></li> 
            <li><?php echo $survay->qA; ?><input type="checkbox" name="qA" value="<?php echo $survay->qA; ?>"></li>
            <li><?php echo $survay->qB; ?><input type="checkbox" name="qB" value="<?php echo $survay->qA; ?>"></li>
            <li><?php echo $survay->qC; ?><input type="checkbox" name="qC" value="<?php echo $survay->qA; ?>"></li>
            <li><input type="hidden" name="QID" value="<?php echo $survay->QID; ?>"></li>
            <li><input type="submit" name="btn" value="Answer"></li>
        </ul>
    <?php endforeach; ?>
</form>
<?php endif; ?>

試して:

http://localhost/Surva/index.php/survaycontroller/index/2

質問番号 2 を取得するには

これで確実に動作します。すでに持っているものをすべて交換してください。これらの新しいコード セットが、上記のコード セットをより効率的に置き換えるかどうか教えてください。

于 2013-02-26T10:02:51.763 に答える
0
 <?php foreach($survay_data as $survay):?> 
<ul>
<li><h1><?php echo $survay->Question;?></h1></li> 
<li><?php echo $survay->qA; ?><input type="checkbox" name="q1[]" value="<?php echo $survay->qA; ?>"></li>
<li><?php echo $survay->qB; ?><input type="checkbox" name="q2[]" value="<?php echo $survay->qB; ?>"></li>
<li><?php echo $survay->qC; ?><input type="checkbox" name="q3[]" value="<?php echo $survay->qC; ?>"></li>
<?php endforeach; ?>
<input type="textarea" value='a' name="comment">
<br>
<input type="submit" value="Submit">
</ul>

取得したデータをチェックボックスの値としてデータベースに配置する必要があります。コントローラーでは、var_dump($this->input->post())送信されたデータを確認して、好きなように操作できます。

少し拡大しました:

つまり、ユーザーがチェックボックスをオンにしたときに値として送信される、データベースの値を値 attr に割り当てようとしています。

データを受け取るコントローラで、form_open()または標準のタグ タイプを使用しているかどうかをフォームで確認します。<form>

function dosurvay($arrData){

    // you're get survay things here


    if($this->input->post())// will execute only if a post happens
    {
       echo '<pre>';
       print_r($this->input->post()); // just print out everything
       echo '</pre>';
    }
}
于 2013-02-26T08:00:46.253 に答える