duanshan3065 2017-09-18 17:37
浏览 25
已采纳

如何使用php填充db的<select>下拉列表

Im working within OpenCart and am trying to create a dynamic dropdown in my form. I can not get it to populate from the db. I keep getting this error:

Warning: Illegal string offset 'firstname' in /var/www/html/Acendia-bit-bucket/vK23o003xdkxLp2-09zxkjekzcDt/controller/campaigns/campaign.php on line 507

Really I just want a dropdown list that shows the firstname and lastname of everyone in that table.

Model:

public function getCustomers() {


$query = $this->db->query("SELECT customer_id, firstname, lastname FROM " . DB_PREFIX . "customer");


return $query->result_array();
//return $query->row;

}

Controller:(full function from the controller)

protected function getForm() {

    $data['heading_title'] = $this->language->get('heading_title');
    $data['text_form'] = !isset($this->request->get['event_id']) ? $this->language->get('text_add') : $this->language->get('text_edit');
    $data['text_add_component'] = $this->language->get('text_add_component');
    $data['entry_attending'] = $this->language->get('entry_attending');
    $data['entry_attended'] = $this->language->get('entry_attended');
    $data['entry_interested'] = $this->language->get('entry_interested');

    $data['entry_date'] = $this->language->get('entry_date');
    $data['entry_campaign_start_date'] = $this->language->get('entry_campaign_start_date');
    $data['entry_campaign_end_date'] = $this->language->get('entry_campaign_end_date');
    $data['entry_owner'] = $this->language->get('entry_owner');
    $data['entry_goal'] = $this->language->get('entry_goal');
    $data['entry_goal_count'] = $this->language->get('entry_goal_count');

    $data['text_publish'] = $this->language->get('text_publish');
    $data['text_preview'] = $this->language->get('text_preview');
    $data['text_cancel'] = $this->language->get('text_cancel');
    $data['text_save'] = $this->language->get('text_save');
    $data['text_filter_type'] = $this->language->get('text_filter_type');
    $data['entry_name'] = $this->language->get('entry_name');

    $data['button_publish'] = $this->language->get('button_publish');
    $data['button_preview'] = $this->language->get('button_preview');
    $data['button_save'] = $this->language->get('button_save');
    $data['button_cancel'] = $this->language->get('button_cancel');


    if (isset($this->error['warning'])) {
        $data['error_warning'] = $this->error['warning'];
    } else {
        $data['error_warning'] = '';
    }

    if (isset($this->error['campaign_id'])) {
        $data['error_campaign_id'] = $this->error['campaign_id'];
    } else {
        $data['error_campaign_id'] = '';
    }

    if (isset($this->error['campaign_name'])) {
        $data['error_campaign_name'] = $this->error['campaign_name'];
    } else {
        $data['error_campaign_name'] = '';
    }

    if (isset($this->error['campaign_giving_goal'])) {
        $data['error_campaign_giving_goal'] = $this->error['campaign_giving_goal'];
    } else {
        $data['error_campaign_giving_goal'] = '';
    }

    if (isset($this->error['campaign_giving_count_goal'])) {
        $data['error_campaign_giving_count_goal'] = $this->error['campaign_giving_count_goal'];
    } else {
        $data['error_campaign_giving_count_goal'] = '';
    }

    if (isset($this->error['campaign_owner'])) {
        $data['error_campaign_owner'] = $this->error['campaign_owner'];
    } else {
        $data['error_campaign_owner'] = '';
    }



    $url = '';

    if (isset($this->request->get['filter_name'])) {
        $url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8'));
    }

    if (isset($this->request->get['sort'])) {
        $url .= '&sort=' . $this->request->get['sort'];
    }

    if (isset($this->request->get['order'])) {
        $url .= '&order=' . $this->request->get['order'];
    }

    if (isset($this->request->get['page'])) {
        $url .= '&page=' . $this->request->get['page'];
    }

    if (!isset($this->request->get['event_id'])) {
        $data['action'] = $this->url->link('campaigns/campaign/add', 'token=' . $this->session->data['token'] . $url, true);
    } else {
        $data['action'] = $this->url->link('campaigns/campaign/edit', 'token=' . $this->session->data['token'] . '&event_id=' . $this->request->get['event_id'] . $url, true);
    }



    $getCustomers = $this->model_campaigns_campaign->getCustomers();

    foreach ($getCustomers as $customers) {
        $data['customer_list'][] = array(
            'customer_firstname' => $customers['firstname']
        );
    }

    $data['breadcrumbs'] = array();

    $data['breadcrumbs'][] = array(
        'text' => $this->language->get('text_home'),
        'href' => $this->url->link('common/dashboard', 'token=' . $this->session->data['token'], true)
    );

    $data['breadcrumbs'][] = array(
        'text' => $this->language->get('heading_title'),
        'href' => $this->url->link('campaigns/campaign', 'token=' . $this->session->data['token'] . $url, true)
    );

    $data['cancel'] = $this->url->link('campaigns/campaign', 'token=' . $this->session->data['token'] . $url, true);

    $data['token'] = $this->session->data['token'];

    $this->load->model('localisation/language');

    $data['languages'] = $this->model_localisation_language->getLanguages();
    $data['header'] = $this->load->controller('common/header');
    $data['column_left'] = $this->load->controller('common/column_left');
    $data['footer'] = $this->load->controller('common/footer');

    $this->response->setOutput($this->load->view('campaigns/campaign_form', $data));
}

View:

   <div class="col-sm-5 col-sm-push-1 form-group required>
                  <label class="col-sm-2 control-label" for="input-campaign-owner"><?php echo $entry_owner; ?></label>
                <select name="customer-list" id="customer-list" >
                  <?php
                foreach ($customer_list as $list){
                 echo "<option value=''>$list['customer_firstname']</option>";
                }
                ?>

                  </select>
                </div>
  • 写回答

2条回答 默认 最新

  • dongsibao8977 2017-09-19 01:16
    关注

    I think it should be $query->rows; in model and you only need $data['customers'] = $this->model_campaigns_campaign->getCustomers(); in controller, then show it in view:

    <div class="col-sm-5 col-sm-push-1 form-group required">
        <label class="col-sm-2 control-label" for="input-campaign-owner"><?php echo $entry_owner; ?></label>
        <select name="customer-list" id="customer-list">
        <?php foreach ($customers as $customer) { ?>
            <option value="<?php echo $customer['customer_id']; ?>"><?php echo $customer['firstname'] . ' ' . $customer['lastname']; ?></option>
        <?php } ?>
        </select>
    </div>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效