سورس سافت | سورس پروژه | دانلود پروژه | سورس کد


م
ن
و
سورس سافت

ادامه مطلب

نحوه ایجاد یک وبلاگ شی گرا با استفاده از PHP



نحوه ایجاد یک وبلاگ شی گرا با استفاده از PHP

امروز ما قصد داریم با ایجاد یک وبلاگ ساده، دانش خود را در مورد PHP و MySQL یک گام به جلو ببریم. در حالی که تعداد بی شماری پلتفرم وبلاگ رایگان عالی وجود دارد، هدف از این آموزش ایجاد یک وبلاگ “بهتر” نیست؛ بلکه استفاده از فرآیند ایجاد یک وبلاگ برای آشنایی با تکنیک های پیشرفته ساختار پایگاه داده و نحوه استفاده کارآمدتر از داده ها با استفاده از اشیاء در PHP می باشد. تا آخر آموزش نحوه ایجاد یک وبلاگ شی گرا با استفاده از PHP با ما همراه باشید.

آموزش ایجاد یک وبلاگ شی گرا با استفاده از PHP

برای این آموزش فرض بر این است که شما از PHP ،MySQL ،XHTML و بعداً از jQuery / JavaScript اطلاعات اولیه ای دارید. با ما همراه باشید.!

سورس کد ایجاد یک وبلاگ شی گرا با استفاده از PHP

قسمت 1) ایجاد پایگاه داده ما

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

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

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

بنابراین کاری که ما قرار است انجام دهیم این است که یک جدول جداگانه به نام “افراد” ایجاد کنیم و در این قسمت، تمام اطلاعات مورد نیاز نویسنده – مانند ایمیل ها، آدرس های اینترنتی، نام آن ها و یک شناسه منحصر به فرد را ذخیره می کنیم. سپس در جدول پست وبلاگ ما به شخصی که می خواهیم با استفاده از شناسه منحصر به فرد آن شخص اشاره کنیم. این شناسه به عنوان یک کلید خارجی و رابطه بین جدول پست وبلاگ و جدول افراد، رابطه یک به چند نامیده می شود.

یکی دیگر از مواردی که می خواهیم در وبلاگ خود داشته باشیم، برچسب هر پست وبلاگ است. باز هم می خواهیم پایگاه داده خود را کارآمد کنیم، بنابراین یک جدول جداگانه برای برچسب های خود ایجاد می کنیم. در حال حاضر چه کار کنیم؟ آیا باید در جدول پست وبلاگ فیلدی ایجاد کنیم که یک کلید خارجی برای برچسب ما باشد؟ مشکل استفاده از رابطه یک به یک این بار این است که گاهی اوقات پست های وبلاگ دارای بیش از یک برچسب هستند. بنابراین دوباره، ما از رابطه یک به چند استفاده خواهیم کرد. برای انجام این کار، ما باید یک جدول دیگر ایجاد کنیم که نام آن چیزی شبیه “blog_post_tags” است که دارای دو کلید خارجی است، یکی شناسه پست وبلاگ و دیگری شناسه برچسب است که پست وبلاگ با آن مرتبط است. به این ترتیب ما می توانیم هر تعداد برچسب که می خواهیم به یک پست وبلاگ اختصاص دهیم اما همچنان می توانیم اطلاعات مربوط به آن برچسب خاص را در همه پست ها با یک پرس و جو ساده MySQL ویرایش کنیم.

حالا که ما توضیح داده ایم که می خواهیم پایگاه داده ما چگونه باشد، بیایید آن را ایجاد کنیم. من از PhpMyAdmin استفاده می کنم، زیرا این پرکاربردترین سرویس گیرنده مدیریت MySQL است. هنگام ایجاد نام پایگاه داده، جدول و نام فیلدها، می توانید از چند روش نامگذاری مختلف استفاده کنید. من شخصاً دوست دارم از همه حروف کوچک و بزرگ به جای فضاها استفاده کنم.

توجه: اگر PHP و MySQL روی سیستم خود ندارید یا سروری که بتواند آن را اجرا کند، توصیه می کنم یک نصب مستقل از Apache ،PHP و MySQL را بارگیری کنید. MAMP برای مک و WAMP برای رایانه ها خوب است.

