前提・実現したいこと
CakePHP2.1のtwitter模擬簡易的Webアプリにおいて、データベース [users]テーブルに登録している[id](ユーザー名)の表示をあいまい検索で実装したいです。
①search画面にてユーザーを検索
②search-result画面にて検索したユーザーを表示
###データベース設計
データベース
■twitter
①users
・id
・username
・email
・password
②tweets
・id
・user_id
・tweet
③follows
・id
・follow_id
・follower_id
発生している問題・エラーメッセージ
検索したところ、search_resultにて、全ユーザーが表示されている状態です
ソースコード
↓ search.ctp
PHP
1 <?= $this->Form->create(); ?> 2 <?= $this->Form->input('userdata',[ 3 'label' => 'ユーザー名', 4 'class' => '', 5 'placeholder' => '検索するユーザー名を入力してください。' 6 ]); ?> 7 <?= $this->Form->button('検索'); ?> 8 <?= $this->Form->end(); ?> 9 <?= $this->Flash->render(); ?>
↓ search_result.ctp
PHP
1<?php 2 foreach ($userdata as $data) { 3 if(empty($data)): 4 echo print(h("データが見つかりませんでした。")); 5 else: 6 echo "ユーザーネーム:" .$data['Users']['username'].'<br>'.'<br>'; 7 8 endif; 9} 10?>
↓ TweetsController
PHP
1 public function search() { 2 $this->loadModel('Users'); 3 if ($this->request->is('post')) { 4 $this->redirect(['action'=>'search_result']); 5 } 6 } 7 8 9 public function search_result() { 10 $this->loadModel('Users'); 11 12 $username = $this->request->query('username'); 13 $data = $this->Users->find('all', array( 14 'conditions' => array( 15 'username like' => '%'.$username.'%') 16 )); 17 $user = array('username' => $this->Auth->user('username')); 18 19 if(empty($data)) { 20 $this->Flash->success('対象のユーザーは見つかりません。'); 21 } 22 $this->set('userdata', $data); 23 }
#最後に
初歩的な質問で大変お恥ずかしいですが、よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー