كيفاش نصاوب blog بل php الجزء الأول
فهاد المشروع غادي نشوفو كيفاش نقادو blog بإستعمال php كما غادي نشوفو كيفاش نسجلو المعلومات ديالنا فقاعدة البيانات و كيفاش نديرو صفحة خاصة بالأدمين لي غادي تكون عندو صلاحيات الإضافة والحذف.
نظرة سريعة بالفيديو
- إضافة قاعدة البيانات
أول حاجة غادي ندير غادي نزيد قاعدة بيانات جديدة ف phpmyadmin غادي نسميها php-blog من بعد غادي نزيد فيها جوج ديال الجداول واحد posts والثاني categories الأول غادي تكون فيه posts والثاني categories ديال كل post الكود ديالهم هو :
//table categories
CREATE TABLE IF NOT EXISTS `categories` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
//table posts
CREATE TABLE IF NOT EXISTS `posts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`category` int(11) NOT NULL,
`title` varchar(255) NOT NULL,
`body` text NOT NULL,
`author` varchar(255) NOT NULL,
`tags` varchar(255) NOT NULL,
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;
- إنشاء مجلد المشروع وباقي الصفحات
من بعد غادي تمشي ل wamp/www وغادي تزيد مجلد جديد تسميه php-blog من بعد تزيد فيه 9 مجلدات admin و config و css و fonts وhelpers و images و includes و js وlibraries غادي تقوم بتحميل bootstrap وغادي تزيد الملف bootstrap.min.css ف css والملف bootstrap.min.js ف js و الملفات لي فالمجلد fonts ف fonts من بعد غادي تزيد ملف تسميه header.php و آخر تسميه footer.php وآخر تسميه menu.php و تزيدهم فincludes الكود ديال هاد الملفات هو :
//header.php code
<?php
include('config/config.php');
include('libraries/Database.php');
include('helpers/format_helper.php');
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<title>Php Blog</title>
<!-- Bootstrap -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/blog.css" rel="stylesheet">
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
//menu.php code
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<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" href="index.php">Php Blog</a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href="index.php">Acceuil</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Posts <span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="posts.php">Tous les postst</a></li>
</ul>
</li>
<li><a href="admin/index.php">Admin Panel</a></li>
</ul>
</div><!--/.nav-collapse -->
</div><!--/.container-fluid -->
</nav>
//footer.php code
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="js/bootstrap.min.js"></script>
<script src="js/script.js"></script>
</body>
</html>
- الملف config.php
من بعد غادي تمشي للملجد config وغادي نزيد ملف نسميه config.php غادي تكون فيه المتغيرات لي غادي يمكنونا من الإتصال بقاعدة البيانات الكود ديالو :
<?php
define('DB_HOST','localhost');
define('DB_DATABASE','php-blog');
define('DB_USER','root');
define('DB_PASS','');
- الملف Database.php
من بعد غادي تمشي للملجد libraries وغادي نزيد ملف نسميه Database.php غادي تكون فيه functionsلي غادي يمكنونا من الإتصال بقاعدة البيانات وزيادة المعلومات فقاعدة البيانات تعديلها ثم حذفها الكود ديالو :
<?php
class Database{
public $host = DB_HOST;
public $db = DB_DATABASE;
public $user = DB_USER;
public $password = DB_PASS;
public $link;
public $error;
//constructeur
public function __construct(){
//appel la fonction connect
$this->connect();
}
private function connect(){
$this->link = new mysqli($this->host,$this->user,$this->password,$this->db);
if(!$this->link){
$this->error = "Connexion echouée".$this->link->connect_error;
}
}
//selection query
public function select($query){
$result = $this->link->query($query) or die($this->link->error.__LINE__);
if($result->num_rows > 0){
return $result;
}else{
return false;
}
}
//insertion query
public function insert($query){
$insert = $this->link->query($query) or die($this->link->error.__LINE__);
if($insert){
header("location:index.php?msg=".urlencode('Ajouté(e) avec succés'));
exit();
}else{
header("location:index.php?erreur=".urlencode('Erreur!'));
}
}
//modification query
public function update($query){
$update = $this->link->query($query) or die($this->link->error.__LINE__);
if($update){
header("location:index.php?msg=".urlencode('Modifié(e) avec succés'));
exit();
}else{
header("location:index.php?erreur=".urlencode('Erreur!'));
}
}
//suppression query
public function delete($query){
$delete = $this->link->query($query) or die($this->link->error.__LINE__);
if($delete){
header("location:index.php?msg=".urlencode('Supprimé(e) avec succés'));
exit();
}else{
header("location:index.php?erreur=".urlencode('Erreur!'));
}
}
}
- الملف format_helper.php
من بعد غادي تمشي للملجد helpers وغادي نزيد ملف نسميه format_helper.php غادي تكون فيه functions لي غادي نحتاجهم لبعض التغييرات الكود ديالو :
<?php
function shortenText($text,$chars = 400){
$text = $text." ";
$text = substr($text,0,$chars);
$text = substr($text,0,strrpos($text,' '));
$text = $text."...";
return $text;
}