PDA

View Full Version : حرفه ای: سایت کاملا هوشمند



armintirand
شنبه 04 دی 1389, 13:44 عصر
سلام
من برای سایت‌هایی که طراحی میکردم برای هر صفحه یک صفحه کامل html طراحی میکردم وتو هر صفحه به صفحه مورد نظر لینک میکردم.
ولی الان میخوام این کارو به عهده php بذارم که تو اجرای این کار مشکل دارم.
اصل کار به این شکله که:
من تو تمام صفحاتم هدر و فوتر ثابتی دارم یکه شامل منو و فایل css و...است.حالا من اومدم صفحه مثلاindex.php رو تبدیل کردم به سه تا فایل به نامهای header.php,body.php,footer.phpوتوی هدر دوتافایل دیگه رو includeکردم تا اینجا مشکلی نیست.وصفحه درست کار میکنه.اما من اومدم توی ایم هدر یک شرط گذاشتم که اگه روی فلان دگمه منو کلیک شده باشه به جای body.php صفحهای که مربوط به اون منو هست رو includeکن خوب مشکل از اینجا شروع میشه که من تو منو از عکس استفاده کردم و کل منوی من یک فرم است که هر منو یک input رو شامل میشه ولی وقتی روی هر منو کلیک میکنم دوباره همون صفحه نشون داده میشه بدون اینکه صفحه مورد نظر من includeبشه.البته یک نکته من تو فرمم submit ندارم چون میخوام با کلیک روی هر کدوم از عکسها کارم انجام بشه.
اگه توضیحاتم کافی نبود یک نمونه کوچیک از کارایی که کردم رو میذارم روش بررسی کنید.
اگه این کار بشه حجم زیادی از فایلهایی که روی هاست آپلود میکنیم کم میشه و علاوه بر اون اعمال تغیرات خیلی راحتتر میشه.

AbiriAmir
شنبه 04 دی 1389, 14:05 عصر
فکر کنم اگه نمونه بزارید بهتره ولی در کل (البته کامل متوجه نشدم) زیاد جالب کار نکردید
اولین پیشنهاد من برای شما استفاده از کلاس قالب هست که اگر مایل باشید بیشتر براتون توضیح میدم
در ضمن شما میتونید عکس ها رو لینک کنید؛ چرا فرم؟؟؟
1- شرط رو چجوری گذاشتید؟
2- به راحتی میتونید با متد get این کار رو بکنید

armintirand
شنبه 04 دی 1389, 15:41 عصر
خوب اگه کلاس قالب رو توضیح بدین ممنون میشم.
ببینید من وقتی با توی فرم روی چیزی کلیک میکنم میتونم اونور چک کنم ببینم روی چی کلیک شده ولی اگه عکس خالی لینک بشه دیگه نمیتونم چک کنم.چون من فرم رو به یک فایل پاس دادم ولی لینکهای معمولی رو که نمیتونم.خوب من یکم از کدم رو میذارم .
این فرم منه:

<form name="lang" action="" method="post"><input type="image" src="style/US.gif" name="eng" alt="English" ><input type="image" src="style/TR.gif" name="turk" alt="Turkce" ></form>
اینم شرط منه:

<?php
if(isset($_post['eng'])){
include("en_body.php");
}elseif(isset($_post['turk'])){
include("turk_body.php");
}else{
include("mousa_index.php");}
include("mousa_footer.php");
?>
که البته هر دوشو توی یک فایل به نام mousa_index.php قرار دادم.

AbiriAmir
شنبه 04 دی 1389, 16:36 عصر
خوب اگه کلاس قالب رو توضیح بدین ممنون میشم.
ببینید من وقتی با توی فرم روی چیزی کلیک میکنم میتونم اونور چک کنم ببینم روی چی کلیک شده ولی اگه عکس خالی لینک بشه دیگه نمیتونم چک کنم.چون من فرم رو به یک فایل پاس دادم ولی لینکهای معمولی رو که نمیتونم.خوب من یکم از کدم رو میذارم .
این فرم منه:

<form name="lang" action="" method="post"><input type="image" src="style/US.gif" name="eng" alt="English" ><input type="image" src="style/TR.gif" name="turk" alt="Turkce" ></form>
اینم شرط منه:

<?php
if(isset($_post['eng'])){
include("en_body.php");
}elseif(isset($_post['turk'])){
include("turk_body.php");
}else{
include("mousa_index.php");}
include("mousa_footer.php");
?>
که البته هر دوشو توی یک فایل به نام mousa_index.php قرار دادم.

