با سلام به شما دوستان عزیز، همانطور که در قسمت قبل به شما عزیزان قول داده بودم، در این قسمت، فایلهای edit_product.php و delete_pro.php را ایجاد خواهم کرد و در مورد کدهایی که در این دو فایل قرار می گیرند، توضیح می دهم.
این فایل ها به موضوع ویرایش و حذف محصولات در پنل مدیریت سایت اختصاص دارد. اما چگونه این کار صورت می گیرد؟ من توجه شما را به تصویری که در قسمت قبل نیز آن را آورده بودم جلب می کنم. کدهایی که در این تصویر مشاهده می نمایید، در فایل view_product.php قرار دارند. کافی است به فایل view_product.php بروید تا آنها را پیدا کنید.
اگر به دقت در تصویر بالا نگاه کنید، ما باید از متغییرهای سراسری $_GET['edit_pro'] و $_GET['delete_pro'] استفاده کنیم،
اما نکته مهمتر این است که چه مقداری را باید درون این متغییرها قرار دهیم؟
در اینجا راز مهمی نهفته است، استفاده از id محصول.
هنگامی که داریم اطلاعات مختلف یک محصول را به دست می آوریم، id محصول را نیز از پایگاه داده استخراج می کنیم.
در این مرحله (حذف و ویرایش یک محصول) برای اینکه بتوانیم به درستی محصولی که قصد ویرایش و حذف آن را داریم شناسایی کنیم، ناگزیر به استفاده از id محصول هستیم و آن را به عنوان مقدار به متغییرهای سراسری $_GET['edit_pro'] و $_GET['delete_pro'] می دهیم.
خب، فکر کنم به نحو احسن به اهمیت id محصول پی بردید، حالا باید ببینیم که هر کدام از فایلهای edit_product.php و delete_pro.php چه کدهایی را درون خودشان قرار می دهند و چه استراتژی برای رسیدن به هدف خود در پیش می گیرند.
قبل از هر چیز، ما باید به فایل index.php در آدرس C:\wamp\www\ecommerce\admin_area برویم. در این فایل مدیر سایت را با توجه به درخواستی که دارد (ویرایش و حذف محصول) به فایلهای edit_product.php و delete_pro.php هدایت می کنیم. بنابراین کدهای زیر را در این فایل پیدا کنید.
if(isset($_GET['view_pro'])) { include('view_product.php'); }
آنها را پاک کنید و به جای آنها کدهای زیر را قرار دهید.
if(isset($_GET['view_pro'])) { include('view_product.php'); } if(isset($_GET['edit_pro'])) { include('edit_product.php'); }
در کدهای بالا دقت کنید، یک دستور شرطی قرار دادیم؛ if(isset($_GET['edit_pro'])) . همانطور که مشاهده می کنید، اگر کاربر بر روی ویرایش محصول کلیک کرده بود، فایل edit_product.php را برای این فرد باز می کنیم. در مورد حذف کردن، اگر به تصویری که کمی قبل تر برای شما عزیزان قرار دادم توجه نمایید، مدیر سایت زمانی که بر روی حذف یک محصول کلیک می کند به طور مستقیم در لینک حذف، مدیر سایت به فایل delete_pro.php هدایت می شود.
به تصویر زیر نگاه کنید.
خب، حالا که فایل index.php را اصلاح کردیم، باید در ادامه فایل های edit_product.php و delete_pro.php را بسازیم.
برای انجام اینکار، باید به آدرس C:\wamp\www\ecommerce\admin_area بروید و مانند تصویر زیر این دو فایل را در این مکان ایجاد نمایید.
بعد از ایجاد این دو فایل ، حالا باید درمورد کدهایی که در هر کدام از آنها قرار می گیرند، توضیح دهم.
دقت نمایید، من در مورد ویرایش به این صورت عمل کردم که، هنگامی که مدیر سایت بر روی گزینه "ویرایش " کلیک کرد، یک جدول جدید، دقیقا مشابه جدولی که در مورد گزینه "وارد کردن محصول جدید" ایجاد کرده بودیم؛ برای او به نمایش در بیایید. البته با این تفاوت اساسی که قصد ما در این جدول، بروزرسانی (update) اطلاعات محصول است نه وارد کردن (insert) محصول؛ این نکته فوق العاده مهم است.
به همین خاطر به آدرس C:\wamp\www\ecommerce\admin_area بروید و فایل edit_product.php را با استفاده از Notepad++ باز کنید و کدهای زیر را درون آن قرار دهید.
<form method="post" action="" enctype="multipart/form-data"> <?php if(isset($_GET['edit_pro'])){ $id_pro=$_GET['edit_pro']; $select_pro="select * from products where product_id='$id_pro' "; $run_pro=mysqli_query($con,"SET NAMES SET utf8"); $run_pro=mysqli_query($con,"SET CHARACTER SET utf8"); $run_pro=mysqli_query($con,$select_pro); $row_pro=mysqli_fetch_array($run_pro); $title_pro=$row_pro['product_title']; $img_pro=$row_pro['product_image']; global $img_pro; $price_pro=$row_pro['product_price']; $desc_pro=$row_pro['product_desc']; $keywords_pro=$row_pro['product_keywords']; //get cat product $cat_pro=$row_pro['product_cat']; $select_cat_pro="select * from categories where cat_id='$cat_pro' "; $run_cat_pro=mysqli_query($con,"SET NAMES SET utf8"); $run_cat_pro=mysqli_query($con,"SET CHARACTER SET utf8"); $run_cat_pro=mysqli_query($con,$select_cat_pro); $row_cat_pro=mysqli_fetch_array($run_cat_pro); $title_cat_pro=$row_cat_pro['cat_title']; //get cat product $brand_pro=$row_pro['product_brand']; $select_brand_pro="select * from brands where brand_id='$brand_pro' "; $run_brand_pro=mysqli_query($con,"SET NAMES SET utf8"); $run_brand_pro=mysqli_query($con,"SET CHARACTER SET utf8"); $run_brand_pro=mysqli_query($con,$select_brand_pro); $row_brand_pro=mysqli_fetch_array($run_brand_pro); $title_brand_pro=$row_brand_pro['brand_title']; } ?> <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" value="<?php echo $title_pro; ?>"></td > </tr> <tr> <td><b>دسته بندی محصول</b></td> <td> <select name="product_cat" > <option value="<?php echo $cat_pro; ?>"><?php echo $title_cat_pro; ?></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" > <option value="<?php echo $brand_pro; ?>"><?php echo $title_brand_pro; ?></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" value="<?php echo $price_pro; ?>"></td > </tr> <tr> <td><b>توصیف محصول</b></td > <td> <textarea name="product_desc" ><?php echo $desc_pro; ?></textarea> </td > </tr> <tr> <td><b>عکس محصول</b></td > <td> <img src="<?php echo $img_pro; ?>" height="45" width="60"/><br/><br/> <input type="file" name="product_image"> </td > </tr> <tr> <td><b>کلمات کلیدی</b> </td > <td><input type="text" name="product_keywords" size="70" value="<?php echo $keywords_pro; ?>" ></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 if(isset($_POST['submit'])) { $id_pro=$_GET['edit_pro']; //getting the text data form the fields $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 if(is_uploaded_file($_FILES['product_image']['tmp_name'])){ $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); }else{ $address_images=$img_pro; } $update_product="update products set product_cat='$product_cat', product_brand='$product_brand', product_title=N'$product_title', product_price=$product_price, product_desc=N'$product_desc', product_image='$address_images', product_keywords=N'$product_keywordS' where product_id='$id_pro' "; $update_pro=mysqli_query($con,$update_product); //display message to user if($update_pro) { echo"<script>alert('اطلاعات جدید جایگزین اطلاعات قبلی شد.')</script>"; echo"<script>window.open('index.php?view_pro','_self')</script>"; } } ?>
در کدهای بالا، در همان ابتدا سعی کرده ایم، اطلاعات پیش فرضی که باید به عنوان مقدار در خانه های جدول قرار داشته باشند را از پایگاه داده استخراج کنیم، و به عنوان مقادیر پیش فرض قرار دهیم.
در ادامه یک فرم ایجاد کردیم و یک جدول با ستون و خانه های مشخص. سپس با استفاده از حلقه while، دائما این اطلاعات پیش فرض را در خانه های مشخص، به عنوان مقدار، قرار دادم. اما دقت کنید، قسمت اصلی کار این فایل، بعد از تگ form آغاز می شود. در آن کدها، ابتدا id محصولی که قصد ویرایش آن را دارد با استفاده از کد زیر به دست می آورد (این نکته فوق العاده مهم است).
$id_pro=$_GET['edit_pro'];
الان دقیقا ما می دانیم که قرار است که کدام محصول را بروزرسانی کنیم. در ادامه، اطلاعاتی را که کاربر در تگ های ورودی، وارد کرده است را یک به یک در متغییرهای مناسب قرار می دهیم و با استفاده از دستور SQL زیر اقدام به بروزرسانی محصول مورد نظر می کنیم.
$update_product="update products set product_cat='$product_cat', product_brand='$product_brand', product_title=N'$product_title', product_price=$product_price, product_desc=N'$product_desc', product_image='$address_images', product_keywords=N'$product_keywordS' where product_id='$id_pro' "; $update_pro=mysqli_query($con,$update_product);
دقت کنید که در انتهای دستور SQL، یک نکته مهم قرار دارد و آن where product_id='$id_pro است.
در ادامه با استفاده از دستور javascript، در صورت موفقیت آمیز بودن عملیات به روزرسانی، پیام مناسب را به مدیر سایت می دهیم.
حالا باید به سراغ کدهای فایل delete_pro.php برویم.
همانطور که مشاهده کردید برای ویرایش یک محصول ، نکته اساسی id محصول بود، همین نکته در مورد حذف محصول نیز صادق است. با این پیش گفتار به سراغ کدنویسی فایل delete_pro.php برویم؛ به همین خاطر به آدرس C:\wamp\www\ecommerce\admin_area بروید و فایل delete_pro.php را با استفاده از Notepad++ باز کنید و کدهای زیر را در آن قرار دهید.
<html lang="fa" dir="rtl"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <?php include("include/db.php"); if(isset($_GET['delete_pro'])){ $delete_id_pro = $_GET['delete_pro']; $delete_pro = "delete from products where product_id='$delete_id_pro' "; $run_delete_pro = mysqli_query($con,$delete_pro); if($run_delete_pro) { echo "<script>alert('این محصول با موفقیت از لیست محصولات شما حذف شد!')</script>"; echo "<script>window.open('index.php?view_pro','_self')</script>"; } } ?> </body> </html>
همانطور که در کدهای بالا دقت کرده اید، ما در ابتدا به پایگاه داده متصل شده ایم و در ادامه یک سوال شرطی پرسیده ایم: if(isset($_GET['delete_pro'])) آیا مدیر سایت، بر روی گزینه حذف کلیک کرده است؟
اگر جواب سوال بالا، بله باشد، در ادامه و در بلوک دستورات نکته مهمی را مطرح کرده ایم: $delete_id_pro = $_GET['delete_pro']; یعنی حالا به ما id محصول را نیز بده. خب اصل کار ما نیز به دست آوردن id محصول بود، حالا دیگر به راحتی با استفاده از یک دستور delete از سری دستورات SQL، محصول مورد نظر را حذف می کنیم.
ادامه کدها را مطمئنا به آسانی درک می کنید و من دیگر به آنها نمی پردازم.
برای اینکه تست کنیم که آیا کدهای نوشته شده به درستی کار می کنند یا خیر، ابتدا باید wamp را روشن کنید، سپس در مرورگر آدرس http://localhost/ecommerce/admin_area/index.php را وارد کنید. تا با تصویر زیر روبرو شوید.
حالا از گزینه های موجود در سایدبار سمت راست، بر روی گزینه ی "مشاهده تمامی محصولات" کلیک نمایید؛ تا تصویری شبیه به تصویر زیر برای شما به نمایش در بیایید (احتمالا محصولات شما متفاوت خواهد بود).
حالا من در ادامه، یکی از محصولات را برای ویرایش انتخاب می کنم. به تصویر زیر نگاه کنید.
با کلیک بر روی لینک "ویرایش"، تصویری همانند تصویر زیر، برای شما به نمایش در می آید.
اکنون در تصویر زیر بعضی از تگ های ورودی را تغییر می دهم و بر روی دکمه بروزرسانی فشار می دهم.
حالا تصویر زیر، که نشانگر موفقیت در بروزرسانی اطلاعات محصول است، برای شما به نمایش در می آید و تغییرات مورد نظر بر روی محصول اعمال می شود.
خب حالا باید به سراغ حذف یک محصول بریم. برای حذف یک محصول بار دیگر باید به پنل مدیریت وارد شویم و از سایدبار سمت راست، بر روی گزینه "مشاهده تمامی محصولات" کلیک کنیم ، سپس مانند تصویر زیر یک محصول را انتخاب کنیم و بر روی لینک "حذف " فشار دهیم.
بعد از انجام کار بالا، تصویر زیر در پیش روی ما قرار می گیرد.
این پیام به ما می گویید که محصول ، از لیست محصولات شما در پایگاه داده حذف شده است؛ سپس اگر ما بر روی ok کلیک کنیم به تصویر زیر هدایت می شویم، در تصویر زیر شما مشاهده می کنید که محصول مورد نظر حذف شده است.
خب دوستان عزیزمن، به پایان این قسمت آموزشی رسیدیم. اگر هر کجای کدهای نوشته شده، دچار مشکل شدید یا سوالی برای شما پیش آمد، می توانید در قسمت نظردهی عنوان نمایید تا پاسخ گوی شما عزیزان باشم. در قسمت آینده به سراغ گزینه "وارد کردن دسته جدید" از سایدبار سمت راست خواهیم رفت. به طور خلاصه کار این گزینه این است که کار مدیر سایت را برای اضافه کردن دسته بندی جدید، بسیار راحت می کند و دیگر نیازی نیست مدیر به پایگاه داده برود، فقط کافی است از همین پنل مدیریت سایت، به آسانی اینکار را انجام دهد. در انتها برای شما عزیزان، کدهای نهایی فایلهایی که در این قسمت آنها را تغییر دادم، قرار داده ام.
کدهای نهایی 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'); } ?> <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 -->
کدهای نهایی فایل edit_product.php که در آدرس C:\wamp\www\ecommerce\admin_area قرار دارد.
<form method="post" action="" enctype="multipart/form-data"> <?php if(isset($_GET['edit_pro'])){ $id_pro=$_GET['edit_pro']; $select_pro="select * from products where product_id='$id_pro' "; $run_pro=mysqli_query($con,"SET NAMES SET utf8"); $run_pro=mysqli_query($con,"SET CHARACTER SET utf8"); $run_pro=mysqli_query($con,$select_pro); $row_pro=mysqli_fetch_array($run_pro); $title_pro=$row_pro['product_title']; $img_pro=$row_pro['product_image']; global $img_pro; $price_pro=$row_pro['product_price']; $desc_pro=$row_pro['product_desc']; $keywords_pro=$row_pro['product_keywords']; //get cat product $cat_pro=$row_pro['product_cat']; $select_cat_pro="select * from categories where cat_id='$cat_pro' "; $run_cat_pro=mysqli_query($con,"SET NAMES SET utf8"); $run_cat_pro=mysqli_query($con,"SET CHARACTER SET utf8"); $run_cat_pro=mysqli_query($con,$select_cat_pro); $row_cat_pro=mysqli_fetch_array($run_cat_pro); $title_cat_pro=$row_cat_pro['cat_title']; //get cat product $brand_pro=$row_pro['product_brand']; $select_brand_pro="select * from brands where brand_id='$brand_pro' "; $run_brand_pro=mysqli_query($con,"SET NAMES SET utf8"); $run_brand_pro=mysqli_query($con,"SET CHARACTER SET utf8"); $run_brand_pro=mysqli_query($con,$select_brand_pro); $row_brand_pro=mysqli_fetch_array($run_brand_pro); $title_brand_pro=$row_brand_pro['brand_title']; } ?> <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" value="<?php echo $title_pro; ?>"></td > </tr> <tr> <td><b>دسته بندی محصول</b></td> <td> <select name="product_cat" > <option value="<?php echo $cat_pro; ?>"><?php echo $title_cat_pro; ?></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" > <option value="<?php echo $brand_pro; ?>"><?php echo $title_brand_pro; ?></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" value="<?php echo $price_pro; ?>"></td > </tr> <tr> <td><b>توصیف محصول</b></td > <td> <textarea name="product_desc" ><?php echo $desc_pro; ?></textarea> </td > </tr> <tr> <td><b>عکس محصول</b></td > <td> <img src="<?php echo $img_pro; ?>" height="45" width="60"/><br/><br/> <input type="file" name="product_image"> </td > </tr> <tr> <td><b>کلمات کلیدی</b> </td > <td><input type="text" name="product_keywords" size="70" value="<?php echo $keywords_pro; ?>" ></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 if(isset($_POST['submit'])) { $id_pro=$_GET['edit_pro']; //getting the text data form the fields $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 if(is_uploaded_file($_FILES['product_image']['tmp_name'])){ $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); }else{ $address_images=$img_pro; } $update_product="update products set product_cat='$product_cat', product_brand='$product_brand', product_title=N'$product_title', product_price=$product_price, product_desc=N'$product_desc', product_image='$address_images', product_keywords=N'$product_keywordS' where product_id='$id_pro' "; $update_pro=mysqli_query($con,$update_product); //display message to user if($update_pro) { echo"<script>alert('اطلاعات جدید جایگزین اطلاعات قبلی شد.')</script>"; echo"<script>window.open('index.php?view_pro','_self')</script>"; } } ?>
کدهای نهایی فایل delete_pro.php که در آدرس C:\wamp\www\ecommerce\admin_area قرار دارد.
<html lang="fa" dir="rtl"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <?php include("include/db.php"); if(isset($_GET['delete_pro'])){ $delete_id_pro = $_GET['delete_pro']; $delete_pro = "delete from products where product_id='$delete_id_pro' "; $run_delete_pro = mysqli_query($con,$delete_pro); if($run_delete_pro) { echo "<script>alert('این محصول با موفقیت از لیست محصولات شما حذف شد!')</script>"; echo "<script>window.open('index.php?view_pro','_self')</script>"; } } ?> </body> </html>
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.