0

テーブルの 1 行を更新する正しい方法が見つかりません。

私の見解:

...
<?php echo form_open('ImenikController/verify_editing_phonebook/'.$this->uri->segment(3)); ?>
Ime i prezime*:
<input type='text' name='ime_prezime' value=""> <br><br>
    Ulica i broj: <input type='text' name='ulica' value="">  <br><br>
    Mesto:        <input type='text' name='mesto' value="">  <br><br>
    Telefon*:     <input type='text' name='telefon' value=""> <br><br>

    <u>Napomena: Polja sa zvezdicom su obavezna.</u> <br /> <br />
    <input background:url('images/login-btn.png') no-repeat; border: none; 
      width='103' height='42' style='margin-left:90px;'  type='submit' value='Izmeni'>
<?php echo form_close(); ?>
...

私のコントローラー:

function verify_editing_phonebook()
{
    if ($this->session->userdata('logged_in'))
    {
        if ($this->session->userdata('admin') == 1)
        {

            $this->form_validation->set_rules('ime_prezime', 'Ime i prezime', 'trim|required|xss_clean');               
            $this->form_validation->set_rules('telefon', 'Telefon', 'trim|required|xss_clean');

            if ($this->form_validation->run() == TRUE)
            {
                $id = $this->uri->segment(3);
                if (isset($id) and $id > 0)
                {
                    $this->load->model('LoginModel');
                    $this->LoginModel->edit_phonebook($id);

                    redirect(site_url().'ImenikController/', 'refresh');
                }
            }
            else {
                $temp = $this->session->userdata('logged_in');
                $obj['id'] = $temp['id'];
                $data['records'] = $this->LoginModel->get_Username($obj);
                $this->load->view('ErrorEditing', $data);

            }
        }
        else {
            $this->load->view('restricted_admin');
        }
    }
    else {
        $this->load->view('restricted');
    }
}

私のモデル:

function edit_phonebook($id)
    {
        $data = array ('ime_prezime' => $this->input->post('ime_prezime'), 
            'ulica' => $this->input->post('ulica'),
            'mesto' => $this->input->post('mesto'),
            'telefon' => $this->input->post('telefon'));

       $this->db->where('id', $id);
     $this->db->update('pregled', $data);        
    }

その解決策は機能しません。URL を取得します: localhost/imenik114/ImenikController/verify_editing_phonebook

白紙(ホワイト)のページです。テーブルの行を編集していません。

4

2 に答える 2

0

回答ありがとうございますが、何とか問題を解決しました。私は自分の見解でリンクを作成しました:

<a href="<?php echo site_url(). 'Controller/edit/'.$row->id; ?>" title="">Edit</a>

そして編集のためにビューで:

<?php echo form_open('Controller/verify_editing_phonebook/'.$this->uri->segment(3)); ?>

関数 verify_editing_phonebook は、検証と読み込みビューを通過しました。

もう一度ありがとう、そして私の英語でごめんなさい...

于 2013-03-25T08:07:04.713 に答える
0

基本的なデバッグ戦略

(1) すべてのビューファイルを作成しましたか?

(2)edit_phonebook($id)独自にテストしましたか?

(3) 何をredirect(site_url().'ImenikController/', 'refresh');表示しますか? のインデックス関数を定義しましたImenikControllerか?

(4) 「その解決策はうまくいかない」と言ったとき、どの URL を使用しましたか。?

(5) URL が「localhost/imenik114/ImenikController/verify_editing_phonebook」の場合id、3 番目のセグメントに入力していません。

(6) ログインしていない場合、正しいrestrictedビューが表示されますか?

(7) 管理者ではなくログインしている場合、正しいrestricted_adminビューが表示されますか?

潜在的なバグ

コードのこの部分を見ると:

        if ($this->form_validation->run() == TRUE)
        {
            $id = $this->uri->segment(3);
            if (isset($id) and $id > 0)
            {
                $this->load->model('LoginModel');
                $this->LoginModel->edit_phonebook($id);

                redirect(site_url().'ImenikController/', 'refresh');
            }
            // You need to handle the case of $id not set
            else
            {
              // load a view with error page saying $id is missing...
            }
        }

フォームが検証され、 を渡さsegment(3)ない場合、コントローラーはビューをロードしないため、空白のページが表示されます。

存在しない場合を確認する必要があり$idます。コードを参照してください。

コード修正

もう 1 つの詳細: ステートメントは数値またはのいずれかに$id = $this->uri->segment(3);設定されるため、 if ステートメントでは必要ありません。ロジックを少し明確にするのではなく、デフォルトを に設定するように記述します。$ididFALSEisset($id)$id = $this->uri->segment(3,0);0FALSE

于 2013-03-22T11:34:35.577 に答える