جلسه چهارم
توی این جلسه می خوایم با بخش models آشنا بشیم.
می دونید که models ارتباط با دیتابیس رو به عهده داره پس برای اینکه بتونیم باهاش کار کنیم باید یه اطلاعاتی برای دسترسی به دیتابیس وارد کنیم.
از مسیر روبرو فایل config.php رو باز می کنیم: appliction/config
دنبال قسمتی به این عنوان بگردید :
کد PHP:
$config['base_url']
روبروش قسمتی داره که آدرس سایت رو باید وارد کنید. که شما از داخل مرورگر آدرس فعلی صفحه اصلی سایت رو کپی کنید و اینجا قرار بدید که اصولا باید شبیه به این باشه : http://localhost/ci
این آدرس برای این هستش که شما در داخل صفحات داینامیک بجای وارد کردن آدرس از base_url استفاده کنید. خوب صفحه رو ذخیره کنید و از همون فلدر فایل autoload.php رو باز کنید
خوب داخل فایل دنبال این خط بگردید :
کد PHP:
$autoload['libraries']
و جلوش مقدار 'database' رو داخل array قدار بدید. بعد چند خط پایین تر رو بروی 'helper' داخل array این مقدار 'url' رو وارد کنید. فایل رو ذخیره کنید
خوب دیتابیس رو به صورت اتولود در اوردیم حالا باید بریم یه جدول دیتابیس درست کنیم
وارد phpmyadmin می شیم و دیتابیسی به نام ci_whb درست می کنیم و داخل اون جدولی به نام test می سازیم.
دو ستون داخل تست قرار می دیم. id , title . حتما می دونید که باید id رو به صورت int و AUTO_INCREMENT بسازید و title رو هم varchar 255 . بعد از اینکه جدول رو ساختید داخل جدول یه مقدار هایی اینسرت می کنیم چون اگه مقداری وجود نداشته باشه چیزی نمایش داده نمیشه . برای اینسرت روی جدول در phpmyadmin کلیک می کنید از منوی بالا انسرت رو انتخاب می کنیم. توی قسمت id چیزی قرار نمی دیم اما توی قسمت title جلسه اول و جلسه دوم و جلسه سوم رو وارد می کنیم به نوبت. تا وقتی که وارد جدول تست میشیم سه تا مقدار داشته باشیم. اگه دوستان نتونستند انجام بدم فایل نمونه رو پیوست می کنم تا امپورت کنید. اما باید حتما خودتون یاد بگیرید
خوب حالا فایل database.php رو از همون فلدر باز کنید و اطلاعات دسترسی به دیتابیس رو داخل اون وارد کنید.
حالا آماده شدیم فایل model رو بسازیم
در داخل فلدر appliction , models یه فایل جدید ایجاد می کنیم به نام site_model و مقدار زیر رو داخلش قرار میدیم.
کد PHP:
<?php
class Site_model extends Ci_Model {
function getAll(){
$query = $this->db->get('test');
foreach ($query->result() as $row)
{
$data[] = $row;
}
return $data;
}
}
همین طور که می بینید با تابع getAll یه query ایجاد کردیم تا فایل ها رو از داخل دیتابیس به اصطلاح get (بگیره) کنه. و در آخر هم از return استفاده کردیم تا اطلاعات رو بیاره بده به کنترلر.
خوب میریم سراغ کنترلر تا اطلاعات رو بتونیم بدیم به view.
فایل site.php رو از داخل کنترلر باز می کنیم و اطلاعات داخلش رو به این صورت تغییر میدیم.
کد PHP:
<?php
class Site extends Ci_Controller {
function index(){
$this->load->model('site_model');
$data['records'] = $this->site_model->getAll();
$this->load->view('home', $data);
}
}
خوب در داخل تابع می بینیم که فایل model رو که تازه ساختیم اول از همه لود می کنیم. بعد یه مقدار دیتا قرار میدیم به هر اسمی که دوست داریم اینجا از records استفاده کردیم تا اطلاعات رو از تابع داخل getAll بگیره
و در آخر هم اطلاعات رو می دیم به view .
حالا تنها کاری که باید انجام بدیم اینه که فایل home.php رو داخل view ادیت کنیم تا اطلاعات رو نمایش بده.
فایل home.php رو از view باز می کنیم. و به این صورت ویرایش می کنیم.
کد PHP:
<html>
<head>
<title>Codeigniter</title>
</head>
<body>
<pre>
<?php print_r($records); ?>
</pre>
</body>
</html>
حالا سایت رو داخل مرورگر فراخوانی می کنیم. http://localhost/ci/site
اطلاعات داخل دیتابیس که وارد کرده بودیم باید داخل صفحه نمایش داده بشه به این صورت :
کد PHP:
Array ( [0] => stdClass Object ( [id] => 1 [title] => جلسه اول ) [1] => stdClass Object ( [id] => 2 [title] => جلسه دوم ) [2] => stdClass Object ( [id] => 3 [title] => جلسه سوم ) )
خوب انجام شد. تونستیم که از داخل دیتابیس اطلاعات رو بیاریم و داخل سایت نمایش بدیم.
موفق باشید تا جلسه بعد