0

私はcodeigniterアプリを持っています。私のビューでは、データベースの行IDを使用して入力名に追加し、一意のIDを取得します。これにより、フォームアクション(更新)ですべての入力を使用できるようになります。

私のビュー構文:

<?php if(isset($records)) {?>
<table id="hor-minimalist-a">
    <tr>
        <th>&nbsp;</th><th>&nbsp;</th><th>Customer Name</th><th>postalcode</th>
    <tr>

<?php if(isset($records)) : foreach ($records as $row) : ?>
    <tr>
        <td>
<?php echo anchor('masterdata/confirm_delete_customer/'.$row->id, img(array('src'=>'images/delete_icon.png','border'=>'0','alt'=>'Delete'))); ?>
        </td>
        <td>
            <input type=checkbox name="editcustomer[]" id="editcustomer[]" value="<?php echo $row->id ?>">
        </td>
        <td>
            <input class="inputwide" type="text" name="customer_name_<?php echo $row->id ?>" id="customer_name_<?php echo $row->id ?>" value="<?php echo $row->customer_name ; ?>" >
        </td>
        <td>
            <input class="inputnarrow" type="text" name="postalcode_<?php echo $row->id ?>" id="postalcode_<?php echo $row->id ?>" value="<?php echo $row->postalcode ; ?>" >
        </td>
    </tr>
<?php endforeach ; ?>
    </table>
<input type="submit" value="Update Checked Customers">
<?php endif; ?>

<?php echo form_close(); ?>
<?php } else {?>
<h4 id="warning"> No Customers currently in database</h4>
<?php } ?>

name'sあなたが入力を見ることができて、id'sそれからユニークであるように。

私のコントローラーの構文は次のとおりです。

function manage_customers()
    {

        $data['title']="Manage Customers";

            //query model to get data results for form
            $data=array();

            if($query=$this->model_master_data->get_customer_records()){
                $data['records']=$query;
            }

            $this->load->view("master_data/view_master_data_header",$data);
            $this->load->view("master_data/view_master_data_nav");
            $this->load->view("master_data/view_content_master_data_manage_customers",$data);
            $this->load->view("master_data/view_master_data_footer");


            $editcustomer = $this->input->post('editcustomer');

            // single update - working

            if( $this->input->post('editcustomer') != false )
            {
                foreach ($editcustomer as $row_id)
                {
                    $data = array( 
                        'postalcode' => $this->input->post('postalcode_'.$row_id),
                        'customer_name' => $this->input->post('customer_name_'.$row_id) );
                    $this->model_master_data->update_customer_records( $row_id, $data );
                }
             $this->session->set_flashdata('dbaction', 'Selected Records have been updated successfully');
            redirect('masterdata/manage_customers', 'refresh');
            }


    }

codeigniter検証クラスを利用して、ユーザーが信頼できるデータで入力ボックスを変更できるようにするにはどうすればよいですか?

どうすれば

$this->form_validation->set_rules("primary_contact_tell","担当者に伝える","required|xss_clean|min_length[10]|max_length[14]");

入力フィールドの正しい動的名を参照しますか?フォームには現在、顧客名と郵便番号のみが含まれていますが、残りのフィールドを追加する必要があります。

いつものように、事前に感謝します。

4

2 に答える 2

1

動的な入力検証ルールを実現するために、コントローラーで$recordsをループすることができます。

foreach($records as $row)
{
    $this->form_validation->set_rules("customer_name_" . $row->id, "Customer name", "required|xss_clean|min_length[10]|max_length[14]");
    $this->form_validation->set_rules("postalcode_" . $row->id, "Customer name", "required|xss_clean|min_length[10]|max_length[14]");
}


編集:

少し考えてみてください。コントローラの変数を確認する機能がありません。あなたがここに書いたコードに基づいて私が知る限り、これは機能しているはずです:

foreach($editcustomer as $row_id)
{
    $this->form_validation->set_rules("customer_name_" . $row_id, "Customer name", "required|xss_clean|min_length[10]|max_length[14]");
    $this->form_validation->set_rules("postalcode_" . $row_id, "Customer name", "required|xss_clean|min_length[10]|max_length[14]");
}
于 2013-03-03T14:24:34.210 に答える
0

これについて@yabolに感謝します。まだ構文を少しクリーンアップする必要がありますが、必要な機能は機能しています。

意見

<?php 
    $attributes=array(
        'name'=>'updatecustomer',
        'id'=>'updatecustomer',
        );
    echo form_open('masterdata/manage_customers',$attributes);
?>
<div id="validation_failed">
    <?php
        echo validation_errors();
    ?>
