ثبت پست ها در پایگاه داده

Recording Posts in The Database

0 79

ثبت پست ها در پایگاه داده

در جلسه ی قبل فرم HTML خود را برای پست نویسی تکمیل کردیم، حالا نوبت به نوشتن کدهای سمت سرور برای INSERT شدن در پایگاه داده است. برای شروع به فایل Posts.php از پوشه ی controllers بروید تا در تابع add شروع به کدنویسی کنیم. در حال حاضر  تنها کاری که تابع add انجام می دهد نمایش فرم است بنابراین باید مانند بقیه ی فرم ها چک کنیم تا ببینیم درخواست ارسالی به این صفحه از نوع POST است یا خیر.

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

توضیح کد:

در این تابع چک می کنیم تا ببینیم آیا درخواست ارسالی POST (از سمت فرم) بوده است یا خیر. در صورتی که از سمت فرم نبود view فرم را بارگذاری می کنیم و در صورتی که POST بود می گوییم داده ها را پاک سازی کن (تابع filter_input_array) و سپس مقادیر فرم را درون اعضای data$ قرار بده. در آخر هم id کاربر را از Session مربوطه اش می گیریم و اعضایی برای خطاها (مانند خالی بودن) ایجاد می کنیم.

حالا باید کدهای زیر را نیز به این قسمت اضافه کنیم:

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

توضیح کد:

ابتدا چک کرده ایم که مقادیر title و body خالی نباشند. در صورتی که خالی باشند به title_err یا body_err یک پیام خطا می دهیم. سپس چک می کنیم تا هر دو مقدار err و body_err خالی باشند؛ در این صورت یعنی هیچ خطایی وجود ندارد و ما باید فرم را ثبت کنیم. برای ثبت پست نیز آن را به تابعی به نام addPost داده ایم که بعدا تعریف خواهیم کرد. سپس با استفاده از تابع کمکی که قبلا تعریف کرده بودیم (flash) یک پیام را به مخاطب نمایش می دهیم و او را به صفحه ی پست ها redirect می کنیم. در غیر این صورت پیام Something went wrong را به کاربر نمایش می دهیم و view را با خطاهای موجود دوباره بارگذاری می کنیم.

حالا به پوشه ی models و فایل post.php بروید تا تابع addPost را تعریف کنیم:

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

کوئری ما بسیار ساده است؛ گفته ایم مقادیر title, user_id, body را وارد جدول posts کن. سپس مانند دفعات قبل و با استفاده از توابعی که نوشتیم (توابع query و bind) کوئری را آماده ی اجرا می کنیم. در آخر نیز با استفاده از دستور execute کوئری اجرا می شود و اگر مشکلی نداشت به ما true را برمی گرداند.

حالا به پوشه ی views>posts و فایل index.php بروید و پیام flash را بالای صفحه بگذارید:

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

تا اینجای کار باید به راحتی بتوانیم پست های خود را بنویسیم و در صفحه ی index مربوطه مشاهده کنیم.

حالا نوبت به نوشتن کدهای دکمه ی more است. اگر موس خود را روی دکمه ی more ببرید میبینید که دارای دارای لینکی به شکل localhost/shareposts/posts/show/2 یا چنین چیزی است. عدد آخر این لینک همان id پست ما است و ما می خواهیم با استفاده از آن با دکمه ی more کار کنیم.

وارد پوشه ی controller و فایل Posts.php را باز کنید. سپس پایین تر از تابع add تابع جدیدی به نام show ایجاد کنید. اگر یادتان باشد فریم ورک خود را طوری نوشته ایم که با URL کار کند. به طور مثال قسمت posts از آدرس localhost/shareposts/posts/show/2 به کنترلر posts ارسال می شود به همین دلیل است که تابع show را در Posts.php مینویسیم. اگر از جلسات اولیه یادتان باشد بعد از show که متد ما بود هر چه بیاید id خواهد بود. بنابراین اگر آدرس فرضی localhost/shareposts/posts/show/2 را داشته باشیم عدد 2 می شود id ما.

با همین منطق تابع show را می نویسیم و به آن پارامتری به نام id$ می دهیم:

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

حالا اگر روی دکمه ی more کلیک کنیم باید به صفحه ای دیگر منتقل شویم که یک دکمه ی back داشته باشد. زمانی که این اتفاق افتاد مطمئن می شویم که کار درست پیش می رود.

به فایل Posts.php برگردید. برای تابع show از متدی به نام getPostById استفاده می کنیم:

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

کوئری بسیار ساده است. Id پست را می گیریم (از URL با دکمه ی More می آید) و با استفاده از دستور SELECT آن را دریافت می کنیم تا نمایش داده شود. به Posts.php برگردید و این ردیف برگشتی را به data بدهید:

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

حالا باید اطلاعات کاربر را نیز بگیریم اما model مربوط به user را بارگذاری نکرده ایم بنابراین در بالای فایل Posts.php و درون constructor این کار را انجام می دهیم:

سپس در پایین صفحه و درون تابع show کد زیر را اضافه می کنیم:

اکنون می توانیم user را نیز به data اضافه کنیم. تا تابع به این شکل در بیاید:

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

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

حالا می توانیم به فایل Show.php برویم و کدهای HTML را تکمیل کنیم. شما می توانید با سلیقه ی خودتان این کدها را تغییر دهید:

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

قسمتی که شرط ['data['post']->user_id == $_SESSION['user_id را داریم یعنی اگر پست مربوطه متعلق به کاربر است (همخوانی session و ستون user_id). دلیل این کار این است که دکمه های ویرایش یا حذف پست فقط برای صاحب همان پست نمایش داده شود و دیگر کاربران نتوانند پست های یکدیگر را ویرایش یا حذف کنند.

همچنین دلیل استفاده از form برای دکمه ی delete این است که میخواهیم این درخواست از طریق POST به سرور برسد نه از راه های دیگر. کد نویسی آن را در جلسات آینده انجام خواهیم داد.

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

در قسمت بعدی کارایی دکمه ی ویرایش (edit) را اضافه خواهیم کرد.

ترتیبی که روکسو برای یادگیری مطالب سری آموزش ساخت شبکه اجتماعی به شما توصیه می‌کند:

ارسال نظر

توجه:‌ آدرس ایمیل شما منتشر نخواهد شد.

film izle | eskisehir escort | modanisa | mersin escort | www.ieski.com | eskort adana | www.izmir-eskort.org | kabak koyu | hd tv izle