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

saalek110

Well-Known Member
ادامه ساخت فروم:

در صفحه قبل اسکلت فروم را ساختیم ،
حال باید چیزهایی اضافه کنیم تا قابل استفاده تر بشه.

یادتون باشه charset فیلدهای متنی را مناسب فارسی تنظیم کنید. utf8 پیدا کنید. Utf8 persian
 
آخرین ویرایش:

saalek110

Well-Known Member
HTML:
?>

 <form id='myform' action="<?php echo $_SERVER['PHP_SELF']; ?>"  method = 'POST'>
<?php

   echo"<center>";
?>

<br>
<textarea id="mytextarea"    style="font-size: 12pt" name="post" rows="5" cols="25">
     </textarea>
     <br>
       <?php
   echo'<input type="hidden" id="custId" name="number"  value='.$topic_number.'>';
   ?>
 <input type="submit"  name='action_send' value="Submit"  style=" font-size:20px; height:90px; width:150px">
 </form>
<?php
echo"</center>";

کد فرم برای تایپ در اون و زدن دکمه برای ارسال.
در کد ، textarea یک id هم دارد. که اینجا استفاده نشده ولی فکر کنم در ساخت ادیتور گفتم چطوری باهاش کار کنید. کدهای جاوا اسکریپت با id اشیا را می شناسند. نوعی رابط بین کدهای جاوا اسکریپت و اشیا html است.

اونجا هم که شماره تاپیک داره به شکل مخفی ارسال میشه ، خوب لازمه کدهای درج بدونند که در کدوم تاپیک باید پست را اضافه کنند. پس لازمه.
 
آخرین ویرایش:

saalek110

Well-Known Member
PHP:
if(      isset  ($_POST['action_send'] )    )
{ // add one post
    echo"<center>";
        $topic_number=test_input($_POST["number"]);
       $post=test_input($_POST["post"]);


mysqli_set_charset($ccoonn, "utf8");
 
 $sql = "INSERT INTO `posts` (`post`,`topic`) VALUES ( '$post','$topic_number')";
    $result = mysqli_query($ccoonn ,$sql);

echo"<a href='http://saalek110.is-great.net/forum/topic.php?number=$topic_number'>"."return to topic"."</a>";
 
    echo"</center>";
}  // end of  action_send

کدهای فوق را قبل کدهای نمایش پست ها قرار دهید تا اگر قسمت نمایش پست ایراد داشت اجرا بشه.
کدهای فرم یعنی کدهای پست قبلی را بگذارید بعد کدهای نمایش پست.
در گوئری insert می بینید که کاری با ستون number نداشتیم. چون اون ستون خود افزایش یابنده است و لازم نیست بهش مقدار بدهیم.
 
آخرین ویرایش:

saalek110

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

saalek110

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

ولی قسمت فونداسیون را اصولی کار کنید ، تا بعدا دچار مشکل نشوید.
بعدها که به قسمت تزئینات برسید ذوقتان اون موقع بیشتر میشه و موتور قوی تری برای کار خواهید داشت.
 

saalek110

Well-Known Member
من خودم چند سال پیش یک سایت ساختم. همون کدها را برای ساخت ده تا سایت استفاده کردم.
یعنی اون مراحل را دیگه لازم نیست تکرار کنید و از بقیه اش ادامه می دهید.
 

saalek110

Well-Known Member
مقایسه فلسفی وبلاگ و فروم:

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

saalek110

Well-Known Member
طرز ساخت فروم: معماری فروم

وقتی جداول دیتابیس را می ساختیم ، به جز جدول کاتگوری ، هر جدول ، یک ستون صاحب و مالک داشت.
مثلا در جدول تالارها ، ستون کاتگوری نشون می دهد که اون تالار متعلق به کدام کاتگوری است.

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


images.jpeg


در فروم همین که یک ستون یک جدول به یک عضو جدول بالایی اشاره می کند ، باعث ایجاد ارتباط میشه.
و در جدول تاپیکها در دیتابیس ، یک ستون به نام forum داشتیم ، تا بگه این تاپیک متعلق به کدام تالار است.
و در جدول پست ها ، هم ستون topic داشتیم تا نشون بده این پست متعلق به کدام تاپیک است.

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

saalek110

Well-Known Member
ادامه معماری:

جدول پست ها ، باید یک ستون نویسنده هم داشته باشه تا معلوم بشه چه کسی اون پست را نوشته.
ولی این اخلالی در معماری کلی ایجاد نمی کند. هر نویسنده می چسبه به پست خودش ، و همراه پست ، می رود در تاپیک و حالت درختی فروم پابرجاست.

یا هر پست ، ستون تاریخ هم باید داشته باشه ولی باز هم این جزئی از دارایی پست است و کلا می روند در یک تاپیک.
 

saalek110

Well-Known Member
قسمت مدیریت و ادمین فروم:

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

یا انتقال یک تاپیک از یک تالار به تالار دیگر.

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

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

اینکه یک کاربر ، چطوری تبدیل به مدیر یک قسمت میشه را بعدا باید کار کنیم.
 

saalek110

Well-Known Member
من یکی دو ساله یک سایت خودم دارم ، حالت سرویس وبلاگ داره ولی تمام وبلاگهایش را خودم استفاده می کنم و یادداشت هایم را اونجا می نویسم.

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

saalek110

Well-Known Member
ظاهر فروم:

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

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

saalek110

Well-Known Member
PHP:
 function test_input($data) {
                     $data = trim($data);
                    $data = stripslashes($data);
                     $data = htmlspecialchars($data);
                  return $data;
                }
