رفتن به نوشته‌ها

طراحی فرم افزودن محصولات به فروشگاه اینترنتی با PHP – قسمت سوم

در قسمت قبل برای شما توضیح دادم که چگونه می توان تصویر یک محصول را از فرم گرفت و در یک فولدر خاص قرار داد. اما این بحث را تمکیل می کنم. قطعه کد زیر را مشاهده بکنید.

//getting the image form the image fields
		$product_image_name	=$_FILES['product_image']['name'];
		$product_image_tmp	=$_FILES['product_image']['tmp_name'];
		$address_images='product_images/'.$product_image_name;
		move_uploaded_file($product_image_tmp,$address_images);

به متغییر $address_images دقت کنید، ما در پایگاه داده قرار نیست که تصاویر را ذخیره کنیم، بلکه باید آدرس تصاویر را ذخیره کنیم.

یعنی ما برای هر تصویری که به عنوان داده دریافت می کنیم یک متغییر $address_images منحصر به فرد ایجاد و آدرس آن را ذخیره می کنیم. سپس هرگاه به تصویر نیاز داشتیم فقط کافی است این آدرس را استخراج کنیم.

خب من به طور خلاصه گرفتن داده ها و ذخیره کردن آنها در متغییر ها را آموزش دادم. اما چگونه باید مقادیر این متغییر ها را به عنوان فیلد به جدول products اضافه کرد. اینجا است که ما به دستورات SQL متوصل می شویم.

دستورات کار با داده در MySQL

دقت کنید که SQL دارای چند عمل بسیار مهم می باشد.

SELECT  برای واکشی اطلاعات از یک یا چند جدول به کار می رود.
INSERT INTO  برای درج اطلاعات در جدول به کار می رود
REPLACE  برای جایگزین کردن داده ها به کار می رود. اگر داده ای از قبل وجود داشته باشد آن را حذف می کند و مقدار جدید را جایگزین می کند.
UPDATE  برای به روز رسانی داده های جدول به کار می رود.
DELETE برای حذف داده از جدول به کار می رود

دستور SELECT

اگر با من از قسمت اول همراه بوده باشید، من در چند جا از دستور SELECT استفاده کردم. همانطور که در جدول بالا مشاهده می کنید این دستور برای واکشی اطلاعات از پایگاه داده است.

اما ما الان قصد داریم که اطلاعاتی را در پایگاه داده بریزیم. بنابراین باید از INSERT INTO بهره بگیریم. طبق تعریف استاندارد که من از سایت w3schools برای شما آورده ام به صورت زیر می توان از دستور INSERT INTO استفاده کرد.

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

table_name همان نام جدولی است که می خواهیم در آن اطلاعات را درج کنیم و column نام فیلد های جدول است و value مقداری است که می خواهیم در فیلد قرار دهیم.

دستور INSERT INTO

خب با توجه به توضیحات بالا INSERT INTO ما می شود.

INSERT INTO products (product_title ,product_cat , product_brand , product_price , product_desc , product_image , product_keywords)
			VALUES (N'$product_title' , $product_cat , $product_brand , $product_price , N'$product_desc' , N'$address_images' , N'$product_keywords' )
شاید از خودتان بپرسید که این N چیست که قبل از بعضی از فیلد های ورودی قرار دادم؟
پاسخ: موقعی که می خواستم اطلاعاتی رو به فارسی به MYSQL اضافه کنم، به جای کاراکترهای فارسی علامت ؟ نمایش داده می شد. برای همین با یک ترفند ساده این مشکل رو برطرف کردم. این N مشکل رو به راحتی برای من حل کرد. برای همه فیلدهایی که قرار هست مقدار فارسی بگیرند، این N رو بذارید. مثلا برای من فیلد های  N’$product_title’ و N’$product_desc’ و N’$product_keywordS’  باید اصلاح می شدند. در ضمن فیلدهایی که مقدار رشته ایی دریافت می کنند باید در علامت ‘ ‘ قرار گیرند.

نکته آخری که باید به اون بپردازیم این هست که اگر داده ی ما وارد دیتابیس شود چگونه باید مطمئن شویم که این امر اتفاق افتاده است. من برای اینکار سعی می کنم وقتی اطلاعات ما وارد دیتابیس شد، یک پیام موفقیت به ما نمایش داده شود. کد زیر را نگاه کنید.

//display message to user		
		if($insert_pro)
		{
			echo"<script>alert('تبریک...داده های مربوط به محصول شما به درستی وارد شد.')</script>";
			echo"<script>window.open('insert_product.php','_self')</script>";
		}

من برای نمایش این پیام از javascript استفاده کردم. وقتی دستور sql ما مبنی بر وارد شدن داده ها در دیتابیس اجرا شد یک پیام تحت عنوان “تبریک…داده های مربوط به محصول شما به درستی وارد شد” به ما نمایش داده می شود.

به انتهای این قسمت از آموزش خود رسیده ایم. من در قسمت زیر فایل نهایی inset_product.php را برای شما عزیزان قرار می دهم. سعی کنید آن را باز نویسی کنید تا اشکالات خود را متوجه شوید و بعد اگر هر کجای آن را متوجه نشدید در قسمت نظردهی عنوان کنید تا شما را راهنمایی کنم.