ابتدا باید پایگاه داده خود را ایجاد کنیم، من آن را “nettuts_blog” می نامم.

نحوه ایجاد یک وبلاگ شی گرا با استفاده از PHP

در مرحله بعد، جداول خود را ایجاد می کنیم. اولین مورد “blog_posts” خواهد بود.

نحوه ایجاد یک وبلاگ شی گرا با استفاده از PHP

“blog_posts” دارای پنج فیلد است: “id” ،”title” ،”post” ،”author_id” و “date_posted”. برای “id” ما می خواهیم آن را کلید اصلی قرار دهیم و آن را روی افزایش خودکار تنظیم کنیم. کاری که این کار می کند این است که شناسه منحصر به فرد ما را برای ما ایجاد کند. هر بار که ما یک پست اضافه می کنیم، یک عدد از یک شروع می شود و به همان تعداد پست ما به سمت بالا حرکت می کند.

حال باید نوع متغیر را برای هر فیلد تنظیم کنیم. شناسه بر روی نوع int تنظیم می شود، مخفف عبارت integer، زیرا فقط می تواند یک عدد باشد و حداکثر طول را بر روی 11 تنظیم می کنیم. فیلد “title” روی نوع varchar با حداکثر طول 255 تنظیم می شود. ” پست “فیلد” نوع “متن” خواهد بود و ما حداکثر طول را تعیین نمی کنیم؛ زیرا پست ها می توانند بسیار طولانی باشند. “author_id” همان “id” خواهد بود اما ما آن را به عنوان کلید اصلی خود تنظیم نمی کنیم یا به صورت خودکار افزایش نمی یابد، و “date_posted” را روی “Date” تنظیم می کنیم.

نحوه ایجاد یک وبلاگ شی گرا با استفاده از PHP

 

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

“مردم” شامل پنج فیلد نیز خواهد بود: “id” ،”first_name” ،”last_name” ،”url” و “email”.

“id” به عنوان int، کلید اصلی تنظیم می شود و برای افزایش خودکار، به همان روشی که id “blog_posts” را تنظیم می کنیم. “first_name” ،”last_name” ،”url”، و “email” همگی روی نوع varchar با حداکثر طول 255 تنظیم خواهند شد.

جدول بعدی ما “برچسب ها” خواهد بود و در حال حاضر فقط شامل دو فیلد است: “id” و “name”. در طول راه می توانیم این مورد را با افزودن توضیحات پیچیده تر کنیم اما برای این آموزش، این کار را نخواهیم کرد. همان طور که قبلاً انجام دادیم “id” به عنوان int، کلید اصلی و افزایش خودکار تنظیم می شود. “name” از نوع varchar خواهد بود و حداکثر طول آن 255 خواهد بود.

و آخرین جدول ما، “blog_post_tags”، تنها دو فیلد دارد: “blog_post_id” و “tag_id”. هر دو بر روی int با حداکثر طول 11 تنظیم می شوند. همان طور که به احتمال زیاد متوجه شدید، ما کلید اصلی را برای این جدول تنظیم نکرده ایم. این امر به این دلیل است که ما هرگز اطلاعاتی از این جدول دریافت نخواهیم کرد، مگر این که درخواست یک پست وبلاگ خاص یا همه پست های یک شناسه برچسب خاص را داشته باشیم.

 

قسمت 2) ایجاد اشیاء خود در PHP

قبل از شروع به وارد کردن کد PHP واقعی ما باید فایل ها و پوشه های خود را ایجاد کنیم، برای این آموزش ما index.php خود را در پوشه اصلی خود خواهیم داشت و سپس یک پوشه شامل CSS، فایل های جاوا اسکریپت، که به اشیاء ما و اتصال MySQL و blogpost.php که شامل BlogPost ما می شود اشاره می کند.

اکنون که پایگاه داده خود را تنظیم کرده ایم، باید اشیایی را در PHP ایجاد کنیم که داده ها را برای ما مدیریت کند. اشیاء در برنامه نویسی راهی برای جمع آوری ویژگی های مختلف (به عنوان متغیر) و روش هایی هستند که همه به یک چیز مرتبط هستند. اشیاء همچنین به ما کمک می کنند تا برنامه های خود را بسیار سازماندهی کنیم. قبل از این که به اشیاء خود برای وبلاگ خود بپردازیم، بیایید فقط یک شیء ساده بسازیم تا بتوانیم در اصطلاح “زندگی واقعی” آن ها را نشان دهیم.

