0

私はcodeigniterがいくつかの簡単なページを試してみるのは初めてです。挿入と更新のためにデータベースに正常に接続しました。しかし今、私は更新のためにデータベースからフィールドにデータを入力したいと思います。つまり、ユーザーがドロップダウンから名前を選択すると、ユーザーが簡単に更新できるように、対応する値が他のフィールドに表示されます。

私はajaxやjqueryなしでこれを行うために取り組んできました。それは私にとってはうまくいきましたが、いくつかの警告メッセージがありました-未定義の定数の使用。

私はMVCで提供しています。これをクリアするのを手伝ってください。

コントローラ:

public function update()
{
$this->load->helper('form');
$this->load->library('form_validation');
$data['title'] = 'Update Type';
$data['product_type'] = $this->editType_model->get_product_type();
    $data['row'] = $this->editType_model->get_row();

$this->form_validation->set_rules('productype', 'productype', 'required');

if ($this->form_validation->run() === FALSE)
{
    $this->load->view('templates/header', $data);   
    $this->load->view('cm/update', $data);
    $this->load->view('templates/footer');

}
else
{
        $data['title']= 'Updation';
        $data['message']= 'Updation succeeded';
    $this->editType_model->update_news();
    $this->load->view('cm/success', $data);
}
}

モデル:

public function get_product_type() {
    $data = array();
            $this->db->order_by("product_type_name", "desc"); 
    $query = $this->db->get('product_type');
    if ($query->num_rows() > 0) {
        foreach ($query->result_array() as $row){
                $data[] = $row;
            }
    }   
    $query->free_result();
    return $data;   
}
public function get_row() {
    $data = array();
                $id= $_POST[product_type_id];
    $query = $this->db->get_where('product_type', array('product_type_id' => $id));
            if ($query->num_rows() > 0) {
        foreach ($query->result_array() as $row){
                $data[] = $row;
            }
    }   
    $query->free_result();
            return $data;   

}
public function update_news()
{
$this->load->helper('date');
$Product = $this->input->post('product_type_id');
$data = array(
    'product_type_name'=>($_POST['productype']),
    'rank'=>($_POST['rank'])        
            );
$this->db->where('product_type_id',$Product);
return $this->db->update('product_type', $data);
}

意見:

<?php $productType = 0;
if(isset($_POST['product_type_id'])){
$productType = $_POST['product_type_id'];
}?>
<div id="Content"><div>
<form action="" method="post" name="f1">
<table ><tr><td>Select Product Type Name:</td>
    <td><Select id="product_type_id" name="product_type_id" onChange="document.f1.submit()">
            <option value="0">--SELECT</option>
            <?php if (count($product_type)) {
                              foreach ($product_type as $list) { ?>
            <option value="<?php echo $list['product_type_id']; ?>" 
            <?php if($productType==$list['product_type_id']) echo     "Selected" ?> >
            <?php echo $list['product_type_name'];  ?></option>
            <?php }} ?></Select></td></tr></table></form>
<?php   if($productType){
            if (count($row)) {
        foreach ($row as $faProductType) { ?>
    <div > <form action="" method="post" class="form-Fields" >
    <input type="hidden" name="product_type_id" id="product_type_id" value="<?php echo     $faProductType['product_type_id']; ?>" >
    <table border="0" cellpadding="8" cellspacing="0" >
    <tr><td>Product Type <font color="red">*</font></td><td style="width: 10px;"> :         </td>
     <td><input name="productype" type="text" value="<?php echo     $faProductType['product_type_name']; ?>" style=" width:300px;" /></td>
            <td><span class="err" id="productTypeDesc1Err"></span></td></tr>
         <tr><td >Rank</td><td style="width:10px;"> : </td>
            <td ><input type="text" name="rank" id="rank" value="<?php echo     $faProductType['rank']; ?>" size="39" />&nbsp;&nbsp;<span class="err"     id="productTypeNameErr"></span></td>
            <td ></td></tr><tr><td></td><Td colspan="2" align="center">
            <input type="submit" value="Update" class="buttonimg"      name='cm/editType/update' style="width:100px"
            onClick="return validEditProductType();">
            </Td><td></td></tr></table></form></div></div></div>
<?php }}} ?>
4

2 に答える 2

0

やっとエラーをクリアできました。これは単純な if isset ループで行いました。

これで、モデルの get_row() は次のようになります。

public function get_row() {
            $data = array();
$id= 0;
if(isset($_POST['product_type_id'])){
$id = $_POST['product_type_id'];
}
$query = $this->db->get_where('product_type', array('product_type_id' => $id));
if ($query->num_rows() > 0) {
foreach ($query->result_array() as $row){
$data[] = $row;
}
}
    $query->free_result();
    return $data;   
}
于 2013-03-08T11:32:50.687 に答える
0

この目的で Ajax を使用し
て、選択ボックスの変更時に div にフォームを入力できます。

コントローラーの方法

function getUserdata(){
    $where['username'] = $this->input->post('username');
    $this->load->model('users_model');
    $data['user'] = $this->users_model->getUser($where);
    $this->load->view('userform',$data);
}

そして、あなたは方法をモデル化します

function getUser($where){
    return $this->db->where($where)->get('usertable')->row()
}

アヤックス

$(function(){
    $('#selecttion').change(function(){
         var username = $(this).val();
         $.ajax({
            url : '<?php 'echo url to controller method'?>',
            type : 'POST'  ,
            data : 'username='+username,
            success : function(data){
                $('#dividtofill').html(data);
            }
         }); 

    });
}) 

編集 :


ヘッダーにjqueryライブラリを含めると、 ajaxを簡単に呼び出すことができます。
ここにあなたのドロップダウンがあります

注:上記のajaxコードをスクリプトのheadセクションに入れます

<select name="user" id="selecttion">
    <option value="John">John</option>
    <option value="Sam">Sam</option>
    <option value="David">David</option>
</select>

このドロップダウン値が変更されると、上記で定義された ajax 関数が呼び出されます。

于 2013-02-27T11:29:18.607 に答える