راجع به کلاس قالب فکر کنم قبلا توضیح داده باشم
حالا سعی میکنم تو پست بعدی توضیح بدمش

اما راجع به کار شما:

با لینک هم میتونید این کار رو بکنید کافیه اینکار رو بکنید:

<a href="index.php?task=turk"> <img src="..." /> </a>

اونوقت تو فایل phpتون به جای _POST از _GET استفاده کنید :چشمک:

if(isset($_GET['task']) && $_GET['task']=='turk')
{
//your codes
}

armintirand
سه شنبه 07 دی 1389, 16:25 عصر
دوست عزیز اولا من دوست دارم با متد post این کار را انجام بدم ثانیا باز نتونستم جواب بگیرم.
اینم کد فایل mousa_header.php:

<a href="mousa_header.php?task=en"><image src="style/US.gif" name="eng" alt="English" ></a><a href="mousa_header.php?task=turk"><image" src="style/TR.gif" name="turk" alt="Turkce" ></a>
<?php
if(isset($_get['task'])&&$_get['task']=='en'){
include("en_body.php");
}elseif(isset($_get['task'])&&$_get['task']=='turk'){
include("turk_body.php");
}else{
include("mousa_index.php");}
include("mousa_footer.php");
?>
که از طریق منو چک میکنم ببینم روی چی کلیک شده اون رو به جای بدنه صفحه اینکلود میکنم ولی کار نمیکنه؟

armintirand
چهارشنبه 08 دی 1389, 11:22 صبح
دوستان لطفا به سوالم جواب بدید خیلی برام مهمه؟

shahriyar3
چهارشنبه 08 دی 1389, 13:27 عصر
درست متوجه نشدم ولی
بجای اینکه چندین فوتر یا هدر درست کنید برای حالت های مختلف یک فوتر درست کنید با چندین حالت مختلف
مثلا یک شرط بگذارید که چک بکند اگر بر روی یک button کلیک شد این قسمت از شرط اجرا شود در غیر اینصورت (else) این قسمت اجرا شود.
اگر توضیحات بیشتری بگذارید شاید بتوانم در حل مشکل شما بیشتر کمک کنم.

armintirand
چهارشنبه 08 دی 1389, 14:08 عصر
خوب گذاشتم که اقا امیر تونستند قسمتی راهنمایی کنن.
ببین دوست عزیز من یک هدر ثابت و یک فوتر ثابت و بادی های متغییر تو صفحات سایتم دارم و اگه کد بالا رو که گذاشتم نگاه کنید من میخوام با دگمه‌هایی که تو هدر روش کلیک میشه بادی مورد نظر رو اینکلود کنم یعنی تو صفحه اول بادی مربوط به صفحه اصلی و برای هر صفحه دیگه فقط یک بادی بسازم و تو شرط هدر چک میکنم کدوم دگمه کلیک شده تا اون فایل اینکلود بشه ولی نمیدونم چرا به غیر از بادی اصلی بادی های دگمه‌ها کار نمیکنن.
حالا اگه ۴ صفحه هم این بحث ادامه پیدا کنه یکی میاد میگه یک کمی بیشتر توضیح بده تا راهنمایی کنم.ببخشید من کوچیک شماولی توپستهای قبلی توضیح داده بودم.البته قصدم جسارت نبود:چشمک:.یکم کارم گیره عجله دارم.

shahriyar3
چهارشنبه 08 دی 1389, 14:43 عصر
فکر میکنم منظور شما نمایش سایت با زبان های مختلفه درسته؟؟
الگوریتمتون اشتباهه شما اگر سایتتون 20 صفحه داشته باشه و برای هر 20 صفحه بخواهید 3 تا زبان درست کنید اونموقع مجبورید 60 صفحه درست کنید که این اصلا کار درستی نیست.
یه صفحه درست کنید تمام پیغام ها را داخل اون ذخیره کنید به این صورت


