سایت خود را بسازید ، به روش saalek110

saalek110

Well-Known Member
HTML:
<form action="/action_page.php">
  <input type="checkbox" id="vehicle1" name="vehicle1" value="Bike">
  <label for="vehicle1"> I have a bike</label><br>
  <input type="checkbox" id="vehicle2" name="vehicle2" value="Car">
  <label for="vehicle2"> I have a car</label><br>
  <input type="checkbox" id="vehicle3" name="vehicle3" value="Boat">
  <label for="vehicle3"> I have a boat</label><br><br>
  <input type="submit" name="action_1" value="Submit">
</form>


فرم دارای چک باکس



جواب دادن به فرم بالا:


PHP:
  if(isset($_POST['action_1']))
{


if (  isset($_POST['vehicle1'])  )
{


}
}
یعنی بعد چک فشره شدن دکمه فرم ، بررسی کرده ایم ببینیم که چک باکس اول تیک خورده یا نه. داخل کروشه های چک خوردن چک باکس اول می توانید کدهای مورد نظر خود را بنویسید. صفت name چک باکس بررسی شده ، نه id اون.
 
آخرین ویرایش:

saalek110

Well-Known Member
جدولی برای تنظیمات:

من یک جدول برای سایت نمونه یعنی این:


ساختم به نام setting:
Screenshot_۲۰۲۴-۰۱-۳۰_۱۲۱۵۳۱.jpg

هر ردیف این جدول برای یک تنظیمات است.
مثلا ردیف اول برای اینه که دکمه های ادیت زیر پست ها نمایش داده شود یا نه.

در یک جای سایت این ردیف جدول دیتابیس تنظیم میشه و در یک جای دیگه سایت به این تنظیمات نگاه میشه و کاری انجام میشه یا نمیشه.

کار با این جدول فرقی با کار با بقیه جدول ها نداره ، با همان کوئری ها باهاش کار می کنیم.

PHP:
  $sql = "UPDATE setting SET num=0 WHERE name='show_edit'";

در کد بالا، ستون num را صفر کردیم ، وقتی ستون name برابر با show_edit بوده.

PHP:
 $sql2 = "SELECT num FROM setting WHERE name='show_edit' ";
....
...
..
            $num=$info2['num'];
....
....
...
if ($num==1)
{
}
دیگه کد را خودتان کامل کنید ، یعنی خط result را اضافه کنید و خط while را.
در کد بالا ، خوندن ستون num است وقتی ستون name برابر با show_edit است.
و بعدش وقتی مقدارش برابر با یک بوده ، دکمه ها نمایش داده شده اند. که کد دکمه ها در بالا نیست ، به جایش بعد if دو تا کروشه گذاشتم ، کد نمایش دکمه ها داخل این دو کروشه قرار می گیرند.
 
آخرین ویرایش:

saalek110

Well-Known Member
در فروم ام، من اجازه پست زدن بدون ثبت نام را دادم. اگر کسی عضو نباشد ، اسم خود را می نویسد.
ولی برای کسانی که بعد لوگین می خواهند پست بزنند ، نباید کادر اسم ظاهر شود ، و یوزر اونها به عنوان نامشان ثبت می شود. به کد زیر نگاه کنید:

PHP:
if (  isset(  $_SESSION["username"] )  )
 {
 $poster=$_SESSION["username"];
 }
 else
 {
echo'Name: <input type="text" name="name" style=" font-size:35px; height:40px; width:180px"><br>';
 }//echo

در کد بالا ، وقتی سسیون وجود نداشته باشد ، کادر نام ظاهر می شود.

همچنین بایستی عنوان مهمان به کسی که خودش نامش را وارد کرده داده شود.
مثلا در کدهای جواب به فرم ، کد را این جوری می نویسیم که اگر سسیون set نیست ، در ستون مهمان ، عدد ۱ وارد شود.

PHP:
if ( ! isset(  $_SESSION["username"] )  )
 {
$sql=.....
result=
 }
 else
 {
 $poster=$_SESSION["username"];
$sql=....
result=....
 }//echo
در کد بالا ، بر اساس ، لوگین بودن یا نبودن ، دو نوع کوئری خواهیم داشت. و در یک کوئری در ستون مهمان می نویسیم 1.

و موقع نمایش پست هم ، جلوی اسم او باید کلمه مهمان نوشته شود.
فرض کن شخصی لوگین کرده اسمش Amir باشد و شخصی بی لوگین ، خودش در کادر اسم بنویسد Amir.. خوب باید مشخص شود کدام یک پست زده..

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

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

PHP:
<?php
session_start();
?>
 
آخرین ویرایش:

saalek110

Well-Known Member
مرتب سازی پستها و خارج کردن پستهای نامناسب:

