ایجاد پنل مدیریت سایت با PHP - تکمیل کردن لیست سفارش ها

php-show-orders-lists

با عرض سلام و خسته نباشید خدمت شما دوستان عزیز، ما تا اینجا اقدامات زیادی را جهت فعال کردن گزینه "مشاهده تمامی سفارش ها" با هم انجام دادیم اما کار به پایان نرسیده است و انشاالله در این قسمت این گزینه نیز به پایان می رسد و تست نهایی و عملی را نیز انجام خواهیم داد.

در 2 قسمت گذشته، ما یک سری جدول و یک سری تغییرات در کدهای بعضی از فایل ها انجام دادیم تا اینکه به تغییر کدهای فایل view_order.php رسیدیم و نکته مهمی در مورد لینک "مشاهده" وجود داشت که این نکته مهم را در قسمت قبل به طور مفصل خدمت شما عرض کردم؛ در این قسمت قرار است، با توجه به همان لینک "مشاهده"، کدهای فایل جدید order_customer.php را سازماندهی کنیم.

فایل order_customer.php حاوی چه کدهایی است؟

در قسمت قبل، فایل order_customer.php را ایجاد کردیم، اما در مورد کدهای درون آن صحبت نکردیم، بنابراین امروز این کدها را خدمت شما نشان می دهم، لذا به آدرس C:\wamp\www\ecommerce\admin_area بروید و فایل order_customer.php را با استفاده از Notepad++  باز کنید و کدهای زیر را درون آن قرار دهید.

<table  width="700" align="center">
	<caption ><b>فاکتور فروش</b></caption >
	<tr>
		<td align="center"><b>نام محصول خریداری شده</b></td >
		<td align="center"><b>تصویر محصول خریداری شده</b></td >
		<td align="center"><b>تعداد خریداری شده</b></td >
		<td align="center"><b>قیمت ضربدر تعداد </b></td >
	</tr>
	<tr align="center">
		<?php
			//Obtaining a customer's email from the global variable $_GET['order_customer']
			$customer_email=$_GET['order_customer'];
			
			//Customer search on customer data table based on customer's email
			$select_customer="select * from customers where customer_email='$customer_email'";
			$run_customer=mysqli_query($con,$select_customer);
			$row_customer=mysqli_fetch_array($run_customer);
			
			/* Obtaining a user's ip from a customer's data table and using it to
			search the cart data table and pay table _cart */
			$customer_ip=$row_customer['customer_ip'];
			
			/* Understanding whether a customer
			is paying money using a global variable $_GET['pay'] */
			$pay=$_GET['pay'];
			$id_order_paied=$_GET['id_order'];
			if($pay=='no'){
				$sel_price	=	"select * from cart where ip_add='$customer_ip'";
				}else{
				$sel_price	=	"SELECT * FROM `pay_cart` WHERE  `order_id`='$id_order_paied' ";
				
			}
			
			$run_price	=	@mysqli_query($con,$sel_price);
			
			$total=0;
			
			/* We extract the number purchased from a product and 
			the product id from the cart or pay_cart table. */
			while($p_price 	=	@mysqli_fetch_array($run_price))
			{
				$pro_qty = $p_price['qty'];
				$pro_id	=	$p_price['p_id'];
				
				/* Now, using the product id, we extract the product 
				information from the products data table */				
				$pro_price	=	"select * from products where product_id='$pro_id'";
				$run_pro_price	=	@mysqli_query($con,"SET NAMES SET utf8");
				$run_pro_price	=	@mysqli_query($con,"SET CHARACTER SET utf8");
				$run_pro_price	=	@mysqli_query($con,$pro_price);
				
				/* Now we put the information in the table rows */
				while($pp_price	=	@mysqli_fetch_array($run_pro_price))
				{
					$product_title	=	$pp_price['product_title'];
					$product_image	=	$pp_price['product_image'];
					$single_price	=	$pp_price['product_price'];
					
				?>
				<tr>				
					
					<td align="center">
						<?php echo $product_title ?>
					</td>
					
					<td align="center">
						<img src="<?php echo $product_image ?>" width="60" height="45" >
					</td>
					
					<td align="center">
						<?php echo $pro_qty; ?>  
					</td>
					
					<td align="center">
						<?php 
							$total=($single_price*$pro_qty);
							echo $total;
						?>  
					</td>
					<?php			
					}
				?>
			</tr>
			<?php
			}
		?>
		<tr>
			<td></td><td></td>
			<td align="center"><b style="font-size:30px;">مبلغ کل</b></td>
			<td align="center"><b><?php echo $_GET['Total_Amount']; ?></b></td >
		</tr>
		
		</table>											 				

توضیح خط به خط کدهای فایل order_customer.php

با دقت در کدهای بالا، متوجه می شویم که، ما قرار است لیستی از محصولات را با توجه به ستونهایی که در جدول تصویر زیر نشان داده دادم، مرتب کنیم.

لیستی که باید وقتی بروی مشاهده کلیک کردیم به مدیر سایت نمایش داده شود

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

