通过codeigniter中的类型输入框显示数据库中的数据

时间:2015-02-25 02:13:00

标签: javascript php mysql codeigniter input

我有一些代码正常工作,我在codeigneter中使用它我的代码  这个我的数据库

====================
= id = type = name =
====================
= 1  = 3   = adam  = 
= 2  = 2   = julia = 
====================

我的数据库,名称是客户 这是我的控制器

{   $data['customer'] = $this->usermodel->get_all_customer();
    $this->template->set('title','Tambah User Baru | MyWebApplication.com');
    $this->template->load('template','indoprisma/pemesanan',$data);
       }

和我的模特

function get_all_customer()
{
$this->db->from('customer');
return $this->db->get();
}

和我的观点

<?php 
$jsArray = "var prdName = new Array();\n";
echo '<select name="id_cus" onchange="changeValue(this.value)">';
echo '<option>-------</option>';
 foreach($customer->result() as $row)
               {
                  $array_customer[$row->id] = $row->id;
    echo "<option value = ".$row->id.">".$row->id."</option>";
    $jsArray .= "prdName['" . $row->id . "'] = {name :'" . addslashes($row->name) . "' ,type :'" . addslashes($row->type) . "'};\n";
}
echo '</select>';
?>
<script type="text/javascript">
<?php echo $jsArray; ?>
function changeValue(id){
document.getElementById('name').value = prdName[id].name;
document.getElementById('type').value = prdName[id].type;

};
</script>
    <input name="name" type="text" id="name" size="20" readonly="readonly" />
      <input name="type" type="text" id="type" size="20" readonly="readonly" /> 

我想将组合框更改为输入框,请帮助我

3 个答案:

答案 0 :(得分:0)

我在这里看到了问题,您正在尝试通过PHP创建JavaScript,然后将其嵌入到脚本中,最重要的是,创建您并不真正需要的对象......这里有很多问题。你永远不应该尝试通过PHP创建JavaScript。这就是我要解决的问题:

  1. 您的模型应返回result()。所以你需要改变它:

    function get_all_customer() {
      $this->db->from('customer');
      $q = $this->db->get();
      return $q->result(); ///change
    }
    
  2. 您的视图应该是更多HTML,并且可能的PHP数量最少。此外,使用PHP的功能,在这种情况下,json_encode()将派上用场。像这样重做:

    <select name="id_cus" onchange="changeValue(this.value)">
      <option>-------</option>
      <?php foreach ($customer as $row) { ?>
        <option value='<?= json_encode($row) ?>'><?= $row->id ?></option>
      <?php } ?>
    </select>
    <input name="name" type="text" id="name" size="20" readonly="readonly" />
    <input name="type" type="text" id="type" size="20" readonly="readonly" />
    
  3. 最后,您的Javascript如下:

    <script>
    function changeValue(value) {
      var obj = JSON.parse(value);
      document.getElementById('name').value = obj.name;
      document.getElementById('type').value = obj.type;
    }
    </script>
    
  4. 请告诉我这是否适合您。

答案 1 :(得分:0)

希望我的方法能帮到你,我和你一样的情况是这样解决的:

  1. 对于控制器,您的选择是正确的。
  2. 对于模型,我觉得应该是这样的

function get_all_customer()
    {
    $hsl = $this->db->query("Select * FROM customer")->result();
    return $hsl
    }

  1. 对于编码视图,我是这样认为的

 <select name="id_cus" onchange="changeValue(this.value)">
    <option value="0">-------</option>
    <?php 
    $jsArray = "var prdName = new Array();\n";
     foreach($customer as $row)
      {
        echo "<option value = ".$row->id.">".$row->id."</option>";
        $jsArray .= "prdName['" . $row->id . "'] = {namee :'" . addslashes($row->name) . "' ,typee :'" . addslashes($row->type) . "'};\n";
    }
    ?>
    </select>
        <input name="name" type="text" id="name" size="20" readonly="readonly" />
         <input name="type" type="text" id="type" size="20" readonly="readonly" /> 
    <script type="text/javascript">
    <?php echo $jsArray; ?>
    function changeValue(id){
    document.getElementById('name').value = prdName[id].namee;
    document.getElementById('type').value = prdName[id].typee;
    };
    </script>

希望我的意见可以帮助您编码 :)

答案 2 :(得分:-1)

Selamat pagi。

顺便问一下,为什么需要将其转换为输入?

该组合框是否正在检索许多数据记录?

如果是,则不得将其更改为输入。

如果您需要,请尝试:

$jsArray = "var prdName = new Array();\n";
$customer->result() as $row;
$array_customer[$row->id] = $row->id;
echo "<input type='text' name='id_cus' onchange='changeValue(this.value)' value = " . $row->id . ">";
$jsArray .= "prdName['" . $row->id . "'] = {name :'" . addslashes($row->name) . "' ,type :'" . addslashes($row->type) . "'};\n";