فواصل

شرح ادارة محتوى cms مبسط

اليكم هذا الدرس الرائع في كيفيةع برمجه اسكريبت اداره محتوي هذا السكريبت كتبه أحد الأشخاص بمقع برمحه أجنبي وقد قمت بنقله وترجمته والتعديل عليه قليلا وقمت بتقديمه اليكم أرجو أن ينال اعجابكم وأن تستفسدوا من هذا الدرس والمعلومات الموجوده به .

نبدأ على بركة الله ………..

اولا راح نقوم بعمل قاعدة البيانات وراح تكون فيها الحقول الأتية:

id: الترميز التلقائى لترقيم الاضافات الجديده

title: لتخزين عنوان الموضوع

content: لتخزين محتوى الموضوع

author: حفظ اسم الكاتب

date: لتخزين تاريخ كتابة الموضوع واضافة الردود

[html]

CREATE TABLE `news` (

`id` int(11) NOT NULL auto_increment,

`title` text NOT NULL ,

`content` text NOT NULL,

`author` text NOT NULL,

`date` datetime NOT NULL default ’00-00-0000 00:00:00′,

PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=10 ;
[/html]

ثانيا: عمل ملف الاتصال بقاعدة البيانات وراح نسميه site.inc.php

وقم بتخزينه فى مجلد الاسكربت مباشرة ولنفرض ان اسم المجلد site

[html] <?
//declare the database values

$confg['db_uname'] = "user";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //your database username
$confg['db_paswd'] = "pass";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //your database password
$confg['db_host'] = "localhost";&nbsp; //usually localhost
$confg['db_dbase'] = "news";&nbsp;&nbsp;&nbsp;&nbsp; //the database name

########################################################
//create the function to log into the DB

function db_login() {

global $confg;

$link = @mysql_connect($confg['db_host'], $confg['db_uname'], $confg['db_paswd']) or die("Error connecting: " . mysql_error());

@mysql_select_db($confg['db_dbase'], $link);

}

//function for logging out from the DB

function db_logout() {

@mysql_close($link);

}

?>

[/html]

طبعا ملف الاتصال عبارة عن فانكشن اتصال وفانكشن اغلاق حتى يسهل استدعائهم ب db_login() او db_logout()

الحين سوينا القاعدة ومجلد الاسكربت بداخله ملف الاتصال بالقاعدة

الحين نسوى مجلد باسم admin داخل مجلد الاسكربت site

ثم راح نقوم بعمل صفحة لاضافة موضوع وراح نسميها add.php

وراح نضعها فى مجلد الادمن

وهذا هو الكود الكامل وراح اشرحه على ثلاثة اجزاء:

[html] <?
require_once("../site/site.inc.php");&nbsp;&nbsp; //Calls in the previous file we created

// form not yet submitted
// display initial form
if (!$submit)
{

?>

Add New Post<br />
<form action="<? echo $PHP_SELF; ?>" method="POST">
<input type="hidden" name="id"&nbsp; value="id">
Title:<br />
<input size="50" maxlength="60" type="text" name="title"><br />

News Content:<br />
<textarea name="content" cols="40" rows="10"> </textarea> <br />
Author:<br />
<input size="50" maxlength="250" type="text" name="author"> <br />
<input type="Submit" name="submit" value="Update">
</form>

<?

} else {

//set up error array
$err = array();
$count = 0;

//validate the user text input fields
if (!$title) { $err[$count] = "Invalid entry: title"; $count++; }

if (!$content) { $err[$count] = "Invalid entry: content"; $count++; }

if (!$author) { $err[$count] = "Invalid entry: author"; $count++; }

// if no error found…
if (sizeof($err) == 0) {

db_login();&nbsp; //we defined this function in site.inc.php

// generate and execute query to insert the post
$query = "INSERT INTO news(id, title, content, author, date) VALUES(0, ‘$title’, ‘$content’, ‘$author’, NOW())";
$result = mysql_query($query) or die ("Error in query: $query. " . mysql_error());

// print result
echo "Update successful. <a href=’index.php’>Go back to the main menu</a>.";
} else {
// errors found
// print as list
echo "<font size=-1>The following errors were encountered: <br>";
echo "<ul>";
for ($x=0; $x<sizeof($errorList); $x++) {
echo "<li>$errorList[$x]";
}
echo "</ul></font>";
}
}
?>

[/html]

شرح كود الصفحة السابق

اولا: الاتصال بالقاعدة +عمل فورم ادخال البيانات وكتابتها

[html] <?
require_once("../site/site.inc.php");&nbsp;&nbsp; //Calls in the previous file we created

// form not yet submitted
// display initial form
if (!$submit)
{

?>

Add New Post<br />
<form action="<? echo $PHP_SELF; ?>" method="POST">
<input type="hidden" name="id"&nbsp; value="id">
Title:<br />
<input size="50" maxlength="60" type="text" name="title"><br />

News Content:<br />
<textarea name="content" cols="40" rows="10"> </textarea> <br />
Author:<br />
<input size="50" maxlength="250" type="text" name="author"> <br />
<input type="Submit" name="submit" value="Update">
</form>

<?

} else { &nbsp;

[/html]

والحين راح نضيف كود للتحقق من المدخلات فى الفورم

ولاحظ انها راح تكون عبارة عن مصفوفة
بحيث انه لو لم يتم ادخال اى قيم فى اى فورم راح يعطى عبارة ان الحقول فارغة

ولو كانت الفورمز كلها مدرج بها اى عبارة, راح نسوى حالة if بحيث لو حجم مصفوفة الخطأ =0 اى انه لا يوجد اى خطأ, راح نتصل بالقاعدة وندخل البيانات فى الفورمز فى قاعدة البيانات

نشوف الكود

[html] //set up error array
$err = array();
$count = 0;

//validate the user text input fields
if (!$title) { $err[$count] = "Invalid entry: title"; $count++; }

if (!$content) { $err[$count] = "Invalid entry: content"; $count++; }

if (!$author) { $err[$count] = "Invalid entry: author"; $count++; }

// if no error found…
if (sizeof($err) == 0) { &nbsp;

[/html]

واخيرا الاتصال وتخزين البيانات فى القاعدة

[html] db_login();&nbsp; //we defined this function in site.inc.php

// generate and execute query to insert the post
$query = "INSERT INTO news(id, title, content, author, date) VALUES(0, ‘$title’, ‘$content’, ‘$author’, NOW())";
$result = mysql_query($query) or die ("Error in query: $query. " . mysql_error());

// print result
echo "Update successful. <a href=’index.php’>Go back to the main menu</a>.";
} else {
// errors found
// print as list
echo "<font size=-1>The following errors were encountered: <br>";
echo "<ul>";
for ($x=0; $x<sizeof($errorList); $x++) {
echo "<li>$errorList[$x]";
}
echo "</ul></font>";
}
}
?> &nbsp;

[/html]

لأحظ اننا استخدمنا دالة ادراج الخطأ errorlist

الحين محتاجين لعمل صفحة لامكانية تعديل الموضوع او حذف

راح نسوى صفحة بها لست لادراج كافة المواضيع المضافة مع اضافة خيار التعديل او الحذف
list.php

[html] <?
include("../site.inc.php");

db_login();

//Generate the query so we can retrieve all titles in the DB in descending ID order

$query = "SELECT id, title FROM news ORDER BY id DESC";
$result = mysql_query($query) or die ("Error in query: $query. " . mysql_error());

// if records are present
if (mysql_num_rows($result) > 0) {

while($send = mysql_fetch_object($result)) {

echo" $send->title – <a href=’ed.php?id=$send->id’>Edit this</a> – <a href-=’del.php?id=$send->id’>Delete this</a><br /><br />";
}
}
?>

[/html]

شرح الكود

انكلود لملف الاتصال بالقاعدة>اتصلنا باستدعاء الفانكشن>عملنا استعلام للمدخلات المخزنة فى القاعدة>ثم حسبنا عدد الصفوف الموجودهnum_rows>ثم جلبنا البيانات المخزنة >ادرجنا الناتج على هيئة عنوان الموضوع+خيار التعديل والحذف

الحين راح نسوى صفحة لتعديل المواضيع ed.php التى راح تظهر بعد الضغط على زر edit this

[html]

<?
include("../site.inc.php");

// form not yet submitted
// display initial form with values pre-filled
if (!$submit)
{
db_login();

// generate and execute query
$query = "SELECT * FROM news WHERE id = ‘$id’";
$result = mysql_query($query) or die ("Error in query: $query. " . mysql_error());

// if a result is returned
if (mysql_num_rows($result) > 0)
{
// turn it into an object
$send = mysql_fetch_object($result);

// print form with values pre-filled
?>

Edit News Post
<form action="<? echo $PHP_SELF; ?>" method="POST">
<input type="hidden" name="id"&nbsp; value="<? echo $send->id; ?>">
Title:<br />
<input size="50" maxlength="250" type="text" name="title" value="<? echo $send->title; ?>"><br />
Content:<br />
<textarea name="content" cols="40" rows="10"><? echo $send->content; ?></textarea><br />
Author:<br />
<input size="50" maxlength="250" type="text" name="author" value="<? echo $send->author; ?>"><br />

<input type="Submit" name="submit" value="Update">
</form>

<?
}
// no result returned

else {
echo "<font size=-1>That post does not exist.</font>";
}
}
// form submitted
// start processing it
else
{

// set up error list array
$errorList = array();
$count = 0;

// validate text input fields
if (!$title) { $errorList[$count] = "Invalid entry: title"; $count++; }

if (!$content) { $errorList[$count] = "Invalid entry: content"; $count++; }

if (!$author) { $errorList[$count] = "Invalid entry: author"; $count++; }

if (sizeof($errorList) == 0) {
db_login();

// generate and execute query
$query = "UPDATE news SET title = ‘$title’, content = ‘$content’, author = ‘$author’ WHERE id = ‘$id’";
$result = mysql_query($query) or die ("Error in query: $query. " . mysql_error());

// print result
echo "<font size=-1>Update successful. <a href=index.php>Go back to the main menu</a>.</font>";

} else {
// errors occurred
// print as list
echo "<font size=-1>The following errors were encountered: <br>";
echo "<ul>";
for ($x=0; $x<sizeof($errorList); $x++)
{
echo "<li>$errorList[$x]";
}
echo "</ul></font>";
}
}

?>

[/html]

طبعا الكود سهل عبارة عن فورزمز وبها المدخلات المخزنة بالقاعدة وجلبناها من المتغير send من mysql_fetch_array

ثم استخدمنا دالة فحص الخطأ مثل ما شرحنا السابق للتأكد من خلو اى خطأ

ثم استخدمنا امر تحديث البيانات update

الحين راح نسوى صفحة الحذف ونسميها del.php

[html]

<?
include("../site.inc.php");

db_login();

// generate and execute query
$query = "DELETE FROM news WHERE id = ‘$id’";
$result = mysql_query($query) or die ("Error in query: $query. " . mysql_error());

// print result
echo "<font size=-1>Deletion successful. <a href=index.php>Go back to the main menu</a>.</font>";

?>

[/html]

بسيط استخدمنا امر delete

الحين يتبقى نسوى صفحة اندكس بسيطة

ولنفرض انها تكون لصفحة اضافة موضوع

[html]

<?php

include("admin/add.php/");

?>

[/html]

الحين تمام بعد ما انتهينا من السابق

راح نشرح بنية الاسكربت

سوينا ملف الاسكربت واسمه site

بداخله ملف اسمه site.inc.php و ملف index.php ومجلد admin
بداخل مجلد admin توجد الملفات الاتية:

add.php
del.php
ed.php
list.php

مقالات ذات صلة

اضف رد