حالا برویم سراغ این موضوع که چگونه باید ردیف های این جدول را ایجاد کنیم؟ برای اینکار، اگر به کدهای بالا دقت کرده باشید، اساس کار را بر استفاده از متغییر سراسری $_GET قرار دادیم، البته فراموش نکنید که ما توجه خاصی به لینک "مشاهده" باید داشته باشیم، چرا که قرار است پارامترهای مورد نظرمان را از این لینک و با استفاده متغییر سراسری $_GET، استخراج کنیم. به تصویر زیر که همان لینک "مشاهده" را نشان میدهد، یکبار دیگر دقت کنید.

توضیح لینک مورد نظر

بنابراین در کدهای خودمان، همان ابتدای با استفاده از کد زیر

//Obtaining a customer's email from the global variable $_GET['order_customer']
			$customer_email=$_GET['order_customer'];

ایمیل مشتری را به دست آوردیم.  در ادامه با استفاده از همین ایمیل، کد زیر را نوشتیم.

//Customer search on customer data table based on customer's email
			$select_customer="select * from customers where customer_email='$customer_email'";
			$run_customer=mysqli_query($con,$select_customer);
			$row_customer=mysqli_fetch_array($run_customer);

کدهای بالا این را نشان می دهند که، در جدول داده ی customers، کلیه ی اطلاعات مشتری را در اختیار داریم؛ اکنون از این اطلاعات، ip مشتری را توسط کدهای زیر به دست آوردیم؛

/* Obtaining a user's ip from a customer's data table and using it to
			search the cart data table and pay table _cart */
			$customer_ip=$row_customer['customer_ip'];

یک سوال اساسی را مطرح کرده ایم، آیا مشتری مورد نظر، پول محصولاتی را که خریداری کرده است؛ پرداخت کرده یا خیر؟ نگران نباشید جواب این سوال را قبلا ما در لینک "مشاهده"، جاسازی کرده بودیم، بنابراین اکنون به راحتی با استفاده از متغییر سراسری $_GET['pay'] به این موضوع پی می بریم. به کدهای زیر دقت کنید.

/* Understanding whether a customer
			is paying money using a global variable $_GET['pay'] */
			$pay=$_GET['pay'];
			$id_order_paied=$_GET['id_order'];
			if($pay=='no'){
				$sel_price	=	"select * from cart where ip_add='$customer_ip'";
				}else{
				$sel_price	=	"SELECT * FROM `pay_cart` WHERE  `order_id`='$id_order_paied' ";
				
			}
			
			$run_price	=	@mysqli_query($con,$sel_price);

با توجه به پاسخ سوال قبل، دو راه برای ما وجود دارد؛ در اینجا کاملا مشخص است، اگر پول محصولات پرداخته شده باشد، باید به جدول داده ایی pay_cart مراجعه کنیم و اگر پول محصولات پرداخت نشده باشد، باید با جدول cart کار کنیم.

البته در هر کدام از جدول داده ها، query خاصی باید پرسیده شود. اگر مشتری پول محصولات خودش را نپرداخته است، باید از طریق ip او در جدول داده ایی cart، آن را شناسایی کنیم؛ اما اگر پول محصولات خریداری شده توسط مشتری پرداخت شده باشد، باید مشتری را از طریق order_id (شماره فاکتور) او در جدول داده ایی pay_cart جستجو کنیم.

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

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