چک ورودی.
در محل ورودی گرفتن از کاربر لازم است.
به جای:
PHP:
$topic_number=htmlspecialchars($_GET["number"]);
در گرفتن شماره تاپیک در فایل topic.php خط زیر را استفاده می کنم:
PHP:
$topic_number=test_input($_GET["number"]);
 
آخرین ویرایش:

saalek110

Well-Known Member
یوزر به جدول posts دیتابیس اضافه شد.

PHP:
if (  isset(  $_SESSION["username"] )  )
{
    $user=$_SESSION["username"];

}
PHP:
$sql = "INSERT INTO `posts` (`post`,`topic`,`user`) VALUES ( '$post','$topic_number','$user')";

Screenshot_9.png

PHP:
$topic_number=test_input($_GET["number"]);

if (   isset($topic_number))
{
    echo $topic_number;
mysqli_set_charset($ccoonn, "utf8");

$sql = "SELECT * FROM posts WHERE topic=$topic_number";
  $result = mysqli_query($ccoonn ,$sql);
   echo"<center>"; 
       echo"<table border=1>";
          while($info = mysqli_fetch_array( $result ))
           {
            echo"<tr>";
            
              $post=$info['post'];
            $user=$info['user'];

                  echo"<td>";
                  echo"<div id='post'>";
                   echo $post;
                   echo"</div>";
                    echo"</td>";
              

                  echo"<td>";
                  echo"<div id='post'>";
                   echo $user;
                  echo"</div>";
                    echo"</td>";
                  echo"</tr>";


                                   }
         echo"</table>";
          echo"</center>";
}   // if topic_number
 
آخرین ویرایش:

saalek110

Well-Known Member
سابقه فروم سازی قبلی من :

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

Screenshot_10.png

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


اولین تاریخ 31 ژانویه است و الان برج 9 میلادی است. میشه 9 ماه. یعنی از اون فروم سازی تا این فروم سازی 9 ماه فاصله بوده.
 
آخرین ویرایش:

saalek110

Well-Known Member
کوئری insert:

در دو پست قبل کوئری را نشان دادم.
PHP:
$sql = "INSERT INTO `posts` (`post`,`topic`,`user`) VALUES ( '$post','$topic_number','$user')";

توجه کنید که کوتیشن های اولیم قسمت کج است و کوتیشن های قسمت دوم صاف و عمودی است.
شما در php my admin هر ستونی می توانید به شکل دستی به جدول های خود اضافه کنید. و در کد بالا می توانید اون ستون را اضافه کنید.
مثلا اول ستون تاریخ را اضافه کنید و بعد در کوئری بالا در دو طرف کلمه VALUES اول اسم ستون و دوم متغیری که مقدار تاریخ درش است را در کوئری بالا اضافه کنید.

ساخت جداول دیتابیس:
برای ساخت جداول کاتگوری و پست ها و تاپیک ها و تالارها ، ستون اول number را خودافزایش یابنده بگیرید ، یعنی تیک A.I را بزنید.
برای ستون های متنی می توانید نوعش را varchar انتخاب کنید و تعداد کاراکتر هم بدهید مثلا 100 تا. و ستون collation را هم utf8 persian انتخاب کنید مثلا utf8 mb3 persian .



Screenshot_12.png
نوع mb4 هم دارد. اگر می خواهید فرق mb3 و mb4 را بدانید در گوگل سرچ کنید. شاید به غیر این دو تا ، نوع دیگری utf8 باز داشته باشه.


در php my admin جدول ساختن و اضافه و کم کردن ستون ها ساده است.
 
آخرین ویرایش:

saalek110

Well-Known Member
افزودن تاریخ فارسی jdate:

PHP:
$tarikh=$the_date.$the_week.$hour;

 $sql = "INSERT INTO `posts` (`post`,`topic`,`user`,`post_date`) VALUES ( '$post','$topic_number','$user','$tarikh')";

اون فایل تاریخ فارسی را در تاپیک معرفی کردم. اون باید بالای صفحه اینکلود بشه و بنویسیم:
PHP:
   $hour= jdate('g:i A');      
           $the_week=jdate('l');
           $the_date=jdate('Y/m/d ');

Screenshot_13.png
 
آخرین ویرایش:

saalek110

Well-Known Member

Screenshot_14.png

Screenshot_15.png

اگر css تاریخ را می خواهید این طوری است:

CSS:
   #date {
          border:1px solid #eeff22;
          border-radius:5px;
          font-size:18px;
          width:150px;
          padding:2px;
          margin-left:20px;
          margin-right:20px;
            background-color:rgba(250,130,30,1);
                 }
البته با گرفتن سورس صفحه چیزهای دیداری ، کدش قابل دسترس است. شامل html ...css ...javascript

شرح کد زیر:
تاریخ را در همون ستون محتوای پست انداختم. , و داخل div پست ،یعنی یک div داخل div :

HTML:
          while($info = mysqli_fetch_array( $result ))
           {
            echo"<tr>";
            
              $post=$info['post'];
            $user=$info['user'];
            $post_date=$info['post_date'];
                  echo"<td>";
                  echo"<div id='post'>";
                   echo $post;

                  echo"<div id='date'>";   // div inside div
                   echo $post_date;
                  echo"</div>";


                   echo"</div>";
                    echo"</td>";
البته میشه داخل td یک table ایجاد کرد و هر طور میل دارید اجزا را بچینید. ولی فعلا من علی الحساب این طوری قرار دادم تا به کارهای دیگر فروم برسم.
 
آخرین ویرایش:

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

بالا