موقع إعلانات بإستعمال fuelphp framework الجزء الأول


فهاد المشروع الجديد غادي نشوفو كيفاش نقادو موقع ديال الإعلانات بإستعمال fuelphp لي هي framework ديال ل php معروفة ففالموقع انا كنعطيك les bases ونتا يمكنلك من بعد تكمل الحوايج لي ناقصين بمجهودك الشخصي باش تطور المستوى ديالك وكلشي راه كاين ف la documentation فغوغل.

نظرة سريعة بالفيديو

1- إنشاء قاعدة البيانات

أول حاجة غادي نديرو هي غادي نزيدو قاعدة بيانات جديدة ف phpmyadmin نسميوها annonces من بعد غادي نزيد فيها 2 ديال لtables نسميهم users,annonces هادي هي قاعدة البيانات لي غادي تمكنا من حفظ الإعلانات لي غادي يزيدها المستخدم الكود باش تزيد الجداول فقاعدة البيانات هو :

                                --
-- Structure de la table `annonces`
--

CREATE TABLE `annonces` (
  `id` int(11) NOT NULL,
  `user_id` int(11) NOT NULL,
  `title` varchar(255) NOT NULL,
  `body` text NOT NULL,
  `date_ajout` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `category` varchar(255) NOT NULL,
  `image` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Structure de la table `users`
--

CREATE TABLE `users` (
  `id` int(11) NOT NULL,
  `username` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `group` int(11) NOT NULL,
  `profile_fields` text NOT NULL,
  `last_login` int(20) NOT NULL,
  `login_hash` varchar(255) NOT NULL,
  `created_at` int(11) NOT NULL,
  `updated_at` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
                            

2- تحميل FuelPhp

من بعد غادي تحمل FuelPhp من الموقع الرسمي https://fuelphp.com من بعد غادي تاخد المجلد لي حملتي وتزيدو ف xampp ف htdocs خدمتي بwamp أو easyphp زيدو ف www منبعد باش تربط الإتصال بقاعدة البيانات غادي تمشي ل fuel/app/development/config/db.php وغادي تدير تعديلات على الكود غادي تزيد سمية قاعدة البيانات لي زدتي فphpmyadmin ولuser لي هو root وكلمة المرور الكود ديال الملف ملي تغير هو :

                                <?php
/**
 * The development database settings. These get merged with the global settings.
 */

return array(
	'default' => array(
		'connection'  => array(
			'dsn'        => 'mysql:host=localhost;dbname=annonces',
			'username'   => 'root',
			'password'   => '',
		),
	),
);
                            

3- الصفحة الأساسية

الصفحة لي غادي تكون هي الأساس ديال كل الصفحات وغادي يكون فيها روابط css وjavascript والقائمة ديال التصفح غادي تزيدها ف app/views وتسميها template.php وفالقائمة كاين accueil لي كتدي للصفحة الرئيسية ولل controller Annonces لي غادي يكون هو root ديالنا وغادي نزيدوه من بعد ثم كاين connexion لي كتدي لل controller Users ولfonction login والرابط كيبان فقط يلا كان المستخدم ممكونيكطيش ثم كاين Déconnexion لي كتدي لل controller Users ولل fonction logout لي كتمكن المستخدم باش يديكونيكطا والرابط كيبان فقط يلا كان المستخدم مكونيكطي ثم كاين Inscription لي كتدي لل controller Users ولل fonction register ثم كاين deposer لي كتدي لل controller Annonces ولfonction add والرابط كيبان فقط يلا كان المستخدم مكونيكطي ثم كاين رسائل الخطأ والنجاح ثم لcontent لي هو محتوى الصفحات لي غادي نزيدو غادي يكون وسط هاد الصفحة الأساسية الكود ديال الملف هو :

                                <!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title><?php echo $title; ?></title>
    <?php echo Asset::css('bootstrap.css'); ?>
    <?php echo Asset::css('main.css'); ?>
</head>
<body>
    <nav class="navbar navbar-default">
    <div class="container-fluid">
        <!-- Brand and toggle get grouped for better mobile display -->
        <div class="navbar-header">
        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
        </button>
        <a class="navbar-brand" id="brand-title" href="<?php echo Uri::base();?>">Annonces.com</a>
        </div>
        <!-- Collect the nav links, forms, and other content for toggling -->
        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
        <ul class="nav navbar-nav navbar-left">
        <?php if (Auth::check()):?>
            <li><a href="<?php echo Uri::base();?>"><i class="fa fa-home">Accueil</i></a></li>
            <li><a href="<?php echo Uri::base();?>add"><i class="fa fa-book">Déposer</i></a></li>
            <li><a href="<?php echo Uri::base();?>logout"><i class="fa fa-book">Déconnexion</i></a></li>
        <?php else:?>
            <li><a href="<?php echo Uri::base();?>"><i class="fa fa-home">Accueil</i></a></li>
            <li><a href="<?php echo Uri::base();?>login"><i class="fa fa-book">Connexion</i></a></li>
            <li><a href="<?php echo Uri::base();?>register"><i class="fa fa-book">Inscription</i></a></li>
        <?php endif;?>
        </ul>
        </div><!-- /.navbar-collapse -->
    </div><!-- /.container-fluid -->
    </nav>
    <div id="container">
    <?php if(Session::get_flash('success')):?>
        <div class="alert alert-success">
            <?php echo Session::get_flash('success');?>
        </div>
        <?php endif;?>
        <?php if(Session::get_flash('error')):?>
        <div class="alert alert-danger">
            <?php echo Session::get_flash('error');?>
        </div>
        <?php endif;?>
        <?php echo $content; ?>
    </div>
</body>
</html>
                            

4- الملف Annonces.php

فالمجلد fuel/app/classes/controller كتزيد ملف جديد سميه Annonces.php هاد ل controller فيه ل les fonctions لي غادي يمكنو من التعامل مع الإعلانات فأولا كاين action_index لي كتسترجع الإعلانات من قاعدة البيانات بواسطة Model_Annonce لي غادي نزيدوه من بعد وكترسلهم للصفحة index لي غادي تمكن من عرض الإعلانات ولي هي الصفحة الرئيسية ثم كاين action_view لي كتسترجع إعلان اختارو المستخدم بالإعتماد على لid ديالو وكترسلو للصفحة view لي غادي تمكن من عرض المعلومات الخاصة بإعلان ثم كاين action_add لي كتمكن من إضافة إعلان ولي كتستقبل المعلومات لي ترسلو من الفورم ولي غادي تكون فالملف add.php ثم كاين action_edit لي كتعمر الفورم ديال التعديل بالمعلومات الخاصة بإعلان اختارو المستخدم ولي كيكون هو لي زادو بالإعتماد على ل id ديالو ثم كتعدلو ثم كاين action_delete لي كتحدف إعلان اختارو المستخدم بالإعتماد على لid ديالو ولي كيكون هو لي زادو الكود ديال الملف هو :

                                    <?php
class Controller_Annonces extends Controller_Template
{
	//view main page
	public function action_index()
	{
		$annonces = Model_Annonce::find('all');
		$data = array('annonces'=>$annonces);
        $this->template->title = "Accueil";
        $this->template->content = View::forge('annonces/index', $data);
	}
	//add ad
	public function action_add()
	{
		if(Input::post('submit')){
			$annonce = new Model_Annonce();
			$annonce->user_id = Auth::get('id');
			$annonce->title = Input::post('title');
			$annonce->body = Input::post('body');
			$annonce->category = Input::post('category');
			$annonce->image = Input::post('photo');
			$annonce->save();
			Session::set_flash('success','Annonce Ajoutée');
			Response::redirect('index');
		}
		$data = array();
        $this->template->title = "Déposer Annonce";
        $this->template->content = View::forge('annonces/add', $data);
	}
	//edit ad
	public function action_edit($id)
	{
		$annonce = Model_Annonce::find('first',array(
			'where' => array(
				'id'=>$id
			)
		));
		if(Input::post('submit')){
			$annonce->title = Input::post('title');
			$annonce->body = Input::post('body');
			$annonce->category = Input::post('category');
			$annonce->image = Input::post('photo');
			$annonce->save();
			Session::set_flash('success','Annonce modifié');
			Response::redirect('index');
		}
		$data = array('annonce'=>$annonce);
        $this->template->title = "Modifier Annonce";
        $this->template->content = View::forge('annonces/edit', $data);
	}
	//delete ad
	public function action_delete($id)
	{
		$annonce = Model_Annonce::find('first',array(
			'where' => array(
				'id'=>$id
			)
		));
	    $annonce->delete();
		Session::set_flash('success','Annonce supprimée');
		Response::redirect('index');
	}
	//view ad
	public function action_view($id)
	{
		$annonce = Model_Annonce::find('first',array(
			'where' => array(
				'id'=>$id
			)
		));
		$data = array('annonce'=>$annonce);
        $this->template->title = "Annonce";
        $this->template->content = View::forge('annonces/view', $data);
	}
}
                                

5- الملف annonce.php

فالمجلد fuel/app/classes/model زيد ملف جديد سميه annonce.php ولي غادي يكون هو ل model لي هضرنا عليه من قبل ولي غادي يكون فيه واحد ل array لي كيتضمن لحقول لي غادي تشملهم الإضافة والتعديل والحدف فباش تمكن من إجراء العمليات لي هضرنا عليها من قبل لازم ما تحدد الحقول لي غادي تشملها وإلا ماغاديش تمكن من تنفيدها الكود ديال الملف هو:

                                    <?php
class Model_Annonce extends Orm\Model
{
    protected static $_properties = array('id','user_id','title', 'body', 'category','date_ajout','image');
}
                                


بحث في الموقع


إشترك للتوصل بالجديد