حالا که id محصول را داریم، با استفاده از آن، کدهای زیر را نوشتم.

				/* Now, using the product id, we extract the product 
				information from the products data table */				
				$pro_price	=	"select * from products where product_id='$pro_id'";
				$run_pro_price	=	@mysqli_query($con,"SET NAMES SET utf8");
				$run_pro_price	=	@mysqli_query($con,"SET CHARACTER SET utf8");
				$run_pro_price	=	@mysqli_query($con,$pro_price);
				
				/* Now we put the information in the table rows */
				while($pp_price	=	@mysqli_fetch_array($run_pro_price))
				{
					$product_title	=	$pp_price['product_title'];
					$product_image	=	$pp_price['product_image'];
					$single_price	=	$pp_price['product_price'];

با استفاده از id محصول که در مرحله قبل آن را بدست آورده بودیم، از جدول داده ایی products، به راحتی، نام محصول، تصویر محصول و قیمت محصول را به دست آوردم.

و مجموع قیمت را نیز در کدهای زیر محاسبه کرده ایم.

$total=($single_price*$pro_qty);
							echo $total;

تنها چیزی که در ادامه مهم است که خدمت شما عرض کنم این است که، بعد از ایجاد تمامی ردیف های جدول، یک ردیف آخر هم تعریف کرده ام و قیمت کل را در آن قرار دادم، به کدهای زیر دقت کنید.

		<tr>
			<td></td><td></td>
			<td align="center"><b style="font-size:30px;">مبلغ کل</b></td>
			<td align="center"><b><?php echo $_GET['Total_Amount']; ?></b></td >
		</tr>

دقت کنید برای به دست آوردن قیمت کل، مجددا به لینک "مشاهده" نیاز داریم و از این لینک با استفاده از متغییر سراسری $_GET['Total_Amount'] قیمت کل را به دست می آوریم. درک کدهای بالا بسیار آسان است؛ اما به هر حال ممکن است برای شما سوال یا مشکلی پیش بیاید که، می توانید با مطرح کردن آن در قسمت نظر دهی، پاسخ مناسب را از سمت من دریافت کنید.

خب دوستان عزیزم، توضیحات کدهای نوشته شده تمام شد و وقت آن رسیده است که ببینیم در عمل، آیا کدهای ما کار خواهند کرد یا خیر.

تست عملی کدهای نوشته شده

Wamp را روشن کنید و آدرس http://localhost/ecommerce/admin_area/ را در مرورگر خود، وارد کنید تا پنل مدیریت سایت را ببینید؛ تصویر زیر را مشاهده کنید.

پنل مدیریت سایت

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

مشاهده لیستی از سفارش ها

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

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

کلیک کردن بر روی گزینه مشاهده

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

مشاهده محصولات خریداری شده

خب دوستان عزیزم به پایان این قسمت آموزشی رسیدیم، انشاالله که لذت کافی را از برنامه نویسی و ایجاد فروشگاه اینترنتی با php ، تا این لحظه برده باشید. در قسمت آینده من به سراغ گزینه ی "مشاهده پرداخت ها" از سایدبار سمت راست پنل مدیریت، خواهم رفت و به شما خواهم گفت که چگونه آن را فعال خواهیم کرد و چه نقش و وظیفه ایی را برای آن تعیین می کنیم. قسمت آینده را از دست ندهید، در انتها نیز برای شما عزیزان فایل های نهایی این قسمت را قرار داده ام.

فایل های نهایی

فایل order_customer.php که در آدرس C:\wamp\www\ecommerce\admin_area قرار دارد.

<table  width="700" align="center">
	<caption ><b>فاکتور فروش</b></caption >
	<tr>
		<td align="center"><b>نام محصول خریداری شده</b></td >
		<td align="center"><b>تصویر محصول خریداری شده</b></td >
		<td align="center"><b>تعداد خریداری شده</b></td >
		<td align="center"><b>قیمت ضربدر تعداد </b></td >
	</tr>
	<tr align="center">
		<?php
			//Obtaining a customer's email from the global variable $_GET['order_customer']
			$customer_email=$_GET['order_customer'];
			
			//Customer search on customer data table based on customer's email
			$select_customer="select * from `order` where order_email_customer='$customer_email' order by order_id desc limit 1";
			$run_customer=mysqli_query($con,$select_customer);
			while ($row_customer=mysqli_fetch_array($run_customer))
			{
				/* Obtaining a user's ip from a customer's data table and using it to
				search the cart data table and pay table _cart */
				$customer_ip=$row_customer['ip_user'];
			}
			
			/* Understanding whether a customer
			is paying money using a global variable $_GET['pay'] */
			$pay=$_GET['pay'];
			$id_order_paied=$_GET['id_order'];
			if($pay=='no'){
				$sel_price	=	"select * from cart where ip_add='$customer_ip'";
				}else{
				$sel_price	=	"SELECT * FROM `pay_cart` WHERE  `order_id`='$id_order_paied' ";
				
			}
			
			$run_price	=	@mysqli_query($con,$sel_price);
			
			$total=0;
			
			/* We extract the number purchased from a product and 
			the product id from the cart or pay_cart table. */
			while($p_price 	=	@mysqli_fetch_array($run_price))
			{
				$pro_qty = $p_price['qty'];
				$pro_id	=	$p_price['p_id'];
				
				/* Now, using the product id, we extract the product 
				information from the products data table */				
				$pro_price	=	"select * from products where product_id='$pro_id'";
				$run_pro_price	=	@mysqli_query($con,"SET NAMES SET utf8");
				$run_pro_price	=	@mysqli_query($con,"SET CHARACTER SET utf8");
				$run_pro_price	=	@mysqli_query($con,$pro_price);
				
				/* Now we put the information in the table rows */
				while($pp_price	=	@mysqli_fetch_array($run_pro_price))
				{
					$product_title	=	$pp_price['product_title'];
					$product_image	=	$pp_price['product_image'];
					$single_price	=	$pp_price['product_price'];
					
				?>
				<tr>				
					
					<td align="center">
						<?php echo $product_title ?>
					</td>
					
					<td align="center">
						<img src="<?php echo $product_image ?>" width="60" height="45" >
					</td>
					
					<td align="center">
						<?php echo $pro_qty; ?>  
					</td>
					
					<td align="center">
						<?php 
							$total=($single_price*$pro_qty);
							echo $total;
						?>  
					</td>
					<?php			
					}
				?>
			</tr>
			<?php
			}
			
			$pay=$_GET['pay'];
			if($pay=='yes'){
			?>
			<tr>
				<td></td><td></td>
				<td align="center"><b style="font-size:30px;">مبلغ کل</b></td>
				<td align="center"><b><?php echo $_GET['Total_Amount']; ?></b></td >
			</tr>
		<?php }?>	
	</table>
تمام فصل‌های سری ترتیبی که روکسو برای مطالعه‌ی دروس سری فروشگاه اینترنتی با PHP توصیه می‌کند:
نویسنده شوید
دیدگاه‌های شما

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.