【问题标题】:CodeIgniter: Populate an input text in the view from data array grabbed from databaseCodeIgniter:从数据库抓取的数据数组中填充视图中的输入文本
【发布时间】:2013-07-10 13:22:10
【问题描述】:

这个 print_r($query->result()); 的返回应该是:

数组([0] => stdClass 对象([guest_name] => 测试名称 [guest_gender] => 男性 [guest_nic_pp_dl] => 123456789))

我需要将这些值分别传递到视图中的输入文本框、单选按钮和下拉列表中。

例如,我需要输入“guest_name”,在视图中选择“guest_gender”值,并在下拉列表中选择与“guest_nic_pp_dl”对应的下拉值(HTML 选择)。

控制器:

function get_customer_details() {
    $guest_name = $this->input->post('guest_name');
    $this->banquet_model->talk_to_new_guest_table($guest_name);
    $this->load->view('/main/banquet_view');
}

型号:

function talk_to_new_guest_table($guest_name) {
    $query = $this->db->query(" SELECT guest_name, guest_gender, guest_nic_pp_dl
                                FROM new_guest 
                                WHERE guest_name LIKE '$guest_name%'
                                LIMIT 1 ");
    if($query->num_rows()>0) {
        return $query->result();
    }
    else {
        return 0;
    }
}

查看:

<div class="control-group">   
<label for="guest_name" class="control-label"><i class="icon-user"></i> Name: </label>
    <div class="controls">
        <div class="input-append">
        <input type="text" id="appendedInputButtons" class="span2" name="guest_name" value="<?php echo set_value('guest_name'); ?>">
        <input class="btn" type="submit" name="searchGuest" value="Search">
    </div>
<?php echo form_error('guest_name'); ?>
</div>

【问题讨论】:

  • 你在哪里返回结果?
  • 我还没有。我试图在视图中呼应,但没有奏效。我需要填充简单的文本框,它们没有显示在上面的代码中。例如,

标签: php codeigniter


【解决方案1】:

做一些改变

控制器:

$guest=$this->banquet_model->talk_to_new_guest_table($guest_name);
 //creating data array from returned result
 $data['guest_name']=$guest->guest_name;
 $data['guest_gender']=$guest->guest_gender;
 $data['guest_nic_pp_dl']=$guest->guest_nic_pp_dl;
 //loading view with data
 $this->load->view('/main/banquet_view',$data);

更重要的是,所有这些数据数组元素都可以作为变量在视图页面上使用,例如

$data['guest_gender'] as $guest_gender

【讨论】:

  • 哦,等等...现在它返回 3 条“尝试获取非对象的属性”消息
  • @saucecord 在哪里?你是这样使用的
  • @saucecord 返回 3 的内容以及您在哪里得到“尝试获取非对象的属性”...
  • 我一提交,它就会返回到 index(); (...我预期的)并给出错误。
  • @saucecord 无法提供此信息。结果可能没有返回任何内容。
【解决方案2】:

Rajeev Ranjan 和 Prasanth 的答案是好的,但是在 return $query-&gt;result(); 线上你可以这样做return $query-&gt;row(); 原因是因为 result() 返回一个需要迭代的对象数组,而 row() 对象返回单个对象,您可以在不使用循环迭代的情况下引用该对象。我希望这会有所帮助

【讨论】:

    【解决方案3】:

    尝试以下内容:

    控制器:

    function get_customer_details() {
        $guest_name = $this->input->post('guest_name');
        $data = $this->banquet_model->talk_to_new_guest_table($guest_name);
        if ($data != 0) {
            $this->load->view('/main/banquet_view', $data);
        }
    }
    

    型号:

    function talk_to_new_guest_table($guest_name) {
        $query = $this->db->query(" SELECT guest_name, guest_gender, guest_nic_pp_dl
                                    FROM new_guest 
                                    WHERE guest_name LIKE '$guest_name%'
                                    LIMIT 1 ");
        if($query->num_rows()>0) {
            return $query->result();
        }
        else {
            return 0;
        }
    }
    

    查看:

    <div class="control-group">   
    <label for="guest_name" class="control-label"><i class="icon-user"></i> Name: </label>
        <div class="controls">
            <div class="input-append">
            <input type="text" id="appendedInputButtons" class="span2" name="guest_name" value="<?php echo $guest_name; ?>">
            <input class="btn" type="submit" name="searchGuest" value="Search">
        </div>
    <?php echo form_error('guest_name'); ?>
    </div>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-03
      • 2013-04-10
      • 1970-01-01
      相关资源
      最近更新 更多