با سلام دوباره، به شما عزیزان و دوستداران دنیای php. در این آموزش، همانند قسمت های قبلی، پنل مدیریت سایت را تکمیل خواهیم کرد. در این قسمت قصد داریم برای گزینه ی "مشاهده پرداخت ها" که یکی از گزینه های موجود درسایدبار سمت راست پنل مدیریت سایت می باشد، کدنویسی کنیم و آن را از حالت استاتیک به حالت داینامیک درآوریم.
وقتی مدیر بر روی این گزینه کلیک می کند، باید لیستی از فاکتورهای فروش ظاهر شود و علاوه بر این، باید لیست اطلاعات مشتری و فاکتور خریدش به صورت مرتب قرار گیرد.
وقتی شما بر روی گزینه ی "مشاهده پرداخت ها" کلیک می کنید، در واقع لینک زیر، فعال می شود (به فایل Right_Sidebar.php در آدرس C:\wamp\www\ecommerce\admin_area\include مراجعه نمایید، تا لینک زیر را در میان کدهای این فایل پیدا کنید).
<a href="index.php?view_payments"><h4>مشاهده پرداخت ها</h4></a>
وقتی بر روی گزینه ی "مشاهده پرداخت ها" کلیک می شود، به صورت اتوماتیک ، پارامتر view_payments به لینک تزریق می شود و ما هم در ادامه از همین پارامتر، و با استفاده از متغییر سراسری $_GET['view_payments']، مسیر اجرای برنامه را به سمت فایل view_payments.php تغییر داده ایم.
حالا باید بار دیگر به آدرس C:\wamp\www\ecommerce\admin_area برویم و فایل index.php را با استفاده از Notepad++ باز کرده و کدهای زیر را در آن بیابیم.
if(isset($_GET['order_customer'])) { include('order_customer.php'); }
آنها را حذف کنیم و کدهای زیر را به جای کدهای قبلی قرار دهیم.
if(isset($_GET['order_customer'])) { include('order_customer.php'); } if(isset($_GET['view_payments'])) { include('view_payments.php'); }
حالا چون فایل view_payments.php را نداریم، بنابراین مانند تصویر زیر آن را در آدرس C:\wamp\www\ecommerce\admin_area ایجاد می کنیم.
این فایل را با استفاده از 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> <?php $select_order="SELECT * FROM `order` where order_is_verified='true' "; $run_order=mysqli_query($con,$select_order); while($row_order = mysqli_fetch_array($run_order)) { $id_order=$row_order['order_id']; $order_total_price=$row_order['order_total_price']; $order_email_customer=$row_order['order_email_customer']; //order search on pay_cart data table based on $id_order $select_customer="select * from `pay_cart` where order_id=$id_order order by id_cart desc limit 1"; $run_customer=mysqli_query($con,$select_customer); while ($row_customer=mysqli_fetch_array($run_customer)) { /* Obtaining time pay order from a pay_cart data table and using it */ $time_pay_order=$row_customer['order_time']; } $select_user = "select * from customers where `customer_email`='$order_email_customer'"; $run_custom = mysqli_query($con,"SET NAMES utf8"); $run_custom = mysqli_query($con,"SET CHARACTER SET utf8"); $run_custom = mysqli_query($con,$select_user); while($row_custom = mysqli_fetch_array($run_custom)) { $customer_name=$row_custom["customer_name"]; $customer_lastname=$row_custom["customer_lastname"]; $customer_province=$row_custom["customer_province"]; $customer_city=$row_custom["customer_city"]; $customer_address=$row_custom["customer_address"]; $customer_phone=$row_custom["customer_phone"]; ?> <td align="center"><?php echo $customer_name." ".$customer_lastname; ?></td > <td><?php echo "<b style='color:#811044;font-size:21px;line-height:1.5;'>آدرس : </b> $customer_province - $customer_city - $customer_address <br/><br/><b style='color:#811044;font-size:21px;line-height:1.5;'>شماره تلفن : </b>$customer_phone <br/><br/> <b style='color:#811044;font-size:21px;line-height:1.5;'>آدرس ایمیل:</b>$order_email_customer"; ?></td > <td><?php echo "<b style='color:#811044;font-size:21px;line-height:1.5;'>شماره فاکتور :</b> $id_order <br/> <b style='color:#811044;font-size:21px;line-height:1.5;'>زمان پرداخت :</b> $time_pay_order"; ?></td > <td align="center"><p><?php echo $order_total_price; ?></p></td > </tr> <?php } } ?> </table>
دقت نمایید که این فایل در واقع تلفیقی از 3 جدول داده ایی است که باید با استفاده از آنها داده های مورد نیاز ردیف های این لیست (منظور من لیست مرتبی از اطلاعات هر فاکتور فروش است که به واسطه کدهای بالا ایجاد خواهد شد) را به دست آوریم. به تصویر زیر نگاه کنید، تا درک راحت تری از کدهای بالا داشته باشید.
در تصویر فوق جدول داده ایی order، نقطه آغازی برای به دست آوردن اطلاعات مورد نیاز ما می باشد، بنابراین با استفاده از کدهای زیر، مقدار فیلد order_id (این فیلد شماره فاکتور را در خودش نگهداری می کند) و مقدار فیلد order_email_customer (این فیلد ایمیل مشتری را در خودش نگهداری می کند) را به دست می آوریم.
$select_order="SELECT * FROM `order` where order_is_verified='true' "; $run_order=mysqli_query($con,$select_order); while($row_order = mysqli_fetch_array($run_order)) { $id_order=$row_order['order_id']; $order_total_price=$row_order['order_total_price']; $order_email_customer=$row_order['order_email_customer'];
البته نکته ی اساسی که باید در کدهای بالا به آن اشاره کنم این است که قرار است فقط فاکتور هایی را در لیست این فایل قرار دهیم که پرداخت شده باشند؛ که من این را در دستور SQL زیر، مدنظر قرار دادم.
SELECT * FROM `order` where order_is_verified='true'
در دستور بالا زمانی مقدار فیلد order_is_verified برابر true می شود که مشتری پول محصولاتش را پرداخت کرده باشد.
نکته ی دیگر این است که، علاوه بر مقدار فیلدهای order_id و order_email_customer، مقدار فیلد order_total_price (این فیلد مبلغ فاکتور فروش را در خودش نگهداری می کند.) را نیز به دست آورده ام و در ادامه، از آن در لیست فاکتورها استفاده خواهم کرد.
در ادامه با استفاده از متغییر $id_order (که در واقع شماره فاکتور را در آن ذخیره کرده ایم) به سراغ جدول داده ایی pay_cart می رویم و یکی دیگر از اطلاعات مهم فاکتور، یعنی زمان پرداخت فاکتور را به دست می آوریم.
یک سوال: شاید از خودتان بپرسید که در جدول داده ایی order، زمان سفارش موجود بود (و از همان استفاده می کردیم) و دیگر چه نیازی به زمان پرداخت می باشد؟
پاسخ: دقت کنید که زمان سفارش با زمان پرداخت فرق اساسی دارد. زمان سفارش مانند این است که شما به درب مغازه رفته اید و جنس هایی را انتخاب کرده اید، ولی، پول این جنس ها را نپرداخته اید، مسلما فروشنده به شما اجازه نمی دهد که جنس ها را از مغازه ببرید، اما زمانی که پول این جنس ها را بپردازید (همانند زمان پرداخت در جدول pay_cart) فروشنده جنس ها را به شما خواهد داد.
با استفاده از مثال بالا، این موضوع کاملا مشخص می شود که، مدیر یک سایت باید زمانی محصولات را برای مشتری سایت ارسال کند که پول را پرداخت کرده است نه اینکه فقط سفارش داده است. به کدهای زیر توجه نمایید.
//order search on pay_cart data table based on $id_order $select_customer="select * from `pay_cart` where order_id=$id_order order by id_cart desc limit 1"; $run_customer=mysqli_query($con,$select_customer); while ($row_customer=mysqli_fetch_array($run_customer)) { /* Obtaining time pay order from a pay_cart data table and using it */ $time_pay_order=$row_customer['order_time']; }
نکته ای که باید در کدهای بالا به آن اشاره کنم این است که، دستور SQL در زیر می گوییم: "رکورد هایی از جدول داده ایی pay_cart را انتخاب کن که شماره فاکتورشان (order_id) با مقدار متغییر $id_order یکسان باشد، سپس آنها را بر اساس id_cart به صورت نزولی مرتب کن و فقط اولین رکورد را در نظر بگیر".
select * from `pay_cart` where order_id=$id_order order by id_cart desc limit 1
این کار باعث می شود که فقط یک زمان به دست آید نه چند زمان یکسان.
حالا که زمان پرداخت را نیز به دست آوردیم به سراغ ادامه کدها می رویم. در ادامه کدها به کدهای زیر
$select_user = "select * from customers where `customer_email`='$order_email_customer'"; $run_custom = mysqli_query($con,"SET NAMES utf8"); $run_custom = mysqli_query($con,"SET CHARACTER SET utf8"); $run_custom = mysqli_query($con,$select_user); while($row_custom = mysqli_fetch_array($run_custom)) { $customer_name=$row_custom["customer_name"]; $customer_lastname=$row_custom["customer_lastname"]; $customer_province=$row_custom["customer_province"]; $customer_city=$row_custom["customer_city"]; $customer_address=$row_custom["customer_address"]; $customer_phone=$row_custom["customer_phone"];
می رسیم. همانگونه که در این کدها مشاهده می نمایید با استفاده از متغییر $order_email_customer در جدول داده ایی customers می گردیم و رکوردهایی که مقدار فیلد customer_email آنها برابر با متغییر $order_email_customer هستند را بدست می آوریم و در یک حلقه while تمامی اطلاعاتی که از مشتری لازم است در لیست فاکتور ها قرار گیر را بیرون کشیده ایم.
در ادامه و در انتها با استفاده از کدهای زیر
<td align="center"><?php echo $customer_name." ".$customer_lastname; ?></td > <td><?php echo "<b style='color:#811044;font-size:21px;line-height:1.5;'>آدرس : </b> $customer_province - $customer_city - $customer_address <br/><br/><b style='color:#811044;font-size:21px;line-height:1.5;'>شماره تلفن : </b>$customer_phone <br/><br/> <b style='color:#811044;font-size:21px;line-height:1.5;'>آدرس ایمیل:</b>$order_email_customer"; ?></td > <td><?php echo "<b style='color:#811044;font-size:21px;line-height:1.5;'>شماره فاکتور :</b> $id_order <br/> <b style='color:#811044;font-size:21px;line-height:1.5;'>زمان پرداخت :</b> $time_pay_order"; ?></td > <td align="center"><p><?php echo $order_total_price; ?></p></td >
تمامی اطلاعاتی را که در مراحل قبل به دست آورده بودیم، در یک لیستی مرتب، به مدیر سایت نمایش می دهیم. حالا وقت تست عملی کدها نوشته شده، رسیده است.
همانند گذشته اولین کاری که باید انجام دهیم، این است که wamp را روشن کنیم. آدرس پنل مدیریت سایت یعنی http://localhost/ecommerce/admin_area/ را در مرورگر خود وارد کنیم. سپس مانند تصویر زیر، بر روی گزینه ی "مشاهده پرداخت ها" کلیک کنید.
با کلیک بر روی "مشاهده پرداخت ها"، تصویری همانند تصویر زیر، باید برای شما ایجاد شود (چرا گفتم همانند، چون پایگاه داده ایی که شما ایجاد می کنید، احتمالا با پایگاه داده ی من متفاوت خواهد بود).
با بررسی تصویر فوق، اطلاعات مشتری از جمله نام و نام خانوادگی و راه های ارتباطی با استفاده از جدول داده ایی customers به دست آمده و تاریخ فاکتور از جدول داده ایی pay_cart حاصل شده است. از طرفی شماره فاکتور و مبلغ فاکتور نیز از جدول داده ایی order در اختیار قرار می گیرد. یک تلفیق زیبا از ادغام 3 جدول برای ایجاد یک لیست مرتب؛ فوق العاده است.
به انتهای این قسمت از آموزش ساخت فروشگاه اینترنتی با استفاده از php رسیدیم، امیدوارم که لذت کافی را از برنامه نویسی برده باشید. انشاالله در قسمت آینده، پنل مدیریت سایت را به پایان می بریم. با من در قسمت آینده همراه باشید. در پایان نیز فایل نهایی را یکبار دیگر برای شما قرار می دهم.
فایل نهایی index.php که در آدرس C:\wamp\www\ecommerce\admin_area قرار دارد.
<!-- start of Header --> <?php include('include/Header.php'); ?> <!-- end of Header --> <div id="templatemo_content"> <!-- start of ocntent left --> <div id="templatemo_content_left"> <?php if(isset($_GET['insert_pro'])) { include('insert_product.php'); } if(isset($_GET['view_pro'])) { include('view_product.php'); } if(isset($_GET['edit_pro'])) { include('edit_product.php'); } if(isset($_GET['insert_cat'])) { include('insert_cat.php'); } if(isset($_GET['view_cats'])) { include('view_cats.php'); } if(isset($_GET['edit_cat'])) { include('edit_cat.php'); } if(isset($_GET['insert_brand'])) { include('insert_brand.php'); } if(isset($_GET['view_brands'])) { include('view_brands.php'); } if(isset($_GET['edit_brand'])) { include('edit_brand.php'); } if(isset($_GET['view_customers'])) { include('view_customers.php'); } if(isset($_GET['view_orders'])) { include('view_orders.php'); } if(isset($_GET['order_customer'])) { include('order_customer.php'); } if(isset($_GET['view_payments'])) { include('view_payments.php'); } ?> <div class="cleaner_with_height"> </div> </div> <!-- end of ocntent left --> <!-- start of right content --> <?php include('include/Right_Sidebar.php'); ?> <!-- end of right content --> <div class="cleaner"> </div> </div> <!-- start of footer --> <?php include('include/Footer.php'); ?> <!-- end of footer -->
فایل نهایی view_payments.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> <?php $select_order="SELECT * FROM `order` where order_is_verified='true' "; $run_order=mysqli_query($con,$select_order); while($row_order = mysqli_fetch_array($run_order)) { $id_order=$row_order['order_id']; $order_total_price=$row_order['order_total_price']; $order_email_customer=$row_order['order_email_customer']; //order search on pay_cart data table based on $id_order $select_customer="select * from `pay_cart` where order_id=$id_order order by id_cart desc limit 1"; $run_customer=mysqli_query($con,$select_customer); while ($row_customer=mysqli_fetch_array($run_customer)) { /* Obtaining time pay order from a pay_cart data table and using it */ $time_pay_order=$row_customer['order_time']; } $select_user = "select * from customers where `customer_email`='$order_email_customer'"; $run_custom = mysqli_query($con,"SET NAMES utf8"); $run_custom = mysqli_query($con,"SET CHARACTER SET utf8"); $run_custom = mysqli_query($con,$select_user); while($row_custom = mysqli_fetch_array($run_custom)) { $customer_name=$row_custom["customer_name"]; $customer_lastname=$row_custom["customer_lastname"]; $customer_province=$row_custom["customer_province"]; $customer_city=$row_custom["customer_city"]; $customer_address=$row_custom["customer_address"]; $customer_phone=$row_custom["customer_phone"]; ?> <td align="center"><?php echo $customer_name." ".$customer_lastname; ?></td > <td><?php echo "<b style='color:#811044;font-size:21px;line-height:1.5;'>آدرس : </b> $customer_province - $customer_city - $customer_address <br/><br/><b style='color:#811044;font-size:21px;line-height:1.5;'>شماره تلفن : </b>$customer_phone <br/><br/> <b style='color:#811044;font-size:21px;line-height:1.5;'>آدرس ایمیل:</b>$order_email_customer"; ?></td > <td><?php echo "<b style='color:#811044;font-size:21px;line-height:1.5;'>شماره فاکتور :</b> $id_order <br/> <b style='color:#811044;font-size:21px;line-height:1.5;'>زمان پرداخت :</b> $time_pay_order"; ?></td > <td align="center"><p><?php echo $order_total_price; ?></p></td > </tr> <?php } } ?> </table>
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.