دوستان می دانند که در همین تاپیک ، من پستهای دو فروم خود را ، به یک هاست جدید منتقل کردم(از طریق اکسپورت جداول در phpmyadmin) .

من امروز پستهای اون عملیات را از تاپیک خارج کردم و در تاپیک دیگری قرار دادم.
همچنین پستهای utf8 چیست را از تاپیک خارج کردم.
همچنین کدهای بک آپ گیری را از تاپیک خارج کردم.

کلا ۳ تاپیک از تاپیک فعلی مشتق شد. البته لینک این ۳ تاپیک در تاپیک هست و هر کس علاقه مند باشد می تواند مطالعه کند.

همچنین پستها را جابجا کردم. مثلا پستهای css را بردم در یک صفحه جمع کردم.
و پستهایی را هم در یک صفحه تحت عنوان حرفه ای جمع کردم.

کلا دسته بندی کردم. و فهرست صفحات را در صفحه اول نوشتم.
 
آخرین ویرایش:

saalek110

Well-Known Member
ثبت زمان به شکل عدد ۱۰ رقمی:

درفروم phpbb زمان به صورت یک عدد ۱۰ رقمی است.
من در فروم خود ، موقع ذخیره پست ، این طوری نوشتم:

PHP:
$my_time=time();

و در دیتابیس ذخیره کردرم. به همان شکل ۱۰ رقمی ذخیره شد، فکر کنم زمان از سال ۱۹۷۰ را این عدد ۱۰ رقمی نشان می دهد.‌

بعد موقع خواندن زمان این طوری خوندم:

PHP:
      date_default_timezone_set("Asia/Tehran");

     echo date("Y-m-d H:i:s", $post_time);

چون باید به زمان تهران می خوندم. اگر در کشور دیگری هستید ، احتمالا باید برای اون کشور کد خط اول را تنظیم کنید.
در فروم من به شکل زیر به نمایش در می آید:
کد:
2024-02-01 16:18:10

و ساعت و دقیقه پست زدن را درست نشان می دهد.
 

saalek110

Well-Known Member
چون من فروم خود را کنار جداول phpbb دارم بنا می کنم ، خواستم زمان در جدول شبیه فروم phpbb باشد ، تا در یک پارچه سازی فروم مشکل ایجاد نشود....

ولی شما اجباری ندارید که به این شکل در دیتابیس ذخیره کنید.

با همون تقویم فارسی ، در یک ستون ذخیره کنید. همون طوری هم بخونید.

فقط در پست قبل خواستم با این روش هم آشنا بشوید.
 

saalek110

Well-Known Member
خطا یابی:

هر چند خط یک echo می گذاریم تا ببینیم اجرا به اونجا می رسه یا نه ... اگر دیدید اون چیز چاپ شد یعنی اجرا به اون echo رسیده.

یک echo بعد result بزارید...
یعنی بعد کد اجرای کوئری.... اگر echo نشد یعنی کوئری مشکل دارد.

تست کوئری در قسمت sql از phpmyadmin :
به قسمت SQL بروید و کوئری خود را اونجا بیاندازید....
با بک اسپیس یعنی دکمه پاک کردن من نمی تونم اونجا کار کنم ، پس احتمالا شما هم نتوانید....مکان نما را قبل کاراکتر بزارید و با دیلت پاک کنید....
تکه های اول و آخر کوئری باید پاک بشه. یعنی این قسمتها:
PHP:
sql="

";

اگر داخل کوئری متغیر یعنی کلمه دارای دلار دارید یعنی این جوری $my_text پاک کنید و به جایش یک متن بنویسید ... مثلا بنویسید tree یعنی درخت. چون اونجا که متغیر شما معنی نداره ، متغیر لابلای کدها معنی داره....

بعد ببینید چه خطایی می دهد...
مثلا گاه سینتکس را اشتباه نوشته اید مثلا کوتیشن نزاشتید یا اضافه گذاشتید.....

یک خطای عجیبی که من امروز دریافت کردم... چون دارم با جدولهای فروم phpbb کار می کنم ، چون یک ستون را نداده بودم گیر داده بود..... معمولا لازم نیست همه ستونهارا موقع insert اسم بیرید و مقدار بدهید ولی بعضی ستون ها ، جوری تعریف شده اند که نمیشه ندیده گرفت اونها را.... اگر من کوئری را در قسمت SQL از Phpmyadmin نمی زاشتم ، بعید بود بتونم به این زودی علت خطا را بفهمم.
 
آخرین ویرایش:

saalek110

Well-Known Member
قابلیت جدید تغییر چیدمان صفحه اول با یک دکمه:


ستون ۳ به زیر ستون ۱ می رود و بر میگردد،....

فکر کنید با این قابلیت چه کارهایی میشه کرد تا من بسازم.

