آموزش پروژه محور PHP
- سطح پروژه: دانشجویی
- پیش نیاز ها: PHP مقدماتی - HTML - CSS
- مستندسازی: به ازای هر دستور، توضیحات لازم داخل کد ارائه شده است.
- پیش نمایش: مشاهده پیش نمایش یا Demo
- دانلود سورس: دانلود سورس پروژه هتل در PHP
پروژه رزرو هتل در PHP
با توجه به درخواست های مکرر کاربران بیاموز، مبنی بر آموزش های پروژه محور، تصمیم گرفتیم تا آموزش های ارائه شده در بخش های آموزش PHP و آموزش HTML و آموزش CSS را تحت یک پروژه بکار ببریم.
حالا شما کاربران محترم می توانید با دانلود کامل پروژه رزرو هتل، با نحوه استفاده از مباحث خوانده شده تا اینجا آشنا شوید.
موارد استفاده شده در این پروژه عبارتند از:
- در پروژه رزرو هتل، برای کار با پایگاه داده از افزونه MySQLi بجای MySQL استفاده شده است.
- برای بالا بردن راندمان کوئری ها و جلوگیری از حملات SQL Injection از دستورات آماده یا Prepare استفاده شده است.
- در این پروژه، از Session ها برای نگه داشتن، نام کاربری استفاده شده است.
- در این پروژه، اعتبار سنجی داده ها در سه سطح: فرم، برنامه و پایگاه داده در نظر گرفته شده است.
- در این پروژه، از HTML5 برای اعتبار سنجی (Validation) فرم های رزرو و ثبت نام استفاده شده است.
- برای قابل فهم تر شدن اسکریبت ها، توضیحات یا comment به ازای تک تک کدها ذکر شده است.
- در این پروژه برای طراحی صفحات از Master Page استفاده شده است.
توجه: دانشجویان عزیز می توانند با کمی تغییرات در این پروژه آنرا بعنوان پروژه پایان ترم خود ارائه دهند.
در اینجا برای اطمینان بیشتر، ماژول "ورود کاربران" که در سمت چپ تمامی صفحات نشان داده می شود، آورده شده است:
login.php
<?php
//اضافه کردن فایل کانفیک به این صفحه این فایل شامل اطلاعات لازم برای اتصال به پایگاه داده است
require_once('config.php');
//تنظیم اکشن
$action=(isset($_POST['action']))? $_POST['action'] : '';
//بر اساس اکشن تنظیم شده، تابع مربوطه فراخوانی می شود
switch($action)
{
case "login" : login(); break;
case "exit_user" : exit_user(); break;
default : display_form_login(); break;
}
//وظیفه این تابع، نمایش فرم لاگین است
function display_form_login()
{
//اگر کاربر، قبلاً لاگین کرده باشد بنابراین سشن زیر تنظیم شده است و نباید فرم لاگین نمایش داده شود
if(isset($_SESSION['u_username']))
{
show_welcome_message($_SESSION['u_username']);
return;
}
?>
<div class="form" id="login">
<h2>ورود کاربران</h2>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<input type="hidden" name="action" value="login" />
<dl>
<dd>
<label style="min-width: 70px;">نام کاربری :</label>
<input type="text" name="u_username" size="18" maxlength="25" required />
</dd>
<dd>
<label style="min-width: 70px;">کلمه عبور :</label>
<input type="password" name="u_password" size="18" maxlength="25" required />
</dd>
<dd class="button">
<input type="submit" value="ورود" />
</dd>
<dd style="margin:0 10px 10px;">
<a href="/register.php">ایجاد حساب کاربری</a>
</dd>
</dl>
<div class="error"><?php if (isset($GLOBALS['error'])) echo $GLOBALS['error']; ?></div>
</form>
</div>
<?php
}
//وظیفه این تابع، این است که براساس نام کاربری و کلمه عبور دریافت شده، اجازه ورود به کاربر بدهد
function login()
{
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
//متغییری برای ذخیره پیغام های خطا
global $error;
$error='';
//تنظیم مقادیر ارسال شده از سمت کاربر
$u_username=$_POST['u_username'];
$u_password=$_POST['u_password'];
//مقادیر ارسال شده از سمت کاربر، نباید خالی باشد
if(empty($u_username) || empty($u_password))
{
$error = "لطفاً همه فیلدها را پر کنید.";
display_form_login();
return;
}
//ایجاد ارتباط به پایگاه داده
$conn= new mysqli(DBHOST, DBUSER, DBPASS,DBNAME);
//اطمینان از صحت ارتباط
if($conn->connect_error)
{
$error = "متاسفانه نمی توان به پایگاه داده متصل شد.";
display_form_login();
return;
}
//تنظیم کوئری و اطمینان از صحت کار
if ($stmt = $conn->prepare("SELECT u_id FROM users WHERE u_username=? and u_password=?"))
{
//بایند کردن پارامترها
$stmt->bind_param("ss", $u_username, $u_password);
//اجرای کوئری
$stmt->execute();
//ذخیره کردن نتیجه
$stmt->store_result();
//اگر تعداد رکوردها بزرگتر از صفر باشد، کاربر بدرستی اطلاعات را وارد کرده است
if($stmt->num_rows>0)
{
$_SESSION['u_username']=$u_username;
show_welcome_message($u_username);
}
else
{
$error = "نام کاربری یا کلمه عبور اعتبار ندارد";
display_form_login();
return;
}
}
else
{
$error = "عدم اجرای دستور Prepare <br /> شماره خطا = $conn->errno <br /> متن خطا = $conn->error";
display_form_login();
return;
}
//بستن ارتباط با پایگاه داده
$stmt->close();
$conn->close();
}
}
//وظیفه این تابع، نمایش پیغام خوش آمد گویی است البته بهمراه نمایش دکمه خروج
function show_welcome_message($u_username)
{
?>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<input type="hidden" name="action" value="exit_user" />
<div class="form" id="login">
<h2>ورود کاربران</h2>
<div>سلام، <?php echo $u_username; ?> عزیز</div>
<div class="button"><input type="submit" value="خروج" /></div>
</div>
</form>
<?php
}
//وظیفه این تابع خروج و پاک کردن سشن هاست
function exit_user()
{
unset($_SESSION['u_username']);
display_form_login();
}
?>
امکانات مورد نیاز
به ابزار خاصی برای پیاده سازی این پروژه نیاز نیست، اما برای اجرای کدهای PHP و استفاده از پایگاه داده MySQL باید آنها را نصب نمایید که پکیج Xampp برای این منظور مناسب می باشد.
برای اطلاعات بیشتر به لینک روبرو مراجعه فرمایید: آموزش PHP-نصب PHP
در ضمن برای نوشتن کدها از ادیتور ++Notepad استفاده شده است.
پروژه هتل چیست؟
مهم ترین قسمت های پروژه هتل شامل موارد زیر می شود:
- فرم رزرو هتل
- فرم ثبت نام کاربران (عضویت)
- فرم ورود کاربران
- مشاهده اطلاعات رزروی
- مشاهده کاربران عضو شده
- درباره ما
- گالری تصاویر
- تماس با ما
پیش نمایش فیلم آموزش پروژه محور PHP
پیش نمایش زیر، جهت آشنایی شما کاربران محترم بیاموز با نحوه ی تدریس و بیان مدرس تهیه شده است:
پیش نمایش شماره 1 - درس شماره 1
- نوشته شده توسط امیر پهلوان صادق
- بازدید: 50685
دیدگاهها
سلام میشه اموزش تصویری پروژه معرفی جاذب های گردشگری هم بذارین؟ من دارم php یاد میگیرم و پروژه پایانیم هم سایت گردشگری هست میخواستم با کمک فیلمی درمورد این پروژه یاد بگیرم . ممنون و تشکر
سلام
باید به شما دوست عزیز اطمینان داد که با دیدن فیلم های آموزشی دیگر، مثل پروژ بالا و یا پروژه ساخت فروشگاه، شما قادر خواهید بود، براحتی با استفاده از متدهای و آموزش های کسب شده، پروژه مورد نظرتان (پروژه سایت گردشگری) را پیاده سازی نمایید.
عالی بود.
سلام خسته نباشید.
من خرید کردم خوبه. آموزشو هنوز شروع نکردم ایشالا انی که مد نظرم بود باشه .
خیلی ممنون .
با عرض سلام و خسته نباشید...من بعنوان پروژه دانشگاهی یک سایت نوبت دهی رادیولوژی را یاید پیاده سازی کنم. طراحی صفحاتش را با html, css انجام دادم ولی دانش زیادی از php ندارم. آیا با دریافت پروژه هتل و اعمال تغییرات میتونم پروژمو کامل کنم؟
سلام
پروژه رزرو هتل، شامل 9 ساعت فیلم آموزشی است و مطمئنا بعد از دیدن فیلم ها، می توانید پروژه خود را پیاده سازی نمایید.
سلام
در پروژه رزرو هتل، جستجوی اتاق هم وجود دارد ؟
آیا میتوانم با دید گرفتن از این پروژه پروژه کتابخانه آنلاین ایجاد بکنم ؟
سلام
خیر جستجوی اتاق وجود ندارد.
اما با توجه به اینکه پروژه رزرو هتل، یک پروژه بسیار سبک است و در عین حال کامل به این معنی که به تمامی موارد مورد نیاز برای یک پروژه در آن پرداخته شده است، شما می توانید از آن الگو گرفته و برای پروژه های دیگر از آن استفاده نمایید.
سلام. من این پروژه رو میخام ب عنوان پروژه پایان ترمم بخرم، اینکه گفتید با کمی تغییرات میتونید پروژه باشه براتون. دقیقا تغییرات کجاها باید باشه؟ 2_من زیادی وب بلد نیستم آیا میتونم با توضیحات داخل پروژه از پروژه سر در بیارم؟
سلام
1- منظور از تغییرات، جاهایی است که از سایت بیاموز بعنوان پیاده ساز اسم برده شده است که براحتی می توانید آنرا با نام خودتون تغییر بدید.
2- بله شما براحتی می توانید با بررسی کامنت هایی که به ازای تک تک خطوط انجام شده است از روش کار پروژه رزرو هتل آگاه شوید.
سلام و خسته نباشید
اگه لطف کنید ممنون میشم دو خط کد به پروژه اضافه کنید نیاز دارم
1. درسته دو کاربر با یک نام کاربری در پایگاه داده درج نمیشه ولی هنگام ثبت نام هم هیچ خطای نمیده اگه بشه نام کاربری تکراری انتخاب کرد بگه نام کاربری دیگری انتخاب کنید
2. یک دستور دیگه برای کسانی که ثبت نام نکرده باشند حق رزرو اتاق نداشته باشن و هنگام رزرو بگه اول ثبت نام کنید بعد اجازه رزرو دارید
ممنون از رهنمایی شما
با سلام
دوست عزیز بهترین راه برای آروده کردن نیاز ها شما موارد زیر هستش.
1- چگونه فرم رزرو تنها برای اعضا قابل نمایش باشد.
ٌصفحه مربوط به رزرو اتاق را باز کنید و کد زیر را در خط اول بگذارید
session_start();
if(isset($_SESSION['u_username']))
{
header('Location: login.php');
}
در کد های بالا ابتدا سیشن استارت میشود و سپس اگر سیشن با یوزر ایجاد نشده بود فرم نمایش داده نمی شود و به صفحه لاگین منتقل می شود.
2- برای اینکه خطاطط ببینید ظاهری هنگام اینکه دو یوزر مشابه در سیستم هستش من راه حل ساده ای میگم خدمتتون که خیلی برای شما که ابتدا کار هستید مناسبه تا فقط درکی از کد پیدا کنید.
if ($stmt = $conn->prepare( "SELECT * FROM users WHERE u_username=?"))
{
//بايند کردن پارامترها
$username=$_POST['u_username'];
$stmt->bind_param("s", $u_username);
//اجراي کوئري
$stmt->execute();
$stmt->store_result();
if($stmt->num_rows>0)
{
echo 'نام کاربري تکراري است';
elseif {} }
}
البته باید در نحوه نکارش کد در هنگام کدنویسی در بخش لاگین دقت کنید چون فقط برای نمونه این کد رو گذاشتم براتون.
توضیحات : ما با دستوری به دیتابیس وصل می شیم و بعدش یک شرط گذاشمی که یوزرنیم برابر بود با یوزرنیم ما اون وقت در انتها گفتیم کوری اجرا بشه و اگه تعداد سطر های کوری بیش از 0 بود یعنی یوزرنیم قبلا وجود داشته . این کد تست شده و هیچ مشکلی نداره فقط باید توی دستور elseif حالا اون شرط عضویت رو بذارید یعنی بقیه کد ها عضویت رو .
بهترین راه تقریبا معرفی شده که افراد تازه کار بتونند بدون مشکل چک کننده نام کاربری تکراری هستش یا خیر .
سلام میشه نحوه ایجاد دیتا بیس در cpanel رو توضیح بدید...من دیتا بیس تشکیل میدم و در sql هم کپی میکنم فایل DB رو ولی وقتی میرم تو سایت می خوام ثبت نام کنم یا با admin وارد بشم میگه ارتباط با پایگاه داده برقرار نشدباید تو فایلی دستکاری کنم اگه میشه کامل توضیح بدبد ممنون
سلام.
به طور کل برای کار با پایگاه داده شما ابتدا باید یک یوزر و پسورد برای اون پایگاه داده داشته باشید. در کارهای لوکال اکثرا همه از یوزر تعریف شده root و پسورد خالی استفاده میکنن. اما در cpanel که توسط هاستهای اشتراکی در اختیار کاربران قرار میگیره، باید یه یوزر و پسورد تعریف بشه.
سپس پایگاه داده تعریف مییشه. این پایگاه داده باید به یوزر مربوطه وصل بشه تا در پایگاه داده انجام عملیات میسر بشه.
در واقع برای کار با بانک اطلاعاتی باید موارد زیر تعریف شده باشه:
- نام پایگاه داده
- نام کاربری
- پسورد
- مسیر سرور
شما موارد بالا رو چک کنید. اگر درست باشه، اتصال با بانک اطلاعاتی میسر خواهد، و اگر به هر دلیلی نتونید با بانک اطلاعاتی وصل بشید، مشکل یکی از موارد بالاست.
در صورت امکان متن خطا رو بذارید، تا بشه بهتر راهنمایی کرد.
تشکر فراوان بابت توضیحات و راهنمایی های خوبتون
عااااااااااالللللللیییی بوذ
مرسی
با سلام و احترام
1- ببخشید راجع به این خط کد کمی توضیح میدین؟و اینکه چرا مثه قسمت های دیگه فراخوانیش نکردیم؟
require_once(di rname(__FILE__) ."/../config.ph p");
2- در فایل rezerve_text.ph p هم input ای با type=hidden ...برای چی باید بذاریمش کلا؟
<input type="hidden" name="action" value="reserve" />
با سلام و عرض ادب
1- اگر به Root اصلی پروژه رزرو هتل توجه فرمایید، فایل config.php را خواهید دید. بنابراین برای اضافه کردن این فایل به صفحات و یا فایل هایی که در کنار فایل مذکور قرار دارند می توان از کد زیر استفاده کرد:
require_once('config.php');
اما اگر در Root پروژه رزرو هتل روی فولدر admin کلیک کنید، تعدادی فایل اینجا نیز مشاهده خواهید کرد که در برخی از آنها باز به فایل config.php نیاز داریم، برای اضافه کردن فایل مذکور به این دسته از فایل ها باید بصورت زیر عمل کنیم:
require_once(dirname(__FILE__)."/../config.php");
در واقع ما مجبور هستیم که برای اضافه کردن config.php به فایل های پوشه admin یک قدم به عقب برگردیم، ولی قبل از هر چیز باید آدرس کامل پوشه جاری را بدانید ...! یعنی با استفاده از متد dirname آدرس کامل محل جاری را می توان بدست آورد حالا کافی است که با علامت دو نقطه یعنی .. یک گام به عقب برگردیم.
2- اگر به اسکریبت استفاده شده در فایل rezerve_text.ph p یکبار دیگر دقت کنید، در ابتدای آن از کد زیر استفاده شده است:
//اضافه کردن فایل کانفیک به این صفحه
//این فایل شامل اطلاعات لازم برای اتصال به پایگاه داده است
require_once('config.php');
//تنظیم اکشن
$action=(isset( $_POST['action' ]))? $_POST['action' ]: '';
//بر اساس اکشن تنظیم شده، تابع مربوطه فراخوانی می شود
switch($action)
{
case "reserve" : insert_reserve(); break;
default : display_form_re serve('','','', '','','','','', '','',''); break;
}
در واقع با استفاده از پارامتر Action می توانیم تصمیم بگیریم که قرار است فرم نمایش داده شود و یا قرار است اطلاعات ذخیره شود. یعنی برای بار اول که فایل rezerve_text.ph p فراخوانی می شود مقدار پارامتر action خالی است، بنابراین متد display_form_re serve اجرا می شود، اما اگر کاربر روی دکمه ذخیره کلیک کرد، پارامتر action با مقدار reserve به سرور ارسال می شود و چون وِیژگی action در عنصر form با PHP_SELF تنظیم شده بنابراین مقدار پارامتر action به فایل جاری یعنی rezerve_text.ph p ارسال می شود و دوباره به دستور switch می رسیم و چون اینبار پارامتر action مقداری معادل "reserve" دارد بنابراین متد insert_reserve فراخوانی خواهد شد.
سلام
این کارو کنید عالی میشه مممنونتون هم هستیم
با سلام
میخواستم خواهش کنم که به صورت تیتر وار مراحل انجام رو بگین که به چه ترتیبی باید بریم جلو بعد از طراحی قالب با تشکر از اموزش های خوبتون
سلام
مراحل انجام پروژه رزرو هتل بصورت زیر خواهد بود:
1- طراحی پایگاه داده که فقط شامل دو جدول ساده می باشد. (در Root اصلی پروژه فایل DB.sql)
2- طراحی قالب Master Page که در Root اصلی پروژه در فایل master.php قرار دارد. در این مرحله همزمان باید استایل پروژه نیز تهیه شود که خصوصیات CSS مورد نیاز در فایل style_persian.c ss که در پوشه Style قرار دارد ذخیره خواهد شد..
3- تنظیم اطلاعات اتصال به پایگاه داده در یک فایل به نام مثلا config.php که در Root اصلی پروژه وچود دارد.
4- استفاده از Master Page با روشی که در کامنتهای قبلی توضیح داده شده است برای صفحات مختلف پروژه ...
5- Include کردن فایل config.php در هر جایی که نیاز به اتصال به پایگاه داده باشد.
سلام
if(@mail($to,$subj2,$mesg,$headers))
{
message("ایمیل شما با موفقیت به مديريت ارسال شد .");
}
ایا در شرط داخل if ایمیل فرستاده می شه ؟
با سلام.
بله!!!
در شرط ایمیل ارسال میشه، و در صورت ارسال درست مقدار خروجی 1 و در صورت عدم ارسال خروجی 0 رو بر میگردونه.
if هم به مقدار خروجی از تابع mail نگاه میکنه، اگر mail ارسال بشه، شرط برقرار شده و نتیجهی «موفقیتآمیز ارسال پیام» نمایش داده میشه.
سلام
فرق کابر register با کاربر admin چیه مگه داخل پروژه پنل برای کاربران نیست ؟
اگر یک کابر وارد سایت بشه چه فرقی در نمایش به وجود می اید ؟
با سلام.
کاربر admin امکان اعمال یک سری موارد مدیریتی رو داره که کاربر رجیستر نمیتونه انجام بده. کاربر رجیستر صرفا در حیطه ی خودش میتونه عملیات انجام بده، ولی در ادمین حیطه شامل سایر کاربران دیگر هم هست.
با سلام
میشه در مورد این کد ها یکم توضیح بدید؟define('DBHOST', 'localhost');
define('DBUSER', 'root');
define('DBPASS', '');
define('DBNAME', 'beyamooz_hotel ');
با سلام.
در زبانهای برنامهنویسی متغیرها نقشی اساسی برای نگهداری موقت اطلاعات دارن. اما نکتهای که در مورد متغیرها هست، همونطور که از اسمش هم پیداست، متغیر بودن آنهاست. یعنی در طول برنامه ممکنه مقدارشون بر حسب نیاز تعریف کنه.
گاهی مواقع ما نیاز داریم از متغیرهایی استفاده کنیم، که مقدارشون ثابت باشه، و در طول اجرای برنامه مقدارشون تغییر نکنه. اگر هم قصد تغییر مقدارشون رو داشته باشیم، این اجازه رو به ما نده.
به متغیرهایی که مقدارشون در طول برنامه ثابت بمون، ثابت یا Constant گفته میشه.
برای تغریف این نوع متغیرها میشه از تابع defile(nameCons tant, value); //comment استفاده کرد.
nameConstant نام ثابت ما و value مقدار موردنظر برای آن است. این مقدار در طول برنامه تغییر نخواهد کرد. مثلا کد زیر مقدار عدد پی رو برابر 3.14 قرار میده.
define(PI, 3.14); //comment
یه قرارداد نانوشته هم بین برنامهنویسان هست که برای اسم ثابتها معمولا از حروف بزرگ استفاده میشه، این حرکت اجباری نیست، ولی بهتره برای فهم خودتون و سایرین در آینده از این قانون نانوشته پیروی کنید.
با سلام
من مقدار کمی پی اچ پی بلدم ( در حد این اموزش) اما html ، css و jquery خوبه
ایا می توانم یکی از پروژه های PHP را خریداری کنم ؟
اگر می توانم کدام پروژه بهتره برای شروع است؟
سلام
پیشنهاد می کنم با پروژه رزرو هتل کار عملی را شروع کنید ولی قبل از هر چیز باید بصورت دقیق فصل 4 آموزش PHP یعنی "آموزش پایگاه داده" را مطالعه نموده باشید و با دستورات Prepare آشنا باشید.
به نقل از امیر پهلوان صادق:
منظورتون از کلاس دهی در کامنت بالا چیه؟ دقیقا کجای پروژه ازش استفاده میکنید؟
منظور از کلاس، در واقع همان کلاس های CSS است.
سلام و خسته نباشید
چرا پروژه هنگام ورود به عنوان مدیر و در پایگاه داده اسمهای ذخیره شده با ؟؟؟؟؟ نشون داده میشن؟
با سلام.
بعد از اتصال به پایگاه داده و قبل از اجرای هر کوئری، کوئری زیر رو اجرا کنید:
mysqli_query($conn, 'SET NAMES "UTF-8"');
البته مقدار conn$ در واقع اتصال شما به دیتابیس هست. با توجه به اینکه کجا کانکشن رو میسازید این عبارت رو بعدش درج کنید.
در سمت html در بخش head تگ متای زیر رو درج کنید:
<meta charset="utf-8" />
سلام اقا قسمت پایگاه داده درست شد فقط قسمت مدیریت ->تمام مشتریان هنوز بصورت ؟؟؟ هستن
سلام
اگر هنگام ساخت پایگاه داده، Collation را روی Uft8_Persian_ci قرار داده بودید به این مشکل بر نمی خوردید، بنابراین یکبار دیگر برنامه PHPMyAdmin را اجرا نموده و پایکاه داده پروژه رزرو هتل یعنی beyamooz_hotel را باز کنید و در قسمت Operation مورد مذکور را تغییر دهید.
همچنین در کل پروژه هر جا با کد زیر مواجه شدید، اسکریبتی که در خط 2 با رنگ قرمز متمایز شده را اضافه کنید:$conn= new mysqli(DBHOST, DBUSER, DBPASS,DBNAME);
$conn->set_charset('utf8');البته می توانید یکبار دیگر، پروژه رزرو هتل در PHP را دانلود نمایید، من در تمام فایل ها آنرا اضافه کردم.
سلام فیلمی که قولشو دادید چی شد؟لطفا فیلمشو برای خرید قرار بدین
با عرض سلام و شرمندگی ... متأسفانه فرصت نشده که فیلم آموزشی مربوط به پروژه هتل را آماده کنم ... اما فکر می کنم با توجه به دانش شما توضیحات و کامنت های داخل کد کافی باشه ...
باز هم عذرخواهی می کنم
لطفا به صورت فیلم هم قرار بدین
اگه میشه آموزش تبدیل قالب html به وردپرس رو هم آموزش بدین
سلام خسته نباشین
من نمیدونم این پروژه رو کی روی سایتتون گذاشتین ولی به هرحال لینک دانلودش دیگه کار نمیکنه خواهش میکنم یه لینک دیگه بزارین من به این کدها خیلی احتیاج دارم
ممنون مرسی
سلام، ممنون ...
مشکل برطرف شد.
سلام خسته نباشین ،
تو پروژه قسمت منوها امکانش هست این تیکه را توضیح دهید ،ممنون میشم
for (var i = 0; i < document.links. length; i++) {
if (document.links .href == document.URL) {
document.links. className = 'active';
}
}
سلام
بالای تمام صفحات پروژه رزرو هتل، از یک منو استفاده شده است، صورت مسئله این است که چه کار کنیم تا وقتی کاربر روی یکی از آیتم های منو کلیک کرد، ظاهر آن تغییر کند ...!؟
در کد بالا و در قسمت حلقه، اسکریبت document.links. length تعداد کل لینک ها را برمی گرداند، حالا فقط کافی است روی تک تک لینک ها حرکت کنیم و از بین آنها اونی که href اش با URL صفحه یکسان است را کلاس دهی کنیم.
سلام
ببخشید فیلم آموزشی پروژه که قولش دادین آماده نشد؟
ممنون
سلام
متأسفانه به دلیل مشغله زیاد هنوز آماده نشده است. با این حال، آماده پاسخ گویی سوالات شما کاربران محترم هستیم.
سلام لطفا فیلم ها را قرار بدین
سپاس
سلام
ببخشید در پروژه چه طور می توان یک کاربرازنوعadmin ساخت؟چون به دصورت پیش فرض register است؟
سلام
اگر به کوئری ساخت جدول users در زیر توجه کنید، متوجه خواهید شد که نام کاربری در پروژه هتل یکتا است، بنابراین امکان ساخت دو نام کاربری admin وجود ندارد.
CREATE TABLE `users` (
`u_id` int(11) NOT NULL AUTO_INCREMENT,
`u_username` varchar(150) NOT NULL DEFAULT '',
`u_email` varchar(100) NOT NULL DEFAULT '',
`u_password` varchar(100) NOT NULL DEFAULT '',
`u_usertype` varchar(25) NOT NULL DEFAULT 'register',
`u_activation` bit(1) NOT NULL DEFAULT b'1',
PRIMARY KEY (`u_id`),
UNIQUE KEY `username` (`u_username`) USING BTREE
)
نه منظورم اسمadminنیست بلکه نوع adminکه اجازه ورود به بخش مدیریت رو داشته باشه
آهان ببخشید...! برای ساخت یک کاربر از نوع admin باید بصورت زیر عمل نمود.
1- ابتدا کاربر مورد نظر بصورت عادی ثبت نام می کند.
2- سپس مدیر سایت Login کرده و نوع کاربر مورد نظر را به "admin" تغییر می دهد.
ممنون.
سلام
ببخشید چرا درپروژه در بعضی جاها برای یک عمل خاص دو تا فایل در نظر گرفته شده مثلا about.phpوabout _text.php آیا اشکالی به وجود می آمد اگر;('include_o nce('master.php را در خود صفحه about_text.php می آوردیم ودیگر از about.phpاستفاد ه نمی کردیم؟
سلام
نحوه ی پیاده سازی مسترپیج در پروژه رزرو هتل:
قبل از اینکه نحوه ی پیاده سازی مسترپیچ را توضیح دهیم، شما باید با مفهوم مسترپیج آشنا باشید. اگر یکبار دیگر به دموی پروژه رزرو هتل نگاه کنید (www.beyamooz.com/demo/beyamooz-hotel/)، متوجه خواهید شد که قسمت هایی مثل، منوی بالا و یا ماژول های سمت چپ، مثل "ورود کاربران" و ... در تمامی صفحات وجود دارند و تنها قسمتی که تغییر می کند پایین منو و سمت راست است. بنابراین یک مستجر پیج شامل چند قسمت ثابت و یک قسمت متغییر است.
اسکریبت زیر، مربوط به فایل master.php است که در واقع مسترپیج ما رو تشکیل می دهد:<?php
session_start();
?>
<!DOCTYPE html>
<html>
<head>
<title>سا يت رزرو هتل</title&g t;
<meta http-equiv="Con tent-Type" content="text/h tml; charset=utf-8"& gt;
<link href="/style/sty le_persian.css" rel="stylesheet">
</head>
<body>
<div id="container">
<?php include_once("m enu.php"); ?>
<div id="main">
<?php include_once("s lider.php"); ?>
<div id="left">
<?php include_once("l ogin.php"); ?>
<?php include_once("a bout_text.php") ; ?>
<?php include_once("k hadamat_text.ph p"); ?>
</div>
<div id="right">
<?php include($page_content);?>
</div>
<div style="clear:both;"></div>
</div>
</div>
<?php include_once("f ooter.php"); ?>
</body>
</html>
اگر به قسمت قرمز رنگ توجه فرمایید، از یک متغییر بعنوان پارامتر تابع include استفاده کرده ایم. در واقع تنها قسمتی از فایل master.php است که قابلیت تغییر دارد و بقیه ی موارد در هر بار اجرای master.php ثابت خواهند بود.
حالا اجازه دهید تا از دید کاربران به مسئله نگاه کنیم.
بار اول که پروژه اجرا می شود یعنی وقتی به آدرس www.beyamooz.com/demo/beyamooz-hotel/ می روید طبیعتاً فایل index.php اجرا می شود، محتوای فایل index.php شامل اسکریبت زیر است:<?php
$page_content = 'home_text.php';
include_once('master.php');
?>
همان طور که در کد بالا مشاهده می کنید، در خط اول، متغییر page_content$ با مقدار "home_text.php" تنظیم شده است و بلافاصله اسکریبت فایل master.php با استفاده از متد include_once به کدمان اضافه می شود. حالا فایل index.php بصورت زیر شده است:<?php
$page _content = 'home_text.php';
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<head>
<title>سا يت رزرو هتل</title&g t;
<meta http-equiv="Con tent-Type" content="text/h tml; charset=utf-8"& gt;
<link href="/style/sty le_persian.css" rel="stylesheet">
</head>
<body>
<div id="container">
<?php include_once("m enu.php"); ?>
<div id="main">
<?php include_once("s lider.php"); ?>
<div id="left">
<?php include_once("l ogin.php"); ?>
<?php include_once("a bout_text.php") ; ?>
<?php include_once("k hadamat_text.ph p"); ?>
</div>
<div id="right">
<?php include($page _content);?>
</div>
<div style="clear:both;"></div>
</div>
</div>
<?php include_once("f ooter.php"); ?>
</body>
</html>
?>
حالا به جواب سوالی که در قسمت قبل در ذهنتان ایجاد شده بود رسیدید و در واقع متوجه شدید که چگونه متغییر page_content$ مقدار دهی می شود ...!
اما نکته ی بسیار مهم که مورد سوال دوست عزیزمون "صبا" نیز بوده است این است که ...!
اگر به تابع include که با رنگ قرمز متمایز شده توجه نمایید، متوجه خواهید شد که در اثر اجرای این خط کد، محتوای فایل home_text.php در قسمت یا فضای متغیر مسترپیج قرار خواهد گرفت، در صورتی که اگر طبق فرمایش "صبا" در انتهای فایل home_text.php کد مسترپیج را include کرده بودیم این اتفاق نمی افتاد.
پس در اینجا مجبوریم از هر صفحه در پروژه دو فایل داشته باشیم. یکی از این فایل ها مربوط به محتوای اصلی صفحه مورد نظر است (about_text.php ) و دیگری برای مقدار دهی متغییر page_content$ و include کردن مسترپیج (about.php) ...
امیدوارم توضیحات بنده برای شما قابل فهم بوده باشد.
ایا میشه گفت که در اینجا ما داریم یک فایل رو به یک صفحه پیوست می زنیم؟
اگه منظورتون استفاده از دستور include یا require هست، باید بگم که بله!
زمانی که از این دستورات استفاده میکنیم، در واقع داریم صفحه موردنظر رو به صفحه ی خودمون پیوست میکنیم. یعنی هنگامی که این صفحه جاری اجرا بشه، صفحه موردنظری که لینک شده هم به فایل پیوست و اجرا میشه.
چرا در خط 28 از دستور include_once استفاده نمی کنیم من امتحان کردم اسکریپت درست اجرا شد
ای دلیل خاصی داره استفاده از include ؟
دلیل خاصی نداره!!!
دستور include_once فایل موردنظر رو در کل اجرای اسکریپت فقط یک بار در صفحه بارگذاری میکنه، ولی دستور include به تعداد دفعاتی که آمده، صفحه موردنظر رو بارگذاری میکنه.
فرقی نمیکنه از هر کدام استفاده کنیم?(در این فایل)
نحوه استفاده ی هر کدوم رو توضیح دادم.
این بستگی به شما داره که از کدومش استفاده کنید. ولی در این مثال نه فرقی نمیکنه.
واقعا ممنونم مثل همیشه عالی بود.
یا علی
با تشکر از سایت بسیار عالیتون
خیلی کامل و مفید بود
ممنون ممنون ممنون ممنون ممنون
باسلام
فیلم آموزشی کی آماده میشه؟
ممنون از سایت خوبتون
سلام، متأسفانه به دلیل مشغله زیاد، هنوز موفق به تهیه ی آن نشده ایم. ان شا الله در سال جدید آماده خواهد شد.
سلام شما میگین اینجا سوالمو نپرسم رفتم قسمت سی اس اس پرسیدم ولی جواب ندادین.من این سوالو دوبار پرسیدم.
یک کد میخوام بذارم تو قسمت پست که کد اجرا نشه و وقتی پست میکنم کد برای دیگران دیده بشه.
مرسی
سلام، نمی دونم منظورتون رو درست متوجه شدم یا نه ...! ولی اگر منظورتون اینه که قصد دارید در قسمت "دیدگاه ها" کد HTML ی را درج کنید، باید عرض کنم که بدلیل حفظ امنیت سایت، تمام کلماتی که بین علامت بزرگتر، کوچکتر قرار می گیرند، بصورت اتوماتیک حذف می شوند.
راه حل؟
برای تایپ کردن تگ های HTML در قسمت دیدگاه ها، باید بجای علامت بزرگتر و کوچکتر از character entity های جایگزین استفاده کنید. یعنی بجای علامت > از ;lt& و بجای علامت < از ;gt& استفاده کنید.
برای کسب اطلاعات بیشتر در مورد character entity به لینک زیر مراجعه فرمایید:
www.beyamooz.com/html/138-advanced/358
و اما بعد از اینکه کد HTML یا اسکریبت تان را تایپ کردید، برای اینکه خطوط شماره گذاری بشوند و داخل کادر اسکریبت قرار بگیرند، بعد از اینکه کل اسکریبت تان را انتخاب کردید، از آیکن های بالای ادیتور مربوط به دیدگاه ها، روی آیکن کلیک فرمایید.
مثال: می خواهیم تگ a را داخل کادر اسکریبت قرار دهیم:<a href="http://ww w.beyamooz.com" alt="BeYaMooZ" >beyamooz.co m</a>
سلام
آقای صادق اموزش ویدیویی رو قراره درست کنید؟
سلام، ان شا الله ...
سلام.
یک اسلاید میخوام بذارم تو وبم کدش چی میشه؟برای هر عکس میخوام یک لینک جدا بدم
مرسی
سلام، لطفاً سوالات تون مربوط به پروژه هتل باشه ...
www.beyamooz.com/jquery/340-jquery-plugin/2608
سلام از اطلاعات اینجا در وبلاگم با ذکر منبع استفاده کنم مشکل نداره؟یعنی کپی کنم اطلاعاتو
ممنون
سلام
با ذکر منبع اشکالی نداره ...
برای ارسال ایمیل با استفاده از contact_us_text من آدرس ایمیل خودم رو وارد کردم ولی ایمیلی بهم ارسال نمی شه.کار خاصی باید کرد؟
اگر پروژه، روی کامپیوتر شخصی شماست، ارسال ایمیل انجام نخواهد شد. در واقع به سرویس ارسال ایمیل نیاز هست. (SMTP)
سلام
ببخشید با توجه به فایل DB.sql، مفهوم قسمت های قرمز رنگ در کوئری زیر چیست؟SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `reserve`
-- ----------------------------
DROP TABLE IF EXISTS `reserve`;
CREATE TABLE `reserve` (
`r_id` int(11) NOT NULL AUTO_INCREMENT,
`r_uid` int(11) DEFAULT NULL,
`r_code_meli` char(32) COLLATE utf8_persian_ci NOT NULL,
`r_name` char(32) COLLATE utf8_persian_ci NOT NULL,
`r_fname` char(32) COLLATE utf8_persian_ci NOT NULL,
`r_tel` char(32) COLLATE utf8_persian_ci NOT NULL,
`r_code_posti` char(32) COLLATE utf8_persian_ci NOT NULL,
`r_date_vorod` char(32) COLLATE utf8_persian_ci NOT NULL,
`r_date_khoroj` char(32) COLLATE utf8_persian_ci NOT NULL,
`r_meghdar_egha mat` char(32) COLLATE utf8_persian_ci NOT NULL,
`r_tedad_otagh` char(32) COLLATE utf8_persian_ci NOT NULL,
`r_tedad_kodak` char(32) COLLATE utf8_persian_ci NOT NULL,
`r_adres` varchar(255) COLLATE utf8_persian_ci NOT NULL,
PRIMARY KEY (`r_id`),
KEY `foreign_key_r_ uid_uid` (`r_uid`)
) ENGINE=MyISAM AUTO_INCREMENT= 34 DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci;
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`u_id` int(11) NOT NULL AUTO_INCREMENT,
`u_username` varchar(150) NOT NULL DEFAULT '',
`u_email` varchar(100) NOT NULL DEFAULT '',
`u_password` varchar(100) NOT NULL DEFAULT '',
`u_usertype` varchar(25) NOT NULL DEFAULT 'register',
`u_activation` bit(1) NOT NULL DEFAULT b'1',
PRIMARY KEY (`u_id`),
UNIQUE KEY `username` (`u_username`) USING BTREE
) ENGINE=MyISAM AUTO_INCREMENT= 52 DEFAULT CHARSET=utf8;
خط 1: با استفاده از گزینه FOREIGN_KEY_CHE CKS می توان تعیین کرد که آیا محدودیت "کلید خارجی" چک شود یا خیر؟ همان طور که در کوئری بالا مشاهده می کنید، دو جدول reserve و users ایجاد شده و در ادامه، تعدای رکورد درج می شود. اما اگر بیشتر دقت کنید در خط 21 فیلد r_uid بعنوان کلید خارجی تعریف شده است و زمانی که میخواهیم رکوردهای جدول reserve را درج کنیم اجرای کوئری با خطا مواجه می شود مگر اینه گزینه FOREIGN_KEY_CHE CKS را با مقدار 0 تنظیم کنیم.
خط 22: در این قسمت گزینه های اختیاری جدول تنظیم شده است. بعنوان مثال مقدار تنظیم شده برای گزینه COLLATE مشخص می کند که مرتب سازی فیلدهای جدول بر چه اساس انجام شود.
خط 33: با استفاده از محدودیت UNIQUE در اینجا تعیین می کنیم که فیلد u_username باید یکتا باشد، یعنی نمی توانیم دو نام کاربری یکسان داشته باشیم. برای اطلاعات بیشتر به لینک زیر مراجعه کنید:
www.beyamooz.com/sql/101-advanced/275
سلام و عرض خسته نباشید
اگه توضیحات ساخت پروژه را به صورت فیلم قراره بزارید، لطفا اینکار رو انجام بدید .
خیلی ممنون
سلام خیلی زحمت کشیدید که این اموزش رو قرار دادید
توضیحات ساخت پروژه را به صورت فیلم آموزشی نیز قرار بدید
با تشکر
سلام
میخواستم بدونم این پروژه داینامیکه؟؟؟
منظورم اسلایدشو ، گالری تصاویر و ... است
سلام، اطلاعات مربوط به رزرو، در پایگاه داده ذخیره می شود، همچنین کاربران می توانند عضو سایت شده و با نام کاربری خود اقدام به رزرو نمایند. بنابراین با این دید که مدیر سایت با ورد به پنل مدیریت، می تواند اطلاعات رزروی و همچنین اطلاعات اعضاء را مشاهده نماید می توان گفت این پروژه داینامیک است.
ولی اسلایدشو، منوها و گالری تصاویر به صورت استاتیک است.
سلام
بعد از خرید پروژه چه طور sqlآن را اجرا کنیم؟
import که می کنیم خطا می دهد؟
سلام، برای ایجاد پایگاه داده پروژه هتل به صورت زیر عمل نمایید:
1- اجرای phpmyadmin
2- ایجاد پایگاه داده beyamooz_hotel
مطابق شکل زیر برای ایجاد پایگاه داده جدید، از سمت چپ روی لینک "New" کلیک نمایید:
سپس در قسمت Create database، نام پایگاه داده را با مقدار beyamooz_hotel تنظیم کرده و Collation را روی Uft8_Persian_ci قرار دهید و نهایتاً روی دکمه Create کلیک نمایید:
3- ایجاد جداول
در شاخه اصلی پروژه هتل، فایل DB.sql را با ویرایشگر Notepad باز کرده و محتوای آن را کپی کنید.
سپس در phpmyadmin در حالی که پایگاه داده beyamooz_hotel فعال است، روی تب "SQL" کلیک نمایید.
سپس مطابق شکل زیر، محتوای کپی شده را در کادر مشخص شده Past نمایید و نهایتاً روی دکمه "Go" کلیک نمایید:
4- نمای جداول پایگاه داده
برای دیدن جداول پایگاه داده beyamooz_hotel از سمت چپ، روی آیکن "Refresh" کلیک نمایید:
ممنون از جواب کامل وخوبتون اگه این فیلم آموزشی که گفتید رو بزارید خیلی ممنون میشم.
منتظر فیلم هستیم اگه میشه قرار بدین
بله اگه فیلم بزارید ممنون میشیم.
فیلم آموزشی را لطفا بگزارید.
فیلم آموزش پروژه رزرو هتل، اضافه گردید.
سلام و تشکر فراوان
در صورت امکان برای asp.net نیز آموزش پروژه محور بزارید.
موفق و سربلند باشین
سلام، در لینک زیر می توانید، پروژه فروش فیلم در ASP.NET را خریداری فرمایید:
www.beyamooz.com/component/jshopping/product/view/1/9?Itemid=0
سلام
من پروژه را خریداری کردم میشه یه توضیح کلی در مورد فایلهای php که وجود داره-ترتیب اجراشون و.. هم برام ارسال کنید.ممنون از سایت خوبتون
سلام و تشکر بخاطر خریدتون ...
در مطلب بالا، قسمت "ساختار پوشه ها در پروژه هتل" اضافه شد.
ممنون ولی منظور من یه توضیح فارسی روی کدها مثل ماژول "ورود کاربران" بود.
ممنون می شم روی کدهای ددیگه هم توضیح بزارید ودوباره برام بفرستید.
علاوه بر صفحه ورود کاربران، صفحات دیگر این پروژه نیز Commentگذاری شده است،
شاید منظورتون چیز دیگری است ...!؟ اگر قسمت خاصی از کدها را متوجه نمی شوید، بفرمایید تا توضیحات بیشتر ارائه شود.
با سلام
من باآموزش های شما از phpو j -queryپیش رفتم والان شدیدا به یک پروژه تستی نیاز دارم. خواستم بدونم در این پروژه از j -query هم استفاده کردین؟و در کل کدها پایگاه داده بر اساس MySQLi Object-oriented نوشته شده یا MySQLi Procedural؟
ممنون
سلام، در پروژه هتل از jQuery در حد اسلایدر بالای صفحات استفاده شده است. و همچنین برای اجرای کوئری های مربوط به پایگاه داده از روش MySQLi Object-oriented استفاده شده است.
سلام
برای خرید پروژه چرا ادرس میگیره سایت
برای تحویل پروژه از ایمیل استفاده نمیکنید ؟
سلام، ابتدا تشکر می کنم از خریدتون ...
بله حق با شماست ولی در آینده قصد داریم برای افرادی که با سرعت اینترنت مشکل دارند، خرید پستی رو قرار بدیم که در این صورت آدرس نیاز خواهد بود.
برای دانلود پروژه مشکی که وجود نداشت؟
نه مشکلی نبود
ممنون از این که به پیغامهایی که کاربران برای شما میگذارن توجه می کنید
موفق باشد