switch ($this->language) {
case "fa":
$msg[10] = "";
$msg[11] ="";
break;
case "ara":
$msg[20]="";
.....
حالا این صفحه رو توی تمام صفحات دیگه اینکلود کن
با متد get مقداری رو که میگی ارسال کن به این صفحه و آرایه مورد نظر و که حاوی پیغامه چاپ کن
برای تمام اجزای سایتت میتونی از این روش استفاده کنی.

armintirand
چهارشنبه 08 دی 1389, 15:07 عصر
یعنی شما میگید یک صفحه درست کنم وهمه اطلاعات صفحاتم داخل اون باشه؟
ببینید دوست عزیز من الان فقط میخوام حجم صفحاتم رو به این شکل کم کنم که برای همشون یک هدر و یک فوتر داشته باشم. و ت. ابنکلود کردن مشکل دارم. برای قسمت زبان میخوام مثلا وقتی کاربر en رو انتخاب کرد هم تعیین بشه که توی کدوم بادی هستیم مثلا ارتباط با ما یا چیز دیگه و سپس en رو همراه اون با متد get بفرسته که اگه مشکل اینکلودم حل بشه اونو خودم ردیف میکنم.
دستورات من کدوم قسمتش ایراد داره که کارنمیکنه؟
ممنون

UnnamE
چهارشنبه 08 دی 1389, 16:58 عصر
از همون متد GET استفاده باس بشه
واسه ي تعيين صفحه كه body رو change كني
در ضمن استفاده از فرم كار بسيار مسخره اي حساب ميشه(البته اگه چنين دوست داريد شما بدتر)
بهتر هست چند تا كلاس خوب براي اين كارها بنويسيد وگرنه خيلي درگير اسپاگتي ميشي!

shahriyar3
چهارشنبه 08 دی 1389, 17:02 عصر
این کد در عین غلط بودن الگوریتمش (بشدت) ولی الان درست کار میکنه


<a href="mousa_header.php?task=en"><image src="style/US.gif" name="eng" alt="English" ></a><a href="mousa_header.php?task=turk"><image" src="style/TR.gif" name="turk" alt="Turkce" ></a>
<?php
ob_start();
if(isset($_GET['task'])&&$_GET['task']=='en'){
include_once("en_body.php");
}elseif(isset($_GET['task'])&&$_GET['task']=='turk'){
include_once("turk_body.php");
}else{
include_once("mousa_index.php");}
include_once("mousa_footer.php");
ob_end_flush();
?>

این کد و توی یه صفحه به اسم mousa_header.php ذخیره کنید

armintirand
شنبه 11 دی 1389, 14:27 عصر
ممنون دوست عزیز از تفاوت کد شما و من معلومه که این دستورات رو نذاشتم:

ob_start();
ob_end_flush();

خوب اگه ممکنه نقش این دو دستور رو برام بگین؟
در ضمن اگه در مورد اشکالات الگوریتم کدم هم توضیح بدید ممنون میشم.

Vahid Faraji
شنبه 11 دی 1389, 15:46 عصر
ممنون دوست عزیز از تفاوت کد شما و من معلومه که این دستورات رو نذاشتم:

ob_start();
ob_end_flush();

خوب اگه ممکنه نقش این دو دستور رو برام بگین؟


به اين مقاله مراجعه نمائيد.
http://keramatifar.ir/ShowTopic.php?id=%2057

shahriyar3
شنبه 11 دی 1389, 17:47 عصر
در ضمن اگه در مورد اشکالات الگوریتم کدم هم توضیح بدید ممنون میشم.
این الگوریتم زمان لودینگ صفخات و بالا میبره . و در کل کار اشتباهی هست
شما اگر یک بار اسکریپت هائی که چند زبان رو ساپورت میکنند نگاه کنید متوجه میشوید که هیچ جا از این مدل استفاده نمیکنند.
روش درست و در پست های قبلی توضیح دادم
موفق باشی

armintirand
دوشنبه 13 دی 1389, 17:49 عصر
میشه بیشتر توضیح بدید یا یک سایت که بدون این مشکل باشه معرفی کنید البته php کد رو که نمیشه نگاه کرد ؟

armintirand
پنج شنبه 16 دی 1389, 16:40 عصر
لطفا منو راهنمایی کنید چون کارم لنگه؟من میخوام کل سایتهام رو تابع گرا و شیگرا کنم؟

shahriyar3
پنج شنبه 16 دی 1389, 19:41 عصر
لطفا منو راهنمایی کنید چون کارم لنگه؟من میخوام کل سایتهام رو تابع گرا و شیگرا کنم؟
دوست عزیز
آخرین نسخه کلاس access user رو دانلود کنید
ضمنا برای اینکه بتونید با شی گرائی آشنا بشید برید به سایت phpclasses.org در هر موردی که بخواهید کلاس داره برای خوندن و استفاده کردن

armintirand
شنبه 18 دی 1389, 17:14 عصر
این کلاس access user کارش چی هست؟