• 締切済み

CakePHPでテーブルからデータを選択したデータを受け渡し、次ページで表示する動作について

現在CakePHPを使用して研修用の受講登録ページを作成しています。 やりたい事としては、 (1)ページ1でデータベースに入っているコース一覧をテーブルに表示 (2)ページ1で各行にチェックボックスがついており、選択したコースのIDを次ページに受け渡しする。 (3)ページ2で受け取ったデータ(コースのID)を元にFindで検索、テーブルに表示する。 といった感じです。 現在(2)まではできているのですが、(3)の部分でうまくいかずに困っています。 現在の状態は、(2)の部分ではチェックボックスの名前をコースのIDと同じ数字にし選択したチェックの数値と、何件選択したかをカウントしたものを変数に入れてFormにて受け渡しています。 そして、(3)で受け取ったデータを元にFindをかけたいのですが、Findの部分でどういった記述をすればいいのかわからず1週間ほど困っています。 グーグルでFindについて検索をしてみたものの、有効な答えを得られなかったので質問させて頂きます。よろしくお願いします。 なお、現在Findの部分は $conditions = array(  'conditions' => array(   'or' => array( for ($a=0;$a < $kensuu;$a++){ $data = $this->params['form'][$a]; if ($data == 1){ $check = 1; $count++; } if ($check == 1){ $sdata .= array('courceID' => '$a'); $a++; $data = $this->params['form'][$a]; if ($a == $kensuu){ $sdata .= array('courceID' => '$a'); $count++; } $a--; } $check = 0; } //$conditions = $conditions . $sdata; //$conditions .= ",),),);"; $sentakudata = $this->Pobs->find('all', $conditions); $this->set('sentakudata', $sentakudata); と、途中で止まっています。 選択したデータを $conditions = array(  'conditions' => array(   'or' => array( array('courceID' => '○○'), array('courceID' => '○○'), と、いった感じで自動で条件の部分に追加していきたいのです。

みんなの回答

回答No.1

ろくにCakePHPを使ったことがないですが、 <?php $conditions = array( 'conditions' => array( 'or' => array( array('courceID', 'xx'), array('courceID', 'xx'), ), ), ); ?> この配列に挿入されるのが目的で、フォームから値の取得は出来ているという前提ですが まず、<input type="checkbox" name="○○">に指定した、「○○」はどのような値ですか? それ次第で回答も変わりますが <input type="checkbox" name="hoge[1]" value="on"> <input type="checkbox" name="hoge[2]" value="on"> ・ ・ ・ <input type="checkbox" name="hoge[10]" value="on"> といった値を挿入したと仮定し、「[]」内の数値がテーブルのidフィールドの値だったとします。 <?php $checkbox_array = $this->params['form']['hoge']; //質問の内容から推測するに // //とりあえず変数conditionsを初期化 $conditions = array( 'conditions' => array( 'or' => array(), ), ); foreach($checkbox_array as $key => $check){ $conditions['conditions']['or'][] = array('courceID'=>$key); } $sentakudata = $this->Pobs->find('all', $conditions); $this->set('sentakudata', $sentakudata); ?> とすれば、いけるのではないでしょうか。 配列に値を追加する場合は、 <?php array_push($array, $data); //とするか $array[] = $data; ?> とすることが出来ます。