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

16 شهریور 1397
php-editor

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

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

برای انجام این کار کد زیر را در insert_product.php پیدا کنید.

<option>برند مورد نظر خود را انتخاب کنید</option>
				  <option value="پارس خزر">پارس خزر</option>
				  <option value="اچ تی سی">اچ تی سی</option>
				  <option value="شیاومی">شیاومی</option>

این کدها را پاک کنید و به جای آنها، کدهای زیر را قرار دهید.

				<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>";
					}
				?>

اگر دقت کرده باشید کار خاصی انجام ندادیم. دقیقا  این کدها همانند کدهایی هست که برای دسته بندی در قسمت قبل به کار برده بودیم با این تفاوت که از جدول brands و دو فیلد آن یعنی brand_title و brand_id بهره گرفتیم. دقت کنید که من قبل تر هم گفتم که یک الگوی ثابت هست که شما باید این الگو را ملکه ذهن خودتان کنید.

دریافت عکس محصول برای ذخیره سازی در پایگاه داده

در مورد دریافت عکس محصول همانطور که گفتم ما با تگ file سر و کار داریم. کار با این تگ بسیار ساده است. از این تگ برای آپلود کردن عکس محصول استفاده خواهیم کرد.

اگر به تگ form در فایل insert_product.php دقت کرده باشید، دارای خاصیت enctype="multipart/form-data" هست و همچنین اطلاعات ما به روش POST ارسال می شوند. من با این فرض به شما آموزش می دهم که حداقل اطلاعات را در مورد انواع تگ های HTML را بدانید و همچنین اصول برنامه نویسیPHP را به یاد داشته باشید.

افزودن ویرایشگر پیشرفته Tinymce به تگ Textarea

خب برویم سراغ تگ textarea که قصد دارم آن را پیشرفته تر کنم. ابتدا ادیتور Tinymce را از لینک زیر دریافت کنید:

دانلود ادیتور Tinymce

بعد از دانلود این فایل را از حالت فشرده در بیاورید و در کنار فایل های دیگر در فولدر admin_area قرار دهید به تصویر زیر نگاه کنید.

نصب ادیتور tinymce در PHP

بعد از اینکه فایل tinymce را در فولدر admin_area قرار دادیم، باید فایل insert_product.php را باز کنید و در تگ head تکه کد زیر را اضافه نمایید.

<script src="tinymce/tinymce.min.js"></script>
<script>tinymce.init({ selector:'textarea' });</script>

یعنی تگ head در فایل insert_product.php باید شبیه به کد زیر باشد:

<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>

خب با این کار تصویر تگ textarea  از یک حالت ساده به یک حالت پیشرفته شبیه به ادیتور word تبدیل می شود. به شکل زیر دقت کنید.

ساخت یک ادیتور پیشرفته با tinymce

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

اما چگونه باید اطلاعات گرفته شده از فرم را در دیتابیس وارد نماییم. برای انجام اینکار باید مراحل زیر را در نظر گرفت.

اگر قصد دارید که اندازه ی کادر مربوط به فرم از نوع text را افزایش و یا حتی کاهش دهید کافی است در تگ input از ویژگی size="20 "  و یا هر عددی که مد نظرتان است استفاده نمایید و کادر را برای خودتان شخص سازی نمایید.

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

در ابتدا باید به این نکته دقت کرد: تا زمانی که دکمه submit زده نشده است هیچ چیزی ثبت نشود و اگر این دکمه زده شد آنگاه باید اطلاعات در پایگاه ecommerce ثبت شود. بنابراین اولین کار قرار دادن دستور زیر در انتهای فایل insert_product.php است:

<?php
	if(isset($_POST['submit']))
	{
	}

?>

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

$product_title	=$_POST['product_title'];

product_title در واقع نامی است که به input موردنظر برای گرفتن titile محصول در جدول html داده بودیم، به قطعه کد HTML که قبلا برای گرفتن نام نوشته بودیم، دقت کنید:

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

در این کد مشخصه name برابر با product_title است. اگر دقت کنید همه تگ های input دارای name منحصر به فرد خود هستند و به راحتی می توان از همین مقدار استفاده کرد.

بنابراین این کار را برای همه ورودی ها به صورت مشابه انجام می دهیم. به غیر از input با نوع file که مخصوص گرفتن تصویر است. با این تگ <input> باید به شکل دیگری برخورد کرد. دستور required باعث می شود تا زمانی که مقدارش را ندهید دکمه submit عمل نکند. برای درک بهتر این موضوع کافی است تا required را حذف کنید و دکمه submit را فشار دهید.