پایین صفحه چک باکس soton 3 go to right را بزنید و دکمه را بزنید... اول ادمین بشید یوزر وپسورد هست اونجا.

روش ساخت: یک تنظیمی در دیتابیس ثبت میشه و بعد ستون ۱ و ستون ۳ به دیتابیس نگاه می کنند ببینن باید include کنن ستون ۳ را یا نه.

در پست بعد گفتم چه کار کنید بعد اجرای کدهای جواب فرم صفحه خودش رفرش بشه. وگرنه نیاز به رفرش دستی بعد زدن دکمه فرم داشت.
 
آخرین ویرایش:

saalek110

Well-Known Member
رفرش بعد اجرای کدهای جواب فرم:

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

راه حل: یک راه اینه که کدهای جواب فرم بعد انجام ثبت خود در دیتابیس ، صفحه را هم رفرش کنند.
کد رفرش:
PHP:
echo("<meta http-equiv='refresh' content='1'>"); //Refresh

توجه: برای هر کد جواب فرمی ، رفرش نیاز نیست، فقط وقتی تنظیمی روی دیتابیس کرده و می خواهید اون تنظیم در سایت اعمال بشه.

مثلا سایت من:


وقتی با یوزر و پسورد ادمین لوگین کنید ، پایین صفحه میشه دکمه های ادیت زیر پستها را ظاهر کرد یا ستون سوم را زیر ستون اول برد... بعد زدن دکمه می بینید سایت خودبخود رفرش شده و ظاهر سایت عوض میشه.در پست قبلی هم توضیح داده شد.
البته فعلا سایت این جوری است ، بهمن ۱۴۰۲.. بعدا ممکن است تغییر داده شود.
 
آخرین ویرایش:

saalek110

Well-Known Member
PHP:
header('Location: http://www.example.com/');

کد بالا فکر کنم برای فرستادن به سایت دیگری باشد. تست نکردم.
 

saalek110

Well-Known Member

در لینک بالا شروع کردم تا مدیریت کامنت ها را بسازم.
توجه کنید فقط ادمین می تواند وارد لینک بالا شود ، پس اول بروید صفحه اول سایت ادمین شوید:
صفحات ادمین ، خط اولش شرط ادمین بودن دارد:
PHP:
if ( $_SESSION["username"]== "admin")
{
مسلما هر کروشه باز ، یک کروشه بسته هم باید داشته باشد وگرنه صفحه خطا می دهد، کروشه بسته را مثلا قبل بسته شدن قسمت php قرار دهید:
PHP:
}

?>
چیزی که در عکس زیر می بینید:

Screenshot_۲۰۲۴-۰۲-۰۵_۰۳۳۶۵۰.jpg

چاپ جدول نظرات از دیتابیس است ، ....
و علاوه بر اون یک ستون حاوی یک سری دکمه که فعلا ، به لینک عوضی وصل است و اگر دگمه را بزنید باید بک کنید برگردید.

اون دکمه ها برای approve کردن کامنت هاست....
باید یک ستون approve به جدول کامنت ها یا همون نظرات اضافه بشه و در جدول فوق عددش نشان داده بشه.. مثلا یک یا دو یا سه.... و با یک سری دکمه در یک سری ستون ، عدد approve تغییر داده بشه..... حالا ممکن است بهترین طرح نباشد ولی من این جوری طراحی کردم.


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

پس گام بعدی ، افزودن یک ستون به نام approve به جدول نظرات در دیتابیس است ،
و وصل کردن اون دکمه ها به یک سری صفحه ، که در اون صفحات کوئری بنویسیم تا اون ستون approve جدول نظرات را تغییر دهیم ، یا به زبان mysql بخواهیم بگیم UPDATE کنیم.
 
آخرین ویرایش:

saalek110

Well-Known Member
دیگه انتظار نداشته باشید کد کامل بزارم...
ولی یک طرح کلی می زارم:
PHP:
$sql=....
$result=..

<table>
while()
{// shoro e while
<tr>

<td> $msg </td>
...
....
<td> code form </td>
..
..



</tr>
}//entehaye while
</table>

چاپ یک جدول است کلا دیگه... فقط در یکی از ستون هایش فرم قرار داده شده.
اون تیبل و tr و td اگر در قسمت php باشه ، باید echo بشود.
و من این طوری نوشتم:
PHP:
echo'<td style="background: #aaee00;">';
یعنی style داخل خطی باز کردم و رنگ پشت تعیین کردم. بعدا ممکن است استایل برود بالای صفحه و بعدا در یک فایل جدا قرار داده بشه و بعدا ممکن است در ادمین شما بتوانید استایل های صفحات را هم ادیت کنید.


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

جدیدترین ارسال ها

بالا