- سطح پروژه: دانشجویی
- پیش نیاز ها: 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
باید به شما دوست عزیز اطمینان داد که با دیدن فیلم های آموزشی دیگر، مثل پروژ بالا و یا پروژه ساخت فروشگاه، شما قادر خواهید بود، براحتی با استفاده از متدهای و آموزش های کسب شده، پروژه مورد نظرتان (پروژه سایت گردشگری) را پیاده سازی نمایید.
من خرید کردم خوبه. آموزشو هنوز شروع نکردم ایشالا انی که مد نظرم بود باشه .
خیلی ممنون .
این کارو کنید عالی میشه مممنونتون هم هستیم
میخواستم خواهش کنم که به صورت تیتر وار مراحل انجام رو بگین که به چه ترتیبی باید بریم جلو بعد از طراحی قالب با تشکر از اموزش های خوبتون
مراحل انجام پروژه رزرو هتل بصورت زیر خواهد بود:
1- طراحی پایگاه داده که فقط شامل دو جدول ساده می باشد. (در Root اصلی پروژه فایل DB.sql)
2- طراحی قالب Master Page که در Root اصلی پروژه در فایل master.php قرار دارد. در این مرحله همزمان باید استایل پروژه نیز تهیه شود که خصوصیات CSS مورد نیاز در فایل style_persian.css که در پوشه Style قرار دارد ذخیره خواهد شد..
3- تنظیم اطلاعات اتصال به پایگاه داده در یک فایل به نام مثلا config.php که در Root اصلی پروژه وچود دارد.
4- استفاده از Master Page با روشی که در کامنتهای قبلی توضیح داده شده است برای صفحات مختلف پروژه ...
5- Include کردن فایل config.php در هر جایی که نیاز به اتصال به پایگاه داده باشد.
[dir=#555] if(@mail($to,$subj2,$mesg,$headers))
{
message("ایمیل شما با موفقیت به مديريت ارسال شد .");
}[/dir]
ایا در شرط داخل if ایمیل فرستاده می شه ؟
بله!!!
در شرط ایمیل ارسال میشه، و در صورت ارسال درست مقدار خروجی 1 و در صورت عدم ارسال خروجی 0 رو بر میگردونه.
if هم به مقدار خروجی از تابع mail نگاه میکنه، اگر mail ارسال بشه، شرط برقرار شده و نتیجهی «موفقیتآمیز ارسال پیام» نمایش داده میشه.
فرق کابر register با کاربر admin چیه مگه داخل پروژه پنل برای کاربران نیست ؟
اگر یک کابر وارد سایت بشه چه فرقی در نمایش به وجود می اید ؟
کاربر admin امکان اعمال یک سری موارد مدیریتی رو داره که کاربر رجیستر نمیتونه انجام بده. کاربر رجیستر صرفا در حیطه ی خودش میتونه عملیات انجام بده، ولی در ادمین حیطه شامل سایر کاربران دیگر هم هست.
میشه در مورد این کد ها یکم توضیح بدید؟[dir=#555]define('DBHOST', 'localhost');
define('DBUSER', 'root');
define('DBPASS', '');
define('DBNAME', 'beyamooz_hotel');[/dir]
در زبانهای برنامهنویسی متغیرها نقشی اساسی برای نگهداری موقت اطلاعات دارن. اما نکتهای که در مورد متغیرها هست، همونطور که از اسمش هم پیداست، متغیر بودن آنهاست. یعنی در طول برنامه ممکنه مقدارشون بر حسب نیاز تعریف کنه.
گاهی مواقع ما نیاز داریم از متغیرهایی استفاده کنیم، که مقدارشون ثابت باشه، و در طول اجرای برنامه مقدارشون تغییر نکنه. اگر هم قصد تغییر مقدارشون رو داشته باشیم، این اجازه رو به ما نده.
به متغیرهایی که مقدارشون در طول برنامه ثابت بمون، ثابت یا Constant گفته میشه.
برای تغریف این نوع متغیرها میشه از تابع defile(nameConstant, value); //comment استفاده کرد.
nameConstant نام ثابت ما و value مقدار موردنظر برای آن است. این مقدار در طول برنامه تغییر نخواهد کرد. مثلا کد زیر مقدار عدد پی رو برابر 3.14 قرار میده.
define(PI, 3.14); //comment
یه قرارداد نانوشته هم بین برنامهنویسان هست که برای اسم ثابتها معمولا از حروف بزرگ استفاده میشه، این حرکت اجباری نیست، ولی بهتره برای فهم خودتون و سایرین در آینده از این قانون نانوشته پیروی کنید.
من مقدار کمی پی اچ پی بلدم ( در حد این اموزش) اما html ، css و jquery خوبه
ایا می توانم یکی از پروژه های PHP را خریداری کنم ؟
اگر می توانم کدام پروژه بهتره برای شروع است؟
پیشنهاد می کنم با پروژه رزرو هتل کار عملی را شروع کنید ولی قبل از هر چیز باید بصورت دقیق فصل 4 آموزش PHP یعنی "آموزش پایگاه داده" را مطالعه نموده باشید و با دستورات Prepare آشنا باشید.
منظورتون از کلاس دهی در کامنت بالا چیه؟ دقیقا کجای پروژه ازش استفاده میکنید؟
چرا پروژه هنگام ورود به عنوان مدیر و در پایگاه داده اسمهای ذخیره شده با ؟؟؟؟؟ نشون داده میشن؟
بعد از اتصال به پایگاه داده و قبل از اجرای هر کوئری، کوئری زیر رو اجرا کنید:
[dir=#555]mysqli_query($conn, 'SET NAMES "UTF-8"');[/dir]
البته مقدار conn$ در واقع اتصال شما به دیتابیس هست. با توجه به اینکه کجا کانکشن رو میسازید این عبارت رو بعدش درج کنید.
در سمت html در بخش head تگ متای زیر رو درج کنید:
[dir=#555]<meta charset="utf-8" />[/dir]
اگر هنگام ساخت پایگاه داده، Collation را روی Uft8_Persian_ci قرار داده بودید به این مشکل بر نمی خوردید، بنابراین یکبار دیگر برنامه PHPMyAdmin را اجرا نموده و پایکاه داده پروژه رزرو هتل یعنی beyamooz_hotel را باز کنید و در قسمت Operation مورد مذکور را تغییر دهید.
همچنین در کل پروژه هر جا با کد زیر مواجه شدید، اسکریبتی که در خط 2 با رنگ قرمز متمایز شده را اضافه کنید:[dir=#555]$conn= new mysqli(DBHOST, DBUSER, DBPASS,DBNAME);
[color=#FF0000]$conn->set_charset('utf8');[/color][/dir]البته می توانید یکبار دیگر، پروژه رزرو هتل در PHP را دانلود نمایید، من در تمام فایل ها آنرا اضافه کردم.
باز هم عذرخواهی می کنم
اگه میشه آموزش تبدیل قالب html به وردپرس رو هم آموزش بدین
من نمیدونم این پروژه رو کی روی سایتتون گذاشتین ولی به هرحال لینک دانلودش دیگه کار نمیکنه خواهش میکنم یه لینک دیگه بزارین من به این کدها خیلی احتیاج دارم
ممنون مرسی
مشکل برطرف شد.
پروژه رزرو هتل، شامل 9 ساعت فیلم آموزشی است و مطمئنا بعد از دیدن فیلم ها، می توانید پروژه خود را پیاده سازی نمایید.
در پروژه رزرو هتل، جستجوی اتاق هم وجود دارد ؟
آیا میتوانم با دید گرفتن از این پروژه پروژه کتابخانه آنلاین ایجاد بکنم ؟
خیر جستجوی اتاق وجود ندارد.
اما با توجه به اینکه پروژه رزرو هتل، یک پروژه بسیار سبک است و در عین حال کامل به این معنی که به تمامی موارد مورد نیاز برای یک پروژه در آن پرداخته شده است، شما می توانید از آن الگو گرفته و برای پروژه های دیگر از آن استفاده نمایید.
تو پروژه قسمت منوها امکانش هست این تیکه را توضیح دهید ،ممنون میشم[dir=#555]
for (var i = 0; i < document.links.length; i++) {
if (document.links.href == document.URL) {
document.links.className = 'active';
}
}[/dir]
بالای تمام صفحات پروژه رزرو هتل، از یک منو استفاده شده است، صورت مسئله این است که چه کار کنیم تا وقتی کاربر روی یکی از آیتم های منو کلیک کرد، ظاهر آن تغییر کند ...!؟
در کد بالا و در قسمت حلقه، اسکریبت document.links.length تعداد کل لینک ها را برمی گرداند، حالا فقط کافی است روی تک تک لینک ها حرکت کنیم و از بین آنها اونی که href اش با URL صفحه یکسان است را کلاس دهی کنیم.
1- منظور از تغییرات، جاهایی است که از سایت بیاموز بعنوان پیاده ساز اسم برده شده است که براحتی می توانید آنرا با نام خودتون تغییر بدید.
2- بله شما براحتی می توانید با بررسی کامنت هایی که به ازای تک تک خطوط انجام شده است از روش کار پروژه رزرو هتل آگاه شوید.
اگه لطف کنید ممنون میشم دو خط کد به پروژه اضافه کنید نیاز دارم
1. درسته دو کاربر با یک نام کاربری در پایگاه داده درج نمیشه ولی هنگام ثبت نام هم هیچ خطای نمیده اگه بشه نام کاربری تکراری انتخاب کرد بگه نام کاربری دیگری انتخاب کنید
2. یک دستور دیگه برای کسانی که ثبت نام نکرده باشند حق رزرو اتاق نداشته باشن و هنگام رزرو بگه اول ثبت نام کنید بعد اجازه رزرو دارید
ممنون از رهنمایی شما
دوست عزیز بهترین راه برای آروده کردن نیاز ها شما موارد زیر هستش.
1- چگونه فرم رزرو تنها برای اعضا قابل نمایش باشد.
ٌصفحه مربوط به رزرو اتاق را باز کنید و کد زیر را در خط اول بگذارید
[dir=#555]session_start();
if(isset($_SESSION['u_username']))
{
header('Location: login.php');
} [/dir]
در کد های بالا ابتدا سیشن استارت میشود و سپس اگر سیشن با یوزر ایجاد نشده بود فرم نمایش داده نمی شود و به صفحه لاگین منتقل می شود.
2- برای اینکه خطاطط ببینید ظاهری هنگام اینکه دو یوزر مشابه در سیستم هستش من راه حل ساده ای میگم خدمتتون که خیلی برای شما که ابتدا کار هستید مناسبه تا فقط درکی از کد پیدا کنید.
[dir=#555]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 {} }
}[/dir]
البته باید در نحوه نکارش کد در هنگام کدنویسی در بخش لاگین دقت کنید چون فقط برای نمونه این کد رو گذاشتم براتون.
توضیحات : ما با دستوری به دیتابیس وصل می شیم و بعدش یک شرط گذاشمی که یوزرنیم برابر بود با یوزرنیم ما اون وقت در انتها گفتیم کوری اجرا بشه و اگه تعداد سطر های کوری بیش از 0 بود یعنی یوزرنیم قبلا وجود داشته . این کد تست شده و هیچ مشکلی نداره فقط باید توی دستور elseif حالا اون شرط عضویت رو بذارید یعنی بقیه کد ها عضویت رو .
بهترین راه تقریبا معرفی شده که افراد تازه کار بتونند بدون مشکل چک کننده نام کاربری تکراری هستش یا خیر .
ببخشید فیلم آموزشی پروژه که قولش دادین آماده نشد؟
ممنون
متأسفانه به دلیل مشغله زیاد هنوز آماده نشده است. با این حال، آماده پاسخ گویی سوالات شما کاربران محترم هستیم.
سپاس
ببخشید در پروژه چه طور می توان یک کاربرازنوعadminساخت؟چون به دصورت پیش فرض register است؟
اگر به کوئری ساخت جدول users در زیر توجه کنید، متوجه خواهید شد که نام کاربری در پروژه هتل یکتا است، بنابراین امکان ساخت دو نام کاربری admin وجود ندارد.[dir=#555]
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`),
[color=#FF0000] UNIQUE KEY `username` (`u_username`) USING BTREE[/color]
)[/dir]
1- ابتدا کاربر مورد نظر بصورت عادی ثبت نام می کند.
2- سپس مدیر سایت Login کرده و نوع کاربر مورد نظر را به "admin" تغییر می دهد.
به طور کل برای کار با پایگاه داده شما ابتدا باید یک یوزر و پسورد برای اون پایگاه داده داشته باشید. در کارهای لوکال اکثرا همه از یوزر تعریف شده root و پسورد خالی استفاده میکنن. اما در cpanel که توسط هاستهای اشتراکی در اختیار کاربران قرار میگیره، باید یه یوزر و پسورد تعریف بشه.
سپس پایگاه داده تعریف مییشه. این پایگاه داده باید به یوزر مربوطه وصل بشه تا در پایگاه داده انجام عملیات میسر بشه.
در واقع برای کار با بانک اطلاعاتی باید موارد زیر تعریف شده باشه:
- نام پایگاه داده
- نام کاربری
- پسورد
- مسیر سرور
شما موارد بالا رو چک کنید. اگر درست باشه، اتصال با بانک اطلاعاتی میسر خواهد، و اگر به هر دلیلی نتونید با بانک اطلاعاتی وصل بشید، مشکل یکی از موارد بالاست.
در صورت امکان متن خطا رو بذارید، تا بشه بهتر راهنمایی کرد.
ببخشید چرا درپروژه در بعضی جاها برای یک عمل خاص دو تا فایل در نظر گرفته شده مثلا about.phpوabout_text.php آیا اشکالی به وجود می آمد اگر;('include_once('master.phpرا در خود صفحه about_text.php می آوردیم ودیگر از about.phpاستفاده نمی کردیم؟
نحوه ی پیاده سازی مسترپیج در پروژه رزرو هتل:
قبل از اینکه نحوه ی پیاده سازی مسترپیچ را توضیح دهیم، شما باید با مفهوم مسترپیج آشنا باشید. اگر یکبار دیگر به دموی پروژه رزرو هتل نگاه کنید (www.beyamooz.com/demo/beyamooz-hotel/)، متوجه خواهید شد که قسمت هایی مثل، منوی بالا و یا ماژول های سمت چپ، مثل "ورود کاربران" و ... در تمامی صفحات وجود دارند و تنها قسمتی که تغییر می کند پایین منو و سمت راست است. بنابراین یک مستجر پیج شامل چند قسمت ثابت و یک قسمت متغییر است.
اسکریبت زیر، مربوط به فایل master.php است که در واقع مسترپیج ما رو تشکیل می دهد:[dir=#555]<?php
session_start();
?>
<!DOCTYPE html>
<html>
<head>
<title>سايت رزرو هتل</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="/style/style_persian.css" rel="stylesheet">
</head>
<body>
<div id="container">
<?php include_once("menu.php"); ?>
<div id="main">
<?php include_once("slider.php"); ?>
<div id="left">
<?php include_once("login.php"); ?>
<?php include_once("about_text.php"); ?>
<?php include_once("khadamat_text.php"); ?>
</div>
<div id="right">
<?php [color=#FF0000]include($page_content);[/color]?>
</div>
<div style="clear:both;"></div>
</div>
</div>
<?php include_once("footer.php"); ?>
</body>
</html>[/dir]
اگر به قسمت قرمز رنگ توجه فرمایید، از یک متغییر بعنوان پارامتر تابع include استفاده کرده ایم. در واقع تنها قسمتی از فایل master.php است که قابلیت تغییر دارد و بقیه ی موارد در هر بار اجرای master.php ثابت خواهند بود.
حالا اجازه دهید تا از دید کاربران به مسئله نگاه کنیم.
بار اول که پروژه اجرا می شود یعنی وقتی به آدرس www.beyamooz.com/demo/beyamooz-hotel/ می روید طبیعتاً فایل index.php اجرا می شود، محتوای فایل index.php شامل اسکریبت زیر است:[dir=#555]<?php
$page_content = 'home_text.php';
include_once('master.php');
?>[/dir]
همان طور که در کد بالا مشاهده می کنید، در خط اول، متغییر page_content$ با مقدار "home_text.php" تنظیم شده است و بلافاصله اسکریبت فایل master.php با استفاده از متد include_once به کدمان اضافه می شود. حالا فایل index.php بصورت زیر شده است:[dir=#555]<?php
[color=#FF0000]$page_content = 'home_text.php';[/color]
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<head>
<title>سايت رزرو هتل</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="/style/style_persian.css" rel="stylesheet">
</head>
<body>
<div id="container">
<?php include_once("menu.php"); ?>
<div id="main">
<?php include_once("slider.php"); ?>
<div id="left">
<?php include_once("login.php"); ?>
<?php include_once("about_text.php"); ?>
<?php include_once("khadamat_text.php"); ?>
</div>
<div id="right">
<?php include([color=#FF0000]$page_content[/color]);?>
</div>
<div style="clear:both;"></div>
</div>
</div>
<?php include_once("footer.php"); ?>
</body>
</html>
?>[/dir]
حالا به جواب سوالی که در قسمت قبل در ذهنتان ایجاد شده بود رسیدید و در واقع متوجه شدید که چگونه متغییر page_content$ مقدار دهی می شود ...!
اما نکته ی بسیار مهم که مورد سوال دوست عزیزمون "صبا" نیز بوده است این است که ...!
اگر به تابع include که با رنگ قرمز متمایز شده توجه نمایید، متوجه خواهید شد که در اثر اجرای این خط کد، محتوای فایل home_text.php در قسمت یا فضای متغیر مسترپیج قرار خواهد گرفت، در صورتی که اگر طبق فرمایش "صبا" در انتهای فایل home_text.php کد مسترپیج را include کرده بودیم این اتفاق نمی افتاد.
پس در اینجا مجبوریم از هر صفحه در پروژه دو فایل داشته باشیم. یکی از این فایل ها مربوط به محتوای اصلی صفحه مورد نظر است (about_text.php) و دیگری برای مقدار دهی متغییر page_content$ و include کردن مسترپیج (about.php) ...
امیدوارم توضیحات بنده برای شما قابل فهم بوده باشد.
زمانی که از این دستورات استفاده میکنیم، در واقع داریم صفحه موردنظر رو به صفحه ی خودمون پیوست میکنیم. یعنی هنگامی که این صفحه جاری اجرا بشه، صفحه موردنظری که لینک شده هم به فایل پیوست و اجرا میشه.
ای دلیل خاصی داره استفاده از include ؟
دستور include_once فایل موردنظر رو در کل اجرای اسکریپت فقط یک بار در صفحه بارگذاری میکنه، ولی دستور include به تعداد دفعاتی که آمده، صفحه موردنظر رو بارگذاری میکنه.
این بستگی به شما داره که از کدومش استفاده کنید. ولی در این مثال نه فرقی نمیکنه.
یا علی
خیلی کامل و مفید بود
ممنون ممنون ممنون ممنون ممنون
فیلم آموزشی کی آماده میشه؟
ممنون از سایت خوبتون
یک کد میخوام بذارم تو قسمت پست که کد اجرا نشه و وقتی پست میکنم کد برای دیگران دیده بشه.
مرسی
راه حل؟
برای تایپ کردن تگ های HTML در قسمت دیدگاه ها، باید بجای علامت بزرگتر و کوچکتر از character entity های جایگزین استفاده کنید. یعنی بجای علامت > از ;lt& و بجای علامت < از ;gt& استفاده کنید.
برای کسب اطلاعات بیشتر در مورد character entity به لینک زیر مراجعه فرمایید:
www.beyamooz.com/html/138-advanced/358
و اما بعد از اینکه کد HTML یا اسکریبت تان را تایپ کردید، برای اینکه خطوط شماره گذاری بشوند و داخل کادر اسکریبت قرار بگیرند، بعد از اینکه کل اسکریبت تان را انتخاب کردید، از آیکن های بالای ادیتور مربوط به دیدگاه ها، روی آیکن
مثال: می خواهیم تگ a را داخل کادر اسکریبت قرار دهیم:[dir=#555]<a href="http://www.beyamooz.com" alt="BeYaMooZ" >beyamooz.com</a>[/dir]
آقای صادق اموزش ویدیویی رو قراره درست کنید؟
یک اسلاید میخوام بذارم تو وبم کدش چی میشه؟برای هر عکس میخوام یک لینک جدا بدم
مرسی
www.beyamooz.com/jquery/340-jquery-plugin/2608
ممنون
با ذکر منبع اشکالی نداره ...
ببخشید با توجه به فایل DB.sql، مفهوم قسمت های قرمز رنگ در کوئری زیر چیست؟[dir=#555][color=#FF0000]SET FOREIGN_KEY_CHECKS=0;[/color]
-- ----------------------------
-- 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_eghamat` 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`)
) [color=#FF0000]ENGINE=MyISAM AUTO_INCREMENT=34 DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci;[/color]
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`),
[color=#FF0000]UNIQUE KEY `username` (`u_username`) USING BTREE[/color]
) ENGINE=MyISAM AUTO_INCREMENT=52 DEFAULT CHARSET=utf8;
[/dir]
خط 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 نیز آموزش پروژه محور بزارید.
موفق و سربلند باشین
www.beyamooz.com/component/jshopping/product/view/1/9?Itemid=0
من پروژه را خریداری کردم میشه یه توضیح کلی در مورد فایلهای php که وجود داره-ترتیب اجراشون و.. هم برام ارسال کنید.ممنون از سایت خوبتون
در مطلب بالا، قسمت "ساختار پوشه ها در پروژه هتل" اضافه شد.
ممنون می شم روی کدهای ددیگه هم توضیح بزارید ودوباره برام بفرستید.
شاید منظورتون چیز دیگری است ...!؟ اگر قسمت خاصی از کدها را متوجه نمی شوید، بفرمایید تا توضیحات بیشتر ارائه شود.
من باآموزش های شما از phpو j -queryپیش رفتم والان شدیدا به یک پروژه تستی نیاز دارم. خواستم بدونم در این پروژه از j -query هم استفاده کردین؟و در کل کدها پایگاه داده بر اساس MySQLi Object-orientedنوشته شده یا MySQLi Procedural؟
ممنون
برای خرید پروژه چرا ادرس میگیره سایت
برای تحویل پروژه از ایمیل استفاده نمیکنید ؟
بله حق با شماست ولی در آینده قصد داریم برای افرادی که با سرعت اینترنت مشکل دارند، خرید پستی رو قرار بدیم که در این صورت آدرس نیاز خواهد بود.
برای دانلود پروژه مشکی که وجود نداشت؟
ممنون از این که به پیغامهایی که کاربران برای شما میگذارن توجه می کنید
موفق باشد
عااااااااااالللللللیییی بوذ
مرسی
1- ببخشید راجع به این خط کد کمی توضیح میدین؟و اینکه چرا مثه قسمت های دیگه فراخوانیش نکردیم؟
[dir=#555] require_once(dirname(__FILE__)."/../config.php"); [/dir]
2- در فایل rezerve_text.php هم input ای با type=hidden ...برای چی باید بذاریمش کلا؟
[dir=#555]<input type="hidden" name="action" value="reserve" />[/dir]
1- اگر به Root اصلی پروژه رزرو هتل توجه فرمایید، فایل config.php را خواهید دید. بنابراین برای اضافه کردن این فایل به صفحات و یا فایل هایی که در کنار فایل مذکور قرار دارند می توان از کد زیر استفاده کرد:
[dir=#555]require_once('config.php');[/dir]
اما اگر در Root پروژه رزرو هتل روی فولدر admin کلیک کنید، تعدادی فایل اینجا نیز مشاهده خواهید کرد که در برخی از آنها باز به فایل config.php نیاز داریم، برای اضافه کردن فایل مذکور به این دسته از فایل ها باید بصورت زیر عمل کنیم:
[dir=#555]require_once(dirname(__FILE__)."/../config.php");[/dir]
در واقع ما مجبور هستیم که برای اضافه کردن config.php به فایل های پوشه admin یک قدم به عقب برگردیم، ولی قبل از هر چیز باید آدرس کامل پوشه جاری را بدانید ...! یعنی با استفاده از متد dirname آدرس کامل محل جاری را می توان بدست آورد حالا کافی است که با علامت دو نقطه یعنی .. یک گام به عقب برگردیم.
2- اگر به اسکریبت استفاده شده در فایل rezerve_text.php یکبار دیگر دقت کنید، در ابتدای آن از کد زیر استفاده شده است:
[dir=#555]//اضافه کردن فایل کانفیک به این صفحه
//این فایل شامل اطلاعات لازم برای اتصال به پایگاه داده است
require_once('config.php');
//تنظیم اکشن
$action=(isset($_POST['action']))? $_POST['action']: '';
//بر اساس اکشن تنظیم شده، تابع مربوطه فراخوانی می شود
switch($action)
{
case "reserve" : insert_reserve(); break;
default : display_form_reserve('','','','','','','','','','',''); break;
}[/dir]
در واقع با استفاده از پارامتر Action می توانیم تصمیم بگیریم که قرار است فرم نمایش داده شود و یا قرار است اطلاعات ذخیره شود. یعنی برای بار اول که فایل rezerve_text.php فراخوانی می شود مقدار پارامتر action خالی است، بنابراین متد display_form_reserve اجرا می شود، اما اگر کاربر روی دکمه ذخیره کلیک کرد، پارامتر action با مقدار reserve به سرور ارسال می شود و چون وِیژگی action در عنصر form با PHP_SELF تنظیم شده بنابراین مقدار پارامتر action به فایل جاری یعنی rezerve_text.php ارسال می شود و دوباره به دستور switch می رسیم و چون اینبار پارامتر action مقداری معادل "reserve" دارد بنابراین متد insert_reserve فراخوانی خواهد شد.