حالا ابتدا کد زیر را نگاه کنید. تابع move_uploaded_file یک تابع فوق العاده مهم و کاربردی است که توجه ویژه ای باید به آن داشته باشید. جهت یادآوری عرض کنم که تابع move_uploaded_file دو پارامتر ورودی (آرگومان) می گیرد. یکی مسیر موقتی که فایل در آن قرار دارد و دیگری مسیری که قرار است فایل به آنجا منتقل شود.

//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);

البته قبل از نوشتن این کد باید یک فایل جدید به نام product_images در فولدر admin_area بسازید تا عکس هایی که آپلود می کنید در آن قرار گیرند. تصویر زیر نمایانگر این اقدام است.

ایجاد فایل برای ذخیره سازی تصاویر در PHP

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

تمام فصل‌های سری ترتیبی که روکسو برای مطالعه‌ی دروس سری فروشگاه اینترنتی با PHP توصیه می‌کند:
نویسنده شوید

دیدگاه‌های شما (10 دیدگاه)

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

سایرا
12 آبان 1400
سلام من tinymce رو نصب کردم ولی جدول و چاپ و خیلی امکاناتش با این که تو پوشه پلاگین هست ولی تو textarea نمایش داده نمیشه. چطور میتونم این امکانات رو فعال کنم

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

.......
20 شهریور 1400
سلام خسته نباشید خیلی عالیه فقط داخل صفحه افزودن محصول،محصول اضافه میکنم ارتباط با سرور برقرار نمیشه و پیغام افزودن محصول را نمایش نمیدهد

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

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

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

حایری
07 بهمن 1399
سلام من میخوام همون کار که برای تصویر انجام دادین رو برای پوشه و محتوای داخلش رو ذخیره کنه در جدول محصول و فایل مشخصی در همون پوشه ذخیره شده رو با تگ a نمایش بده مثلی این سایت https://themeforest.net/item/multikart-responsive-angular-ecommerce-template/22905358 که دکمه نمایش رو میزنه فایل html رو نمایش ده

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

مصطفی
18 مهر 1399
سلام وعرض ادب . من فایل عکسها را برای بارگذاری در کدام پوشه قرار دهم. با تشکر

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

hasan
26 فروردین 1399
سلام من textarea به حالت ورد نمی شو دتمام مراحل را هم بادقت انجام دادم

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

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

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

ستار
19 بهمن 1398
سلام. من همه کار های بالا رو انجام دادم . ولی tinymce تو textarea' نمایش داده نمیشه

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

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

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

آلپتکین
09 آبان 1398
سلام این کد isset که گفتین آخر فایل اضافه کنیم ، بعد تگ بسته html منظورتونه یا قبلش ؟

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

جهانگیر پچکم
12 آبان 1398
سلام به شما دوست عزیز شما باید بعد از بسته شدن تگ form توی همین فایل اون دستور رو قرار بدین. به زیر توجه کنید <?php if(isset($_POST['submit'])) انشاالله موفق باشید، جهانگیر پچکم

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

bigrez
22 مرداد 1398
اون تیکه از حرفاتون که فرمودید (دقت کنید که من قبل تر هم گفتم که یک الگوی ثابت هست که شما باید این الگو را ملکه ذهن خودتان کنید)واقعا نوری بود تو اوج تاریکیا واسم..خیلی بهم روحیه داد همیشه حس میکردم کد ها خیلی زیادن و حالا حالاها مونده تا یاد بگیرم ولی خیلی ازت ممنونم یه صحبت ساده از طرف شما خیلی بهم روحیه داد بازم ممنون بخاطر ساییتون..فقط یه نکته رو اگ بتونید توضیح بدید خیلی ممنون میشم .. میشه بگید اون@قبل از queryچیه؟؟ و اینکه کلا معنی اون دو قطعه کد $run_brand چی هستن؟؟؟واقعا ممنونم!!!

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

جهانگیر پچکم
24 مرداد 1398
سلام شما لطف دارید، در مورد علامت @ باید اینو خدمت شما بگم که " علامت (@) به عنوان عامل کنترل خطا در PHP استفاده می شه. وقتیکه که یک عبارت با علامت @ شروع میشه ، پیام های خطایی که ممکن هست توسط اون عبارت ایجاد بشه ، نادیده گرفته می شه. " در مورد $run_brand (با استفاده از اون) ما به دیتابیس وصل می شیم و همه برندها رو دریافت می کنیم و در یک حلقه همه اونارو در لیست کشویی به نمایش در میاریم.

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

farzan
24 آذر 1397
سلام من وقتی یک جدول دیگه می سازم و تمام کارهایی که گفتید انجام می دهم ذخریه نمی شود میشه دلیلش بگید؟ Add New User اطلاعات مربوط به محصول را در این جدول اضافه کنید ویژگی های محصول مقدار ورودی برای هر کدام از ویژگی ها نام محصول قیمت محصول

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