<?php
include('db.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="fa"  dir="rtl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="style/style.css" rel="stylesheet" type="text/css" />
<script src="tinymce/tinymce.min.js"></script>
<script>
		tinymce.init({ 
		selector:'textarea' 
		});
</script>
<head>
<body>
<form  action=""  method="post" enctype="multipart/form-data">

	<table  width="650" align="center">
	
		<caption ><b>اطلاعات مربوط به محصول را در این جدول اضافه کنید</b></caption >
					  
		<tr>
			<th ><b>ویژگی های محصول</b></th >
			<th ><b>مقدار ورودی برای هر کدام از ویژگی ها</b></th >
		</tr>


		<tr>
			<td><b>نام محصول</b></td >
			<td><input type="text" name="product_title" size="70" required></td >
		</tr>		

		<tr>
			<td><b>دسته بندی  محصول</b></td>
			<td>
			<select name="product_cat" required>
				<option>دسته ی مورد نظر خود را انتخاب کنید</option>
				<?php
					$get_cat="select * from categories";
					$run_cat=@mysqli_query($con,"SET NAME utf8");
					$run_cat=@mysqli_query($con,"SET CHARACTER SET utf8");
					$run_cat=mysqli_query($con,$get_cat);
					while($row_cat=mysqli_fetch_array($run_cat))
					{
						$cat_id=$row_cat['cat_id'];
						$cat_title=$row_cat['cat_title'];
						echo"<option value='$cat_id'>$cat_title</option>";
					}
				?>
			</select>
									
			</td >
		</tr>
		
		<tr>
			<td><b>برند محصول</b></td >
			<td>
			<select name="product_brand" required>
				<option>برند مورد نظر خود را انتخاب کنید</option>
				<?php
					$get_brand="select * from brands";
					$run_brand = @mysqli_query($con,"SET NAMES utf8");
					$run_brand = @mysqli_query($con,"SET CHARACTER SET utf8");
					$run_brand=mysqli_query($con,$get_brand);
					while($row_brand=mysqli_fetch_array($run_brand))
					{
						$brand_id=$row_brand['brand_id'];
						$brand_title=$row_brand['brand_title'];
						echo"<option value='$brand_id'>$brand_title</option>";
					}
				?>
			</select>
			</td>
		</tr>

		
		<tr>
			<td><b>قیمت محصول</b></td >
			<td><input type="text" name="product_price" required></td>
		</tr>

		
		<tr>
			<td><b>توصیف محصول </b></td>
			<td><textarea name="product_desc" ></textarea></td>
		</tr>

		
		<tr>
			<td><b>عکس محصول</b></td >
			<td><input type="file" name="product_image" required></td >
		</tr>
		
		<tr>
			<td><b>کلمات کلیدی</b> </td >
			<td><input type="text" name="product_keywords" size="70" required></td >
		</tr>
		
		
		<tr>
			<td align="center"><input type="submit" name="submit" value="بارگذاری"> </td>
			<td align="center"><input type="reset" name="reset" value="ریست کردن"></td>
		</tr>
	</table>
	 
</form>
<?php
// define variables and set to empty values

if(isset($_POST['submit']))
	{
    		
			$product_title = $_POST["product_title"];
			$product_cat = $_POST["product_cat"];
			$product_brand = $_POST["product_brand"];
			$product_price = $_POST["product_price"];
			$product_desc = $_POST["product_desc"];
			$product_keywords = $_POST["product_keywords"];
			
					
		//getting the image form the image fields
		$product_image_name	=$_FILES['product_image']['name'];
		$product_image_tmp	=$_FILES['product_image']['tmp_name'];
		$address_images='product_images/'.$product_image_name;
		move_uploaded_file($product_image_tmp,$address_images);
			
			$insert_product = "INSERT INTO products (product_title ,product_cat , product_brand , product_price , product_desc , product_image , product_keywords)
			VALUES (N'$product_title' , $product_cat , $product_brand , $product_price , N'$product_desc' , N'$address_images' , N'$product_keywords' )";
            $insert_pro=mysqli_query($con,$insert_product);

		//display message to user		
		if($insert_pro)
		{
			echo"<script>alert('تبریک...داده های مربوط به محصول شما به درستی وارد شد.')</script>";
			echo"<script>window.open('insert_product.php','_self')</script>";
		}
			
    
	}
?>

</body>
</html>

نمونه ایی از روند اضافه کردن محصول به دیتابیس را به شما در تصاویر زیر نشان داده ام. ابتدا wamp را روشن کنید و به آدرس http://localhost/ecommerce/admin_area/insert_product.php وارد شوید و مشخصات محصول خودتان را وارد کنید. به تصویر زیر دقت کنید

جدول اطلاعات محصولات در فروشگاه اینترنتی به زبان PHP

سپس اگر دکمه “بارگذاری” را فشار بدهید با تصویر زیر مواجه می شوید.

پیام بارگذاری درست محصول در فروشگاه اینترنتی PHP

به شما تبریک می گویم اطلاعاتتان را به درستی وارد کردید. حالا اگر به پوشه product_images در پوشه admin_area مراجعه کنید متوجه می شوید که عکس شما نیز به درستی آپلود شده است. از طرف دیگر اگر به http://localhost/phpmyadmin مراجه کنید و جدول داده ایی products را باز کنید می توانید تمامی اطلاعات خود را مشاهده نمایید.

خب عزیزان خسته نباشید.انشاالله در قسمت آینده آموزش نحوی نمایش محصولات موجود در دیتابیس را در صفحه اول فروشگاه را خدمت شما مطرح خواهم کرد. لطفا در زمینه دستورات sql دانش خودتان را با کد زدن بیشتر، بالا ببرید. ممنونم

منتشر شده در PHP (پی اچ پی)