در قسمت قبل برای شما توضیح دادم که چگونه می توان تصویر یک محصول را از فرم گرفت و در یک فولدر خاص قرار داد. اما این بحث را تمکیل می کنم. قطعه کد زیر را مشاهده بکنید.
//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 متوصل می شویم.
دقت کنید که SQL دارای چند عمل بسیار مهم می باشد.
SELECT | برای واکشی اطلاعات از یک یا چند جدول به کار می رود. |
INSERT INTO | برای درج اطلاعات در جدول به کار می رود |
REPLACE | برای جایگزین کردن داده ها به کار می رود. اگر داده ای از قبل وجود داشته باشد آن را حذف می کند و مقدار جدید را جایگزین می کند. |
UPDATE | برای به روز رسانی داده های جدول به کار می رود. |
DELETE | برای حذف داده از جدول به کار می رود |
اگر با من از قسمت اول همراه بوده باشید، من در چند جا از دستور 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 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 وارد شوید و مشخصات محصول خودتان را وارد کنید. به تصویر زیر دقت کنید
سپس اگر دکمه "بارگذاری" را فشار بدهید با تصویر زیر مواجه می شوید.
به شما تبریک می گویم اطلاعاتتان را به درستی وارد کردید. حالا اگر به پوشه product_images در پوشه admin_area مراجعه کنید متوجه می شوید که عکس شما نیز به درستی آپلود شده است. از طرف دیگر اگر به http://localhost/phpmyadmin مراجه کنید و جدول داده ایی products را باز کنید می توانید تمامی اطلاعات خود را مشاهده نمایید.
خب عزیزان خسته نباشید.انشاالله در قسمت آینده آموزش نحوی نمایش محصولات موجود در دیتابیس را در صفحه اول فروشگاه را خدمت شما مطرح خواهم کرد. لطفا در زمینه دستورات sql دانش خودتان را با کد زدن بیشتر، بالا ببرید. ممنونم
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.