</div>
<?php if(isset($records)) {?>
<table id="hor-minimalist-a">
    <tr>
        <th>&nbsp;</th><th>&nbsp;</th><th>Customer Name</th><th>Address Line 1</th><th>Address Line 2</th><th>Suburb</th><th>City</th><th>Postal Code</th><th>Contact Name</th><th>Contact Email</th><th>Contact Tel</th>
    <tr>

<?php if(isset($records)) : foreach ($records as $row) : ?>
    <tr>
        <td>
<?php echo anchor('masterdata/confirm_delete_customer/'.$row->id, img(array('src'=>'images/delete_icon.png','border'=>'0','alt'=>'Delete'))); ?>
        </td>
        <td>
            <input type=checkbox name="editcustomer[]" id="editcustomer[]" value="<?php echo $row->id ?>">
        </td>
        <td>
            <input class="inputwide" type="text" name="customer_name_<?php echo $row->id ?>" id="customer_name_<?php echo $row->id ?>" value="<?php echo $row->customer_name ; ?>" >
        </td>
        <td>
            <input class="inputmedium" type="text" name="address_line_1_<?php echo $row->id ?>" id="address_line_1_<?php echo $row->id ?>" value="<?php echo $row->address_line_1 ; ?>" >
        </td>
        <td>
            <input class="inputmedium" type="text" name="address_line_2_<?php echo $row->id ?>" id="address_line_2_<?php echo $row->id ?>" value="<?php echo $row->address_line_2 ; ?>" >
        </td>
        <td>
            <input class="inputmedium" type="text" name="suburb_<?php echo $row->id ?>" id="suburb_<?php echo $row->id ?>" value="<?php echo $row->suburb ; ?>" >
        </td>
        <td>
            <input class="inputmedium" type="text" name="city_<?php echo $row->id ?>" id="city_<?php echo $row->id ?>" value="<?php echo $row->city ; ?>" >
        </td>
        <td>
            <input class="inputnarrow" type="text" name="postalcode_<?php echo $row->id ?>" id="postalcode_<?php echo $row->id ?>" value="<?php echo $row->postalcode ; ?>" >
        </td>
        <td>
            <input class="inputmedium" type="text" name="primary_contact_name_<?php echo $row->id ?>" id="primary_contact_name_<?php echo $row->id ?>" value="<?php echo $row->primary_contact_name ; ?>" >
        </td>
        <td>
            <input class="inputmedium" type="text" name="primary_contact_email_<?php echo $row->id ?>" id="primary_contact_email_<?php echo $row->id ?>" value="<?php echo $row->primary_contact_email ; ?>" >
        </td>
        <td>
            <input class="inputmedium" type="text" name="primary_contact_tell_<?php echo $row->id ?>" id="primary_contact_tell_<?php echo $row->id ?>" value="<?php echo $row->primary_contact_tell ; ?>" >
        </td>

    </tr>
<?php endforeach ; ?>
    </table><br>
<input type="submit" value="Update Checked Customers">
<?php endif; ?>

<?php echo form_close(); ?>

コントローラ

function manage_customers()
    {

        $data['title']="Manage Customers";
            //query model to get data results for form
            $data=array();

            if($query=$this->model_master_data->get_customer_records()){
                $data['records']=$query;
            }
            $editcustomer = $this->input->post('editcustomer');

            if( $this->input->post('editcustomer') != false ){
            foreach($editcustomer as $row_id)
            {
                $this->form_validation->set_rules("customer_name_" . $row_id, "Customer name", "required|min_length[6]");
                $this->form_validation->set_rules("address_line_1_". $row_id,"`Address Line 1`","required|xss_clean|min_length[6]");
                $this->form_validation->set_rules("address_line_2_". $row_id,"`Address Line 2`","xss_clean|min_length[6]");
                $this->form_validation->set_rules("suburb_". $row_id,"`Suburb`","required|xss_clean|min_length[6]");
                $this->form_validation->set_rules("city_". $row_id,"`City`","required|xss_clean|min_length[6]");
                $this->form_validation->set_rules("postalcode_". $row_id,"`Postal Code`","required|xss_clean|min_length[4]|max_length[5]");
                $this->form_validation->set_rules("primary_contact_name_". $row_id,"`Contact Person Name`","required|xss_clean|min_length[6]");
                $this->form_validation->set_rules("primary_contact_email_". $row_id,"`Contact Person email`","required|valid_email|xss_clean");
                $this->form_validation->set_rules("primary_contact_tell_". $row_id,"`Contact Person tell`","required|xss_clean|min_length[10]|max_length[14]");

            }
            }

            if ($this->form_validation->run() == FALSE){

                $data["message"]="";

                $this->load->view("master_data/view_master_data_header",$data);
                $this->load->view("master_data/view_master_data_nav");
                $this->load->view("master_data/view_content_master_data_manage_customers",$data);
                $this->load->view("master_data/view_master_data_footer");

            } else {
                // single update - working
                if( $this->input->post('editcustomer') != false )
                {
                    foreach ($editcustomer as $row_id)
                    {
                        $data = array( 
                        'customer_name' => $this->input->post('customer_name_'.$row_id),
                        'address_line_1' => $this->input->post('address_line_1_'.$row_id),
                        'address_line_2' => $this->input->post('address_line_2_'.$row_id),
                        'suburb' => $this->input->post('suburb_'.$row_id),
                        'city' => $this->input->post('city_'.$row_id),
                        'postalcode' => $this->input->post('postalcode_'.$row_id),
                        'primary_contact_name' => $this->input->post('primary_contact_name_'.$row_id),
                        'primary_contact_email' => $this->input->post('primary_contact_email_'.$row_id),
                        'primary_contact_tell' => $this->input->post('primary_contact_tell_'.$row_id),
                        );

                        $this->model_master_data->update_customer_records( $row_id, $data );
                    }
                     $this->session->set_flashdata('dbaction', 'Selected Records have been updated successfully');
                    redirect('masterdata/manage_customers', 'refresh');
                    }

            }
    }
于 2013-03-04T07:55:56.757 に答える