簡體   English   中英

從數據庫獲取數據並將其放在選擇列表中

[英]Get the data from database and put it in an select list

我正在使用JavaScript和HTML進行更新。 我想將這些值放在一個下拉列表中。 但是我無法將所有其他數據循環到下拉列表中。 我想在其中創建一個包含所有值的HTML下拉菜單,以便可以從下拉菜單中選擇其他選項。 我從數據庫獲取以前的值。 如何在選項中獲得其余類別?

調節器

public function productlist($product_id)
{
    $this->load->model('Productmodel');
    $response=array();
    $response = $this->Productmodel->getproductlistbyid($product_id);
    echo json_encode($response);
}

模型

public function getproductlistbyid($product_id)
{
    $returnarray = array();

    $sql = "select id, product_name, image,  b.name as bname, c.name as cname, a.category_id as acategory_id, a.subcat_id as asubcat_id, description, qty, color, orginal_price, offer_price from tbl_product as a inner JOIN category as b on a.category_id = b.category_id inner JOIN category as c on a.category_id = c.fk_parent_id where id = ?";

    $query = $this->db->query($sql, array($product_id));

    if($query->num_rows())
    {
        $rows = $query->result();

        foreach($rows as $temp)
        {
            $returnarray[0] = $temp->id;
            $returnarray[1] = $temp->product_name;
            $returnarray[2] = $temp->image;
            $returnarray[3] = $temp->bname;
            $returnarray[4] = $temp->cname;
            $returnarray[5] = $temp->description;
            $returnarray[6] = $temp->qty;
            $returnarray[7] = $temp->color;
            $returnarray[8] = $temp->orginal_price;
            $returnarray[9] = $temp->offer_price;
            $returnarray[10] = $temp->acategory_id;
            $returnarray[11] = $temp->asubcat_id;
        }

    }

    return $returnarray;

}

查看(腳本)

 <script>
 function editproduct(product_id)
 {
 var myurl="<?php echo base_url();?>index.php?/Product/productlist/"+product_id;

//alert(myurl);

  $.post(myurl).done(function (data)
  {
     //alert(data);

      var obj=jQuery.parseJSON(data);
    //alert(obj);

      //alert(myhtml);
      var myhtml='<form role="form" id="formedit" action="#">'+
                 '<div class="box-body">'+
                 '  <div class="form-group">'+
                 '  <label for="exampleInputName">Product Name</label>'+
                 '  <input type="hidden"  id="upmyid" name="editid" value="'+obj[0]+'">'+
                 '  <input type="text" class="form-control" id="upname" placeholder="Product Name" name="editpname" value="'+obj[1]+'">'+
                 '  </div>'+
                 '</div>'+
       '<div class="box-body">'+
       '<div class="form-group">'+
       '<label for="exampleInputImage">Image</label>'+
       '<input type="file" class="form-control" id="upimage" placeholder="Image" name="editpimage" value="'+obj[2]+'">'+
       '</div>'+
       '</div>'+
       '<div class="box-body">'+
       '<div class="form-group">'+
       '<label for="exampleInputCategory">Category</label>'+
       '<select class="form-control select category" style="width: 100%;" name="option2" id="option2">'+
       '<option value="0">Main Menu </option>'+
       '<option value="'+obj[9]+'" selected>'+obj[3]+'</option>'+
       '</div>'+
       '</div>'+
                 '</form>';

                 swal({ title: "Edit <small>this</small>!",
                        text: myhtml,
                        html: true,
                        type: "",   showCancelButton: true,   confirmButtonColor: "#3c8dbc",
                        confirmButtonText: "Update Now",
                        closeOnConfirm: false },
                        function()
                        { 
                            var id=$('#upmyid').val();
                            var name=encodeURIComponent($('#upname').val());
                            var myurl="index.php/Product/updateProduct/"+id+"/"+name;

                            $.post(myurl).done(function(data)
                            {
                                //alert(data);

                                var obj = jQuery.parseJSON(data);

                                //alert(obj);

                                if(obj[0]==100)
                                {

                                    swal({      title: "Updated Successfully",
                                    text: "Click on ok now!",
                                    type: "success",   showCancelButton: false,   confirmButtonColor: "#3c8dbc",
                                    confirmButtonText: "OK",
                                    closeOnConfirm: false },

                                    function()
                                    { 
                                        location.reload(); 
                                    });
                                }

                                else
                                {
                                    swal("Sorry!",
                                    "Unable to Update now.",
                                    "warning");
                                }

                            });

                        }
                    );
  });
  }
  </script>  

每次在PHP中運行foreach行時,它都會用最新值覆蓋數組的相同部分。 例如,如果從數據庫返回了10行,則循環運行10次。 因此,將$mainarray[0]替換$mainarray[0] $temp->id;的最新值10次$temp->id; ,所有其他字段都相同。 這意味着您只會將最后一個數據庫行中的值獲取到PHP數組中。

像這樣嘗試(未經測試,對於任何小錯誤,我們深表歉意):

模型:

    foreach($rows as $temp)
    {
        $returnarray[] = $temp;
    }

這會將整個$ temp對象放入$mainarray的下一個可用索引中。

其次,您的JavaScript代碼未設置為處理響應中的多個項目,因此即使要返回許多項目,也只會打印一個數據項目。

視圖

1) 刪除此行:

  var obj=jQuery.parseJSON(data);

不需$json_encode()將已經返回JSON對象,而不是字符串,因此您無需解析它。 jQuery已經將data理解為JSON對象。

2)像這樣更新您的HTML生成代碼(所做的更改是在其中渲染<select> )。 它需要遍歷data數組,並為數組中的每個對象創建一個<option>

      var myhtml='<form role="form" id="formedit" action="#">'+
             '<div class="box-body">'+
             '  <div class="form-group">'+
             '  <label for="exampleInputName">Product Name</label>'+
             '  <input type="hidden"  id="upmyid" name="editid" value="'+obj[0]+'">'+
             '  <input type="text" class="form-control" id="upname" placeholder="Product Name" name="editpname" value="'+obj[1]+'">'+
             '  </div>'+
             '</div>'+
   '<div class="box-body">'+
   '<div class="form-group">'+
   '<label for="exampleInputImage">Image</label>'+
   '<input type="file" class="form-control" id="upimage" placeholder="Image" name="editpimage" value="'+obj[2]+'">'+
   '</div>'+
   '</div>'+
   '<div class="box-body">'+
   '<div class="form-group">'+
   '<label for="exampleInputCategory">Category</label>'+
   '<select class="form-control select category" style="width: 100%;" name="option2" id="option2">' +
   '<option value="0">Main Menu </option>';
$.each(data, function(index, obj) {
  myhtml += '<option value="' + obj.acategory_id + '">' + obj.cname + '</option>';
});
 myhtml += '</select>' +
   '</div>'+
   '</div>'+
'</form>';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM