[英]Select onChange Ajax get list of data from mysql database Laravel 5.4
[英]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.