:不定インデックス:
function get_all_photographer_campaign_details($camp_id) {
$this->db->select('*');
$this->db->where('campaign_id',$camp_id);
$query = $this->db->get('ps_campaigns');
if ($query->num_rows() > 0) {
foreach ($query->result_array() as $row) {
$data[] = $row;
}
return $data;
}
return array();
}
//get seller name by id
function get_seller_name_by_id($uid)
{
$this->db->select('firstname, lastname');
$this->db->where('id', $uid);
$query = $this->db->get('ps_users');
//return $query->row();
return $query->result_array();
}
エラーがコントローラから来ています空の配列を返します。
コントローラでは、有効なエントリが見つかったかどうかを確認することはありません。結果として、$campaign
が空であり、uid
キーを持たないため、エントリに対応しないURLでIDが参照されると、undefined index: uid
が返されます。このような何か試してみてください:
さらに
function photographer_campaign_details(){
$camp_id = $this->uri->segment(4);
$data['page_title'] = 'Photographer Campaign Details';
$adminId = $this->session->userdata('adminid');
$campaign = $this->Admin_model->get_all_photographer_campaign_details($camp_id);
if (!$campaign){
show_404();
}
$data['seller'] = $this->Admin_model->get_seller_name_by_id($campaign['uid']);//error is here: Undefined index: uid
$data['campaign'] = $campaign;
$this->load->view('admin/photographer_campaign_details',$data);
}
を、あなたは検索データを行うイベントに間違ったデータを返すされています。 get_all_photographer_campaign_details
でつまりこのビット:問題はあなたが$data
に1行として行を追加しているということですが、あなたのコントローラが実際のデータを取得するために期待している
foreach ($query->result_array() as $row) {
$data = $row;
break;
}
:
foreach ($query->result_array() as $row) {
$data[] = $row;
}
は、次のようになります自体。私。
[
'campaignid' => 1,
'uid' => 'ijerjeire'
]
しかし、あなたはこれを返すされています:あなたのコントローラは、このことを期待している [
[
'campaignid' => 1,
'uid' => 'ijerjeire'
]
]
はすべてが周りに包まれていること、余分な配列に注意してください。基本的には、コントローラが結果を期待しているだけで、モデルは結果の配列を返しています。私の上記の提案は、返されたキャンペーンが1つしかないと思われる場合には機能します。そうでない場合は、モデルメソッドではなくコントローラを調整する必要があります。
私のもう1つのポイントを繰り返してください。URLからのユーザー入力を確認し、確認してください。それ以外の場合は、404の代わりにPHPエラーを返します。
すべてのキャンペーンの詳細が正しく表示されています。名前を取得してuidの代わりに表示する別のクエリを実行したいだけです。 –
キャンペーンの詳細をすべて正しく取得していると思われるのはなぜですか?あなたのエラーは、 '$ campaign'変数の' uid'キーが存在しないことを明確に示しています。その理由はレコードが見つからなかったためです。とにかく、idがURLから来ているため、あなたが検証していないユーザー入力です。ユーザーは任意の数字(または数字ではない)をURLに入れることができます。その場合、クエリにキャンペーンが見つからず、このエラーが発生します。入力内容を検証する必要があります。 –
1つのキャンペーンでのみテストを行っています。すべての値が正しく表示されています。私はユーザーIDの代わりにテキストを表示しようとしています。最初のモデル関数(get_all_photographer_campaign_details)で$ query-> result_array()を使用すると、$ campaignからどのようにuidにアクセスできますか?ありがとう –