شیء ما “دوچرخه” نامیده می شود، در حال حاضر دو نوع چیز وجود دارد که هر شی دارد، ویژگی ها و متدها. ویژگی ها شی را تعریف می کنند و متدها کاری هستند که شی انجام می دهد. به عنوان مثال، شیء Bike ما دارای ویژگی هایی مانند اندازه چرخ، تعداد چرخ دنده ها و شاید اندازه قاب است. برای متدها ممکن است چیزی شبیه به “Pedal” داشته باشیم.

اکنون برای بازگشت به وبلاگ خود، ما در حال حاضر فقط به یک شی به نام “BlogPost” نیاز داریم. BlogPost دارای شش ویژگی، شناسه، عنوان، پست، نویسنده، برچسب ها و تاریخ ارسال خواهد بود. بنابراین اجازه دهید آن را در PHP بسازیم.

برای تعریف یک شی در PHP، آن را به عنوان “کلاس” تعریف می کنیم. کلاس ساختار هر شیء است، یا همان طور که ویکی پدیا توصیف می کند، “در برنامه نویسی شی گرا، کلاس یک ساختار زبان برنامه نویسی است که به عنوان نقشه ای برای ایجاد اشیاء مورد استفاده قرار می گیرد. این طرح شامل ویژگی ها و متدهایی است که اشیاء ایجاد کرده اند.” (http://fa.wikipedia.org/wiki/Concrete_class). ما قصد داریم صفحه blogpost.php خود را باز کرده و اولین شیء خود را تعریف کنیم.

توجه: در هر بخش از آموزش، من برچسب های PHP باز و بسته را کنار می گذارم. “<؟ php” و “؟>” شما باید آن ها را در ابتدا و انتهای سند خود وارد کنید.

class BlogPost
{
}

در کلاس ما ابتدا باید ویژگی های خود را مشخص کنیم. برای انجام این کار، ما باید متغیرهایی ایجاد کنیم – اما با “عمومی” در جلوی آن ها. فقط یک نکته سریع، اگر از PHP4 استفاده می کنید ، باید از “var” به جای “public” استفاده کنید.

class BlogPost
{
    public $id;
    public $title;
    public $post;
    public $author;
    public $tags;
    public $datePosted;
}

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

اولین متد ما چیزی است که سازنده نامیده می شود. هر زمان که نمونه جدیدی از شیء BlogPost ایجاد کنیم، این متد به طور خودکار فراخوانی می شود.

استفاده معمول از سازنده به این صورت است که می توانید یک شی جدید ایجاد کرده و ویژگی های آن شی را سریع تنظیم کنید.

بنابراین کاری که ما می خواهیم انجام دهیم ایجاد یک تابع جدید به نام __construct () است و ما قصد داریم در پنج مقدار، شناسه، عنوان، پست، شناسه نویسنده و تاریخ ارسال ارسال کنیم. برای هر نام متغیر ، “in” را قبل از کلمه قرار می دهیم، بنابراین می توانیم درون توابع خود بگوییم که چه متغیرهایی در حال انتقال هستند و چه متغیرهایی در حال حاضر وجود دارند.

class BlogPost
{
    public $id;
    public $title;
    public $post;
    public $author;
    public $tags;
    public $datePosted;

    function __construct($inId, $inTitle, $inPost, $inAuthorId, $inDatePosted)
    {
    }
 }

مشکل در این جا این است که با این کد فعلی، هر بار که یک نمونه جدید از BlogPost ایجاد می کنیم، باید تمام آن ویژگی ها را ارائه دهیم. اما اگر بخواهیم یک پست وبلاگ جدید ایجاد کنیم و هنوز آن متغیرها را تعریف نکرده باشیم، چه کنیم؟ برای رسیدگی به این امر، ما باید آرگومان های تابع خود را “بیش از حد” بارگذاری کنیم تا اگر تابع را فراخوانی کنیم و در یکی از آرگومان ها عبور نکنیم، به طور خودکار آن را روی مقدار پیش فرض تنظیم کند.

 function __construct($inId=null, $inTitle=null, $inPost=null, $inPostFull=null, $inAuthorId=null, $inDatePosted=null)
{
}

همان طور که می بینید، تمام کاری که ما برای انجام وظیفه خود انجام می دهیم این است که هر آرگومان را روی مقدار “null” قرار دهیم. اکنون در داخل سازنده خود، ما باید هر یک از متغیرهای خود را بر روی مقادیر منتقل شده خود تنظیم کنیم. برای انجام این کار ما می خواهیم آن ها را به شیئی که در حال حاضر در آن قرار داریم تنظیم کنیم. ما می توانیم این کار را با کلید واژه “this” انجام دهیم. برخلاف بسیاری از زبان های دیگر برای دسترسی به یک ویژگی در PHP از “->” استفاده می کنید که در اکثر زبان ها (I.E. JavaScript ، ASP.NET) از “” استفاده می کنید.

 __construct($inId=null, $inTitle=null, $inPost=null, $inPostFull=null, $inAuthorId=null, $inDatePosted=null)
{
    $this->id = $inId;
    $this->title = $inTitle;
    $this->post = $inPost;
}

این برای شناسه، عنوان و پست مناسب است. اما بقیه ما چطور؟ در حال حاضر ما باید داده هایی را که از MySQL دریافت کرده ایم مجدداً قالب بندی کنیم تا خواناتر باشد. این کار به راحتی انجام می شود؛ ما فقط آن را گسترده می کنیم (که در دیگر زبان های برنامه نویسی نیز به آن تقسیم می شود) و سپس دوباره آن را کنار هم قرار می دهیم. MySQL آن را در این قالب yyyy-mm-dd به ما می دهد، بنابراین اگر آن را با استفاده از “-” به عنوان جدا کننده خود گسترده کنیم، یک آرایه با سه مقدار دریافت می کنیم. اولین سال ما را برگزار می کند، بعدی ماه ما را برگزار می کند و آخرین روز، آن روز خواهد بود. اکنون تنها کاری که ما انجام می دهیم این است که آن ها را در هر قالبی که می خواهیم جمع آوری کنیم. من با mm/dd/yyyy این کار را انجام می دهم.

$splitDate = explode("-", $inDatePosted);
$this->datePosted = $splitDate[1] . "/" . $splitDate[2] . "/" . $splitDate[0];

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

$query = mysql_query("SELECT first_name, last_name FROM People WHERE id = " . $inAuthorId);
$row = mysql_fetch_assoc($query);
$this->author = $row["first_name"] . " " . $row["last_name"];

پیوند چپ

در حال حاضر برچسب ها کمی سخت تر خواهند بود. ما باید با پایگاه داده صحبت کنیم، بنابراین باید یک پرس و جو MySQL ایجاد کنیم. ما در حال حاضر نگران اتصال پایگاه داده نیستیم، که خارج از این کلاس تعریف می شود. اکنون تنها چیزی که داریم شناسه پست وبلاگ است. ما می توانیم آن را با برچسب های پست های وبلاگ در جدول blog_post_tags مقایسه کنیم، اما در این صورت فقط شناسه برچسب را پس می گیریم و برای به دست آوردن اطلاعات مربوط به برچسب، باید پرس و جو دیگری انجام دهیم. این خوب نیست؛ ما می خواهیم کارآمد باشیم بنابراین اجازه دهید این کار را فقط در یک پرس و جو انجام دهیم!

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


$query = mysql_query("SELECT * FROM blog_post_tags WHERE blog_post_tags.blog_post_id = " . $inId);

 

اکنون بیایید پیوست سمت چپ خود را اضافه کرده و به پرس و جو خود بگوییم که فقط داده ها را در جدول برچسب ها می خواهیم:

$query = mysql_query("SELECT tags.* FROM blog_post_tags LEFT JOIN (tags) ON (blog_post_tags.tag_id = tags.id) WHERE blog_post_tags.blog_post_id = " . $inId);

 

بنابراین در حال حاضر پرس و جو همه را از برچسب ها و جداول blog_posts_tags انتخاب می کند که در آن، ابتدا blog_post_tags.blog_post_id برابر با آن چه که ما ارائه کرده ایم است و سپس اطلاعات مربوط به هر برچسبی که دارای آن tag_id است که در یک ردیف داده با blog_post_id ما قرار دارد را برمی گرداند.

اکنون می خواهیم این داده ها را در PHP با یک حلقه ساده while پردازش کنیم. ما همچنین قصد داریم دو آرایه ایجاد کنیم که داده های ما را در خود نگه دارد: یکی برای نام برچسب و دیگری برای شناسه برچسب. ما همچنین یک رشته برای نگه داشتن همه برچسب های خود ایجاد می کنیم. ابتدا آن را روی “بدون برچسب” قرار می دهیم تا اگر هیچ داده ای از پرس و جو MySQL خود برنگردانیم، نشان دهد که هیچ برچسبی نداریم، در غیر این صورت این مقدار با نام برچسب ها رونویسی می شود.

 

$postTags = "No Tags";
$tagArray = array();
$tagIDArray = array();
while($row = mysql_fetch_assoc($query)
{
    array_push($tagArray, $row["name"]);
    array_push($tagIDArray, $row["id"]);
}

اکنون ما بررسی می کنیم تا مطمئن شویم آرایه دارای طول بیشتر از صفر است (اگر نیازی به این کار نداریم نمی خواهیم همه این کد اضافی را انجام دهیم). بعد، برای هر برچسب در آرایه نام برچسب ما، ما قصد داریم رشته ای از برچسب ها را به هم متصل کنیم. ما از عبارت ساده if else استفاده می کنیم.

 

if (sizeof($tagArray) > 0)
{
    foreach ($tagArray as $tag)
    {
        if ($postTags == "No Tags")
        {
            $postTags = $tag;
        }
        else
        {
            $postTags = $postTags . ", " . $tag;
        }
    }
}
$this->tags = $postTags;

به احتمال زیاد متوجه شده اید که ما از آرایه های شناسه برچسب استفاده نکرده ایم. ما قصد داریم آنها را فعلاً تنها بگذاریم و بعداً به سمت آن ها بازگردیم. ما فقط می خواهیم ابتدا وبلاگ خود را راه اندازی کنیم.

آخرین مرحله برای کلاس ما این است که دستورات مربوط به هر ویژگی را اضافه کنیم تا اگر چیزی را وارد نکنیم، سعی نکند ویژگی شیء فعلی را روی هیچ چیز تنظیم کند (این باعث خطا می شود). در اینجا کل کلاس BlogPost با عبارات if اضافه شده است:

 

<?php
class BlogPost
{
public $id;
public $title;
public $post;
public $author;
public $tags;
public $datePosted;

function __construct($inId=null, $inTitle=null, $inPost=null, $inPostFull=null, $inAuthorId=null, $inDatePosted=null)
{
   if (!empty($inId))
   {
       $this->id = $inId;
   }
   if (!empty($inTitle))
   {
       $this->title = $inTitle;
   }
   if (!empty($inPost))
   {
       $this->post = $inPost;
   }
   if (!empty($inDatePosted))
   {
       $splitDate = explode("-", $inDatePosted);
       $this->datePosted = $splitDate[1] . "/" . $splitDate[2] . "/" . $splitDate[0];
   }
   if (!empty($inAuthorId))
   {
       $query = mysql_query("SELECT first_name, last_name FROM people WHERE id = " . $inAuthorId);
       $row = mysql_fetch_assoc($query);
       $this->author = $row["first_name"] . " " . $row["last_name"];
   }
   $postTags = "No Tags";
   if (!empty($inId))
   {
       $query = mysql_query("SELECT tags.* FROM blog_post_tags LEFT JOIN (tags) ON (blog_post_tags.tag_id = tags.id) WHERE blog_post_tags.blog_post_id = " . $inId);
       $tagArray = array();
       $tagIDArray = array();
       while($row = mysql_fetch_assoc($query))
       {
           array_push($tagArray, $row["name"]);
           array_push($tagIDArray, $row["id"]);
       }
       if (sizeof($tagArray) > 0)
       {
           foreach ($tagArray as $tag)
           {
               if ($postTags == "No Tags")
               {
                   $postTags = $tag;
               }
               else
               {
                   $postTags = $postTags . ", " . $tag;
               }
           }
       }
   }
   $this->tags = $postTags;
}
}
?>

اکنون که کلاس شیء ما کامل شده، اکثر کارهای سخت انجام شده است! تنها کاری که باید انجام دهیم این است که اتصال پایگاه داده و HTML را برای نمایش پست های خود تنظیم کنیم!

 

قسمت 3) دریافت داده ها از MySQL و نمایش آن با PHP

قبل از هر اقدامی، باید فایل include.php خود را طوری تنظیم کنیم که به شیء BlogPost خود مراجعه کرده و به پایگاه داده MySQL ما متصل شود. اجازه دهید ابتدا شیء خود را با یک عبارت ساده شامل:

include 'blogpost.php';

حالا اجازه دهید اتصال پایگاه داده خود را اضافه کنیم:

 

$connection = mysql_connect("localhost", "username", "password") or die ("<p class='error'>Sorry, we were unable to connect to the database server.</p>");

$database = "nettuts_blog";

mysql_select_db($database, $connection) or die ("<p class='error'>Sorry, we were unable to connect to the database.</p>");

در مرحله بعد، ما باید پست های وبلاگ خود را از پایگاه داده بازیابی کنیم. برای انجام این کار، ما یک تابع ایجاد می کنیم که می تواند تا دو آرگومان را شامل شود. هر دوی آن ها را بیش از حد بار خواهیم کرد؛ بنابراین می توانید تابع را با 0، 1 یا 2 آرگومان فراخوانی کنید.

 

function GetBlogPosts($inId=null, $inTagId=null)
{

}

در داخل عملکرد ما باید بررسی کنیم که چه آرگومان هایی در آن وارد شده اند و بر این اساس پرس و جو MySQL خود را ایجاد کنیم.

 

function GetBlogPosts($inId=null, $inTagId =null)
{
    if (!empty($inId))
    {

    }
    else if (!empty($inTagId))
    {

    }
    else
    {

    }
}

بنابراین کاری که ما این جا انجام می دهیم این است که اگر هر آرگومان خالی نباشد، دلیل این که چرا ما از تابع خالی به جای مقایسه استاندارد “! = null” استفاده می کنیم را می پرسیم، این مورد نه تنها متغیر خالی را بررسی می کند، و همچنین اگر خالی باشد (IE “”). حالا بسته به متغیرهایی که داریم پرس و جو می نویسیم. اگر یک شناسه پست وبلاگ را وارد کنیم، فقط آن پست وبلاگ را می خواهیم. اگر تابع inTagId را بدهیم، می خواهیم همه پست هایی که دارای این برچسب هستند، در غیر این صورت ما فقط می خواهیم همه پست های وبلاگ در پایگاه داده ما وجود داشته باشد.

 

if (!empty($inId))
{
    $query = mysql_query("SELECT * FROM blog_posts WHERE id = " . $inId . " ORDER BY id DESC");
}
else if (!empty($inTagId))
{
    $query = mysql_query("SELECT blog_posts.* FROM blog_post_tags LEFT JOIN (blog_posts) ON (blog_post_tags.postID = blog_posts.id) WHERE blog_post_tags.tagID =" . $tagID . " ORDER BY blog_posts.id DESC");
}
else
{
    $query = mysql_query("SELECT * FROM blog_posts ORDER BY id DESC");
}

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

 

$postArray = array();

while ($row = mysql_fetch_assoc($query))

{

    $myPost = new BlogPost($row["id"], $row['title'], $row['post'], $row['postfull'], $row['firstname'] . " " . $row['lastname'], $row['dateposted']);

    array_push($postArray, $myPost);

}

return $postArray;

در این جا کل کد file.php آمده است:

 

<?php
include 'blogpost.php';
$connection = mysql_connect('localhost', 'username', 'password') or die ("<p class='error'>Sorry, we were unable to connect to the database server.</p>");
$database = "nettuts_blog";
mysql_select_db($database, $connection) or die ("<p class='error'>Sorry, we were unable to connect to the database.</p>");
function GetBlogPosts($inId=null, $inTagId =null)
{
    if (!empty($inId))
    {
        $query = mysql_query("SELECT * FROM blog_posts WHERE id = " . $inId . " ORDER BY id DESC");
    }
    else if (!empty($inTagId))
    {
        $query = mysql_query("SELECT blog_posts.* FROM blog_post_tags LEFT JOIN (blog_posts) ON (blog_post_tags.postID = blog_posts.id) WHERE blog_post_tags.tagID =" . $tagID . " ORDER BY blog_posts.id DESC");
    }
    else
    {
        $query = mysql_query("SELECT * FROM blog_posts ORDER BY id DESC");
    }
    $postArray = array();
    while ($row = mysql_fetch_assoc($query))
    {
        $myPost = new BlogPost($row["id"], $row['title'], $row['post'], $row['postfull'], $row["author_id"], $row['dateposted']);
        array_push($postArray, $myPost);
    }
    return $postArray;
}
?>

اکنون می توانیم به نمایش داده های خود بپردازیم، اجازه دهید فایل index.php خود را باز کرده و یک صفحه اصلی HTML ایجاد کنیم. در داخل بدن ما یک تقسیم با شناسه “اصلی” ایجاد می کنیم که شامل وبلاگ ما می شود. ما به وبلاگ خود یک عنوان می دهیم و سپس دومین بخش داخلی اصلی را داریم که “blogPosts” نامیده می شود.

<div id="main">
    <h1>My Simple Blog</h1>
    <div id="blogPosts">
    </div>
</div>

داخل وبلاگ PostPost div، مقداری PHP قرار می دهیم تا بتوانیم پست های خود را نمایش دهیم. ابتدا می خواهیم فایل include.php خود را وارد کرده و سپس تابع GetBlogPosts خود را بدون استدلال فراخوانی کنیم تا همه پست های وبلاگ ما دریافت شوند و آن را بر روی آرایه ای به نام blogPosts تنظیم کنیم.

<?php
include 'includes/includes.php';
$blogPosts = GetBlogPosts();
?>

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

 

foreach ($blogPosts as $post)
{

}

در داخل حلقه، از $ post به عنوان آرایه فعلی استفاده می کنیم و از آن جا که $ blogPosts یک آرایه از اشیاء BlogPost است، می توانیم به سادگی از “->” برای دسترسی به هر ویژگی که می خواهیم استفاده کنیم. اجازه دهید فقط عنوان هر پست وبلاگ را به صفحه ما اضافه کنیم و فقط یک <br/> را به عنوان مثال اضافه کنید.

foreach ($blogPosts as $post)
{
    echo $post->title . "<br/>";
}

اگر به پایگاه داده خود برویم و داده های جعلی را وارد کنیم، سپس index.php را در مرورگر باز کنیم، چیزی شبیه به این به دست می آید:

 

بیایید به صورت واقعی پست های خود را در HTML بسازیم. هر پست در یک div با یک کلاس “post” پیچیده می شود. سپس عنوان پست را در داخل یک برچسب h1 و پست واقعی را در داخل یک تگ <p> </p> خواهیم داشت

foreach ($blogPosts as $post)
{
    echo "<div class='post'>";
    echo "<h2>" . $post->title . "</h2>";
    echo "<p>" . $post->post . "</p>";
    echo "</div>";
}

 

همچنین به هر پست یک پاورقی بدهیم که شامل نویسنده پست، تاریخ ارسال و برچسب های پست باشد. ما تمام این اطلاعات را در یک تگ span با کلاس “footer” قرار می دهیم.

foreach ($blogPosts as $post)
{
    echo "<div class='post'>";
    echo "<h1>" . $post->title . "</h1>";
    echo "<p>" . $post->post . "</h1>";
      echo "<span class='footer'>Posted By: " . $post->author . " Posted On: " . $post->datePosted . " Tags: " . $post->tags . "</span>";
    echo "</div>";
}

حالا دوباره به فایل index.php خود در مرورگر نگاه کنیم.

 

به نظر می رسد همه، کار می کنند! سپس بیایید یک ظاهر طراحی شده را اضافه کنیم.

نحوه ایجاد یک وبلاگ شی گرا با استفاده از PHP

 

 

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

منتظر قسمت دوم باشید!


لینک کوتاه مطلب :
https://sourcesoft.ir/?p=3525

درباره نویسنده

طاهره رنجبر 11 نوشته در سورس سافت دارد . مشاهده تمام نوشته های

دیدگاه ها


دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

logo-samandehi