#javascript #php #mysql #ajax #e-commerce
#javascript #php #mysql #ajax #электронная коммерция
Вопрос:
Я столкнулся с проблемой при добавлении данных из панели администратора в базу данных.Я новичок в php, и я сомневаюсь, что в моем php-коде есть какие-то проблемы. Особенно при добавлении изображения в базу данных.Я много пробовал, но не могу найти решение.
Вот мой php-код:
public function addProduct($product_name,
$brand_id,
$category_id,
$product_desc,
$product_qty,
$product_price,
$file){
$fileName = $file['name'];
$fileNameAr= explode(".", $fileName);
$extension = end($fileNameAr);
$ext = strtolower($extension);
if ($ext == "jpg" || $ext == "jpeg" || $ext == "png") {
//print_r($file['size']);
if ($file['size'] > (1024 * 2)) {
$uniqueImageName = time()."_".$file['name'];
if (move_uploaded_file($file['tmp_name'], $_SERVER['DOCUMENT_ROOT']."/big_store/web/images/".$uniqueImageName)) {
$uname= $_SESSION['user'];
$q = $this->con->query("INSERT INTO `products`(`product_cat`, `product_brand`, `product_title`, `product_qty`, `product_price`, `product_desc`, `product_image`, `vendor_name`) VALUES ('$category_id', '$brand_id', '$product_name', '$product_qty', '$product_price', '$product_desc', '$uniqueImageName', '$uname')");
if ($q) {
return ['status'=> 202, 'message'=> 'Product Added Successfully..!'];
}else{
return ['status'=> 303, 'message'=> 'Failed to run query'];
}
}else{
return ['status'=> 303, 'message'=> 'Failed to upload image'];
}
}else{
return ['status'=> 303, 'message'=> 'Large Image ,Max Size allowed 2MB'];
}
}else{
return ['status'=> 303, 'message'=> 'Invalid Image Format [Valid Formats : jpg, jpeg, png]'];
}
}
Вот мой javascript:
getProducts();
$(".add-product").on("click", function(){
$.ajax({
url : './classes/Products.php',
method : 'POST',
data : new FormData($("#add-product-form")[0]),
contentType : false,
cache : false,
processData : false,
success : function(response){
console.log(response);
var resp = $.parseJSON(JSON.stringify(response));
if (resp.status == 202) {
$("#add-product-form").trigger("reset");
$("#add_product_modal").modal('hide');
getProducts();
}else if(resp.status == 303){
alert(resp.message);
}
}
});
});
Вот моя html-форма, которую я создал для добавления в базу данных.
<div class="modal fade" id="add_product_modal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Add Product</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">amp;times;</span>
</button>
</div>
<div class="modal-body">
<form id="add-product-form" enctype="multipart/form-data">
<div class="row">
<div class="col-12">
<div class="form-group">
<label>Product Name</label>
<input type="text" name="product_name" class="form-control" placeholder="Enter Product Name">
</div>
</div>
<div class="col-12">
<div class="form-group">
<label>Brand Name</label>
<select class="form-control brand_list" name="brand_id">
<option value="">Select Brand</option>
</select>
</div>
</div>
<div class="col-12">
<div class="form-group">
<label>Category Name</label>
<select class="form-control category_list" name="category_id">
<option value="">Select Category</option>
</select>
</div>
</div>
<div class="col-12">
<div class="form-group">
<label>Product Description</label>
<textarea class="form-control" name="product_desc" placeholder="Enter product desc"></textarea>
</div>
</div>
<div class="col-12">
<div class="form-group">
<label>Product Qty</label>
<input type="number" name="product_qty" class="form-control" placeholder="Enter Product Quantity">
</div>
</div>
<div class="col-12">
<div class="form-group">
<label>Product Price (Rs)</label>
<input type="number" name="product_price" class="form-control" placeholder="Enter Product Price">
</div>
</div>
<div class="col-12">
<div class="form-group">
<label>Product Image <small>(format: jpg, jpeg, png)</small></label>
<input type="file" name="product_image" class="form-control">
</div>
</div>
<input type="hidden" name="add_product" value="1">
<div class="col-12">
<button type="button" class="btn btn-primary add-product">Add Product</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
Комментарии:
1. Ваш вопрос, вероятно, слишком расплывчатый, чтобы на него можно было ответить. Вы «столкнулись с проблемой», потому что у вас «какая-то проблема», «особенно» при добавлении изображений. Хотя в вашем вопросе много кода, нигде нет вызова функции PHP
addProduct()
. Вы проверили обработку загрузки файлов ?2. См. О внедрении sql и важности подготовленных и связанных запросов: phpdelusions.net/pdo