kunitsuji
tsuji****@m-s*****
2008年 7月 9日 (水) 11:42:55 JST
kunitsujiです。
>JOMRです。
>
>kunitsujiさん。早速のご返答ありがとうございます。
>こちらこそ宜しくお願いします。
どうも。
>いきなりフィニッシュページに行きデータも削除されてました。
>まだまだ勉強中の身なので自分なりに色々試していたところ正常に動作するよう
>に先ほどなりました。
>こんな感じです。
まず行いたいことを整理しましょう。
1)とあるページからコントローラーのdeleteメソッドが呼び出される。
2)その時にcu_idが引数として渡される。
3)同じく画面からはdeleteという値がPOSTデータで渡される
ということですね?
呼び出すページの<input type="hidden" name="delete" value="1" />
があると考えていいでしょうか?
ここですが、これでも悪くはないでしょうけど、次のようにしてみてはどうでし
ょう?
<input type="hidden" name="actionType" value="delete" />
とか。
この場合だとdeleteとかviewとかvalueの値をPHPで動的に変えることでいろいろ
同じものが使えます。
まあ、それはいいとして。
動くようになったというソースと、だめだったソースの違いとしては、
if ($delete == 1)
{
$data['cu_id'] = $row->cu_id;
となっています。
いきなり$row->がでてきているということですか。
else側では
$row = $query->row();
となっていますね。
ここでおかしくなってるんじゃないかな?
あとは、おかしいのかな?とか考えるべき部分としては
$delete = (int) $this->input->post('delete');
if ($delete == 1)
の判定かな。
デバッグテストする場合は、
if ($delete == 1)
の前に
var_dump($delete);
とかいれてみて、
いとした値が$deleteに入っているのかどうかをチェック。
意図した値がとれていれば、if の判定は問題ないはずですね。
そうやって一つ一つ検証していけばいいんじゃないでしょうか?
あとは、、、気になるところとかは。。。
まず、
$cu_id = ''でデフォルトで空文字をセットしています。
そのあと強制でINTに変換。
その後SQL実行。
考えるとすると、
まずcu_idの値はあるのかないのかを調べる(これは開くページでもってるのが
前提かもしれませんが)
あとは、、、
cu_idの値のチェックかなぁ。
これはメソッドの引数なので、
/hoge/delete/12345
を想定しているとおもうけど、
ここにたとえば違うものが埋められる可能性ありますね。
POSTで受け取る場合と、URLの/いかで受け取る場合と
いろいろやり方はあるとおもいます。
ながくなりましたが、いろいろやってみて、わからないことはバンバン質問して
みてください。
>function delete($cu_id = '')
>{
> $cu_id = (int) $cu_id;
> $delete = (int) $this->input->post('delete');
>
> $this->db->where('cu_id', $cu_id);
> $query = $this->db->get('customer');
>
> if ($query->num_rows() == 1){
>
> if ($delete == 1)
> {
> $this->db->where('cu_id', $cu_id);
> $this->db->delete('customer');
> $this->load->view('customer_delete_finished');
> }
> else
> {
> $row = $query->row();
>
>$data['cu_id'] = $row->cu_id;
>$data['cu_name'] = $row->cu_name;
>$data['cu_kana'] = $row->cu_kana;
>$data['cu_tel'] = $row->cu_tel;
>$data['cu_fax'] = $row->cu_fax;
>$data['cu_mail'] = $row->cu_mail;
>$data['biko'] = $row->biko;
>$data['datetime'] = $row->datetime;
>$this->load->view('customer_delete_confirm', $data);
> }
> }
> else
> {
> $this->load->view('customer_delete_error');
> }
>}
>
>CodeIgniter徹底攻略のサンプルを少し改造しただけなのですが、これでも初心
>者としては難しく思いました。
>上記のソースで何かおかしなところがあったらご教授お願いします。
>
>>> 始めまして。JOMRです。
>>> こちらに投稿ははじめてなので宜しくお願いします。
>>>
>>> いきなりで申し訳ないのですが、
>>>
>>> function delete($cu_id = '')
>>> {
>>> $cu_id = (int) $cu_id;
>>> $delete = (int) $this->input->post('delete');
>>>
>>> $this->db->where('cu_id', $cu_id);
>>> $query = $this->db->get('customer');
>>>
>>> if ($delete == 1)
>>> {
>>>
>>> $data['cu_id'] = $row->cu_id;
>>> $data['cu_name'] = $row->cu_name;
>>> $data['cu_kana'] = $row->cu_kana;
>>> $data['cu_tel'] = $row->cu_tel;
>>> $data['cu_fax'] = $row->cu_fax;
>>> $data['cu_mail'] = $row->cu_mail;
>>> $data['biko'] = $row->biko;
>>> $data['datetime'] = $row->datetime;
>>> $this->load->view('customer_delete_confirm', $data);
>>> }
>>> else
>>> {
>>> $row = $query->row();
>>>
>>> $this->db->where('cu_id', $cu_id);
>>> $this->db->delete('customer');
>>> $this->load->view('customer_delete_finished');
>>> }
>>> }
>>>
>>> というメソッドを作成したのですが削除確認の前にデータが削除されてしまいま
>>> す。超初心者質問ですが宜しくお願いします。
>>>
>>> _______________________________________________
>>> Codeigniter-users mailing list
>>> Codei****@lists*****
>>> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users
>>>
>>
>> _______________________________________________
>> Codeigniter-users mailing list
>> Codei****@lists*****
>> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users
>>
>>
>> No virus found in this incoming message.
>> Checked by AVG - http://www.grisoft.jp
>> Version: 8.0.138 / Virus Database: 270.4.7/1541 - Release Date: 2008/07/08
>> 19:50
>>
>>
>>
>>
>
>
>------------------------------------------------------------------------
>
>_______________________________________________
>Codeigniter-users mailing list
>Codei****@lists*****
>http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users
>
>
>---html-part included links-------
>mailto:Codei****@lists*****