التغطية المصورة ليوم سوالف: الجزء الأول، الجزء الأخير
الفائزون في المسابقة الأصغر لسوالف كاست

 

العودة   سوالف سوفت > قسم تطوير وبرمجة المواقع للمتقدمين > PHP
المدوّنات البحث مشاركات اليوم اجعل كافة المشاركات مقروءة

موضوع مغلق  
 
LinkBack أدوات الموضوع
عضو نشيط
تاريخ التسجيل: Jul 2003-
#1 (permalink)  
جزء من القالب في حلقة تكرار ، (Dr.Server|haidar )


السلام عليكم و رحمة الله و بركاته ..

نظام قوالب بسيط .. ليس فيه أي تجديد .. فقط استخدم فيه إضافة قالب و تحرير و حذف + شرح لطريقة تكرار جزء محدد من أي قالب ..

أولاً نزرع في القاعدة هذا الجدول الخاص بحفظ القوالب :


كود PHP:
CREATE TABLE template (
  
id int(10unsigned NOT NULL auto_increment,
  
name varchar(30NOT NULL default '',
  
html text NOT NULL,
  
KEY id (id)
TYPE=MyISAM
في الملف admin.php ضمن المرفقات ستجد لوحة تحكم بسيطة لإضافة قالب أو تحرير أو حذف

لطباعة قالب معيّن مع استبدال المتغيرات فيه نكتب التالي :
كود PHP:

 
eval("echo \""GetTemplate 'templatename' ) ."\";"); 
(templatename تستبدلها باسم القالب)

لتكرار جزء معيّن من القالب .. و في المثال عندي صفحة لعرض اسماء الأعضاء و أريد أن أكرر فقط الجزء الخاص بالأسماء بلا بيانات الصفحة كلها في القالب index

محتويات القالب index
كود PHP:
<html
dir
=rtl>
<
title>السلام
عليكم
</title>
<
body bgcolor=#0c0c0c>
<center><b>قائمة
أسماء الأعضاء
<br></b>
<
loop>
<
br>$name
<loop>
</
body>
</
html
نلاحظ أولاً أن الجزء الذي أريد تكراره محدد بالوسم <loop> و هو وسم اختياري من اختيارك
الآن أنشئ مصفوفة تقسّم القالب index إلى ثلاثة أجزاء .. الجزء الأول قبل الوسم <loop> الأولى و الجزء الثاني الجزء المكرر و الجزء الثالث بقية القالب ..
أمر انشاء الأقسام :
كود PHP:
   $pindexexplode ("<loop>",GetTemplate index)); 
$pindex[0] للجزء الأول
$pindex[1] للجزء المكرر
$pindex[2] للجزء الثالث

فلنفترض كمثال أن الأسماء مخزّنة في القاعدة في جدول اسمه names

محتويات الملف و لاحظ فيه أن العنصر الثاني من المصفوفة يقع داخل حلقة تكرار و لاحظ أن هناك دالة في أول الملف ضرورية جداً لاستخراج القوالب من قاعدة البيانات و اسمها GetTemplate :
كود PHP:
<?
      
include("c/config.php");
    
//
    
function GetTemplate ($Name) {
    
$Sql "select * from template Where name = '$Name'

"
;
    
$Result mysql_query($Sql);
    while (
$Row mysql_fetch_array($Result))
    {
  
extract($Row);
  
$html addslashes("$html");
  }
  return (
$html);
  }
  
  
//
 
eval("echo \""$pindex[0] ."\";");

  
$Sql "select * from names ORDER BY id ASC";
    
$Result mysql_query($Sql);

    while (
$Row mysql_fetch_array($Result))
    {
       
extract($Row);

      eval(
"echo \""$pindex[1] ."\";");

        }


           eval(
"echo \""$pindex[2] ."\";");
أتمنى أن تكون الطريقة واضحة و سهلة و تؤدي الغرض ..
المرفق : ملف دالة استخراج القوالب + ملف لزرع الجداول في القاعدة + مجلد يحتوي ملف لإعدادات قاعدة البيانات و ملف للتحكم في القوالب .






الملفات المرفقة
نوع الملف: zip templatebyomars.zip‏ (3.3 كيلوبايت, المشاهدات 257)
__________________
إن كانَ عندك يا زمانُ بقيّةً
ممّا يُهان بها الكرامُ فهاتها !
__________
يا أهل سوالف سوفت .. اكتبوا غير الـفاشل و لا تكتبوا الغير فاشل :) .. (غير) لا تُعرّف يرعاكم الله .
omars غير متواجد حالياً   قديم 03-12-2004, 03:07 PM
عضو سوبر نشيط
تاريخ التسجيل: Mar 2002-
#2 (permalink)  

أخي الاستاذ omars أشكرك من صميم القلب






haidar غير متواجد حالياً   قديم 03-12-2004, 05:26 PM
عضو فعال
تاريخ التسجيل: Feb 2002-
#3 (permalink)  

الله الله عليك ياعمر أحسنت يابطل

راح أطبق عليه بعض الأمثلة على السيرفر الشخصي

وجزاك الله الف الف خير






__________________
ومامن كاتب إلا سيفنى ****** ويبقي الدهر ماكتبت يداه
فلا تكتب بكفك غير شيء ****** يسرك يوم القيامة أن تراه
Dr.Server غير متواجد حالياً   قديم 03-12-2004, 06:27 PM
عضو نشيط
تاريخ التسجيل: Dec 2003-
#4 (permalink)  

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

اشكرك من كل قلبي على هذا الدرس الرائع

سوف اقوم بتطبيق

وجزيت الف خير


تحياتي






alsultannb غير متواجد حالياً   قديم 06-12-2004, 03:03 AM
عضو نشيط
تاريخ التسجيل: Jul 2003-
#5 (permalink)  

اقتباس:
المشاركة الأصلية كتبت بواسطة haidar
أخي الاستاذ omars أشكرك من صميم القلب
حياك الله أخي ..

و أبشرك النظام هذا طوّرته جدّاً على بساطته






__________________
إن كانَ عندك يا زمانُ بقيّةً
ممّا يُهان بها الكرامُ فهاتها !
__________
يا أهل سوالف سوفت .. اكتبوا غير الـفاشل و لا تكتبوا الغير فاشل :) .. (غير) لا تُعرّف يرعاكم الله .
omars غير متواجد حالياً   قديم 28-01-2005, 02:48 AM
عضو نشيط
تاريخ التسجيل: Jul 2003-
#6 (permalink)  

اقتباس:
المشاركة الأصلية كتبت بواسطة Dr.Server
الله الله عليك ياعمر أحسنت يابطل

راح أطبق عليه بعض الأمثلة على السيرفر الشخصي

وجزاك الله الف الف خير

أخي الفاضل ما قلت رأيك ؟






__________________
إن كانَ عندك يا زمانُ بقيّةً
ممّا يُهان بها الكرامُ فهاتها !
__________
يا أهل سوالف سوفت .. اكتبوا غير الـفاشل و لا تكتبوا الغير فاشل :) .. (غير) لا تُعرّف يرعاكم الله .
omars غير متواجد حالياً   قديم 28-01-2005, 02:53 AM
عضو فعال
تاريخ التسجيل: Feb 2002-
#7 (permalink)  

كود PHP:
<?php

$link
=mysql_connect("localhost","","") ;
mysql_select_db("myforum",$link) ;

function 
GetTemplate ($Name) {
global 
$html;
$file=fopen($Name,"r");
$html fread($file,filesize($Name));
  return 
$html;
  }

$pindexexplode ("<!--floop-->",GetTemplate ("template2.htm"));

echo 
$pindex[0];

$pindex[1]= explode ("<!--sloop-->",GetTemplate ("template2.htm"));
$query =mysql_query("select * from aqsam where rgm_ab=0");
$pindex[1][0]=str_replace('"',"'",$pindex[1][0]);
while(
$cat mysql_fetch_array($query))
 {
  
extract($cat);

eval(
"echo \""$pindex[1][0] ."\";");
}
?>
أخ عمر تمكنت بفضل الله تعالى ثم بفضل الفكرة اللي حطيتها هنا من تطبيق القالب على منتدى بسيط قمت ببرمجته .. وأعجبتني سهولة الفكرة بشكل ماتتصوره والله .. حتى أنه يمكنك تصميم صفحة واحدة تشمل القالب كاملا بشرط أن تضع علامات الفصل بشكل واضح بينها وتحسن الوصول لها لاحقا باستخدام explode

جزاك الله ألف خير وجعله لك في ميزان صالح عملك






__________________
ومامن كاتب إلا سيفنى ****** ويبقي الدهر ماكتبت يداه
فلا تكتب بكفك غير شيء ****** يسرك يوم القيامة أن تراه
Dr.Server غير متواجد حالياً   قديم 28-01-2005, 03:20 AM
عضو نشيط
تاريخ التسجيل: Jul 2003-
#8 (permalink)  

و أبشّرك خيراً..
صدقني عملت تطويرات عليه تفيدك جداً..

سأنسّقها للعرض و أعطيك إياها ..


انتظرني يا عزيزي .. سؤالك هو من حفّزني






__________________
إن كانَ عندك يا زمانُ بقيّةً
ممّا يُهان بها الكرامُ فهاتها !
__________
يا أهل سوالف سوفت .. اكتبوا غير الـفاشل و لا تكتبوا الغير فاشل :) .. (غير) لا تُعرّف يرعاكم الله .
omars غير متواجد حالياً   قديم 28-01-2005, 03:27 AM
عضو فعال
تاريخ التسجيل: Feb 2002-
#9 (permalink)  

بالانتظار أخ عمر والله يقويك

ولك خالص تقديري






__________________
ومامن كاتب إلا سيفنى ****** ويبقي الدهر ماكتبت يداه
فلا تكتب بكفك غير شيء ****** يسرك يوم القيامة أن تراه
Dr.Server غير متواجد حالياً   قديم 28-01-2005, 06:20 AM
صاحب موقع مهارات سوفت
تاريخ التسجيل: Apr 2004-
#10 (permalink)  

جميل جداً..

والف الف شكر لك ..


وخالص المودة ،،






__________________
██████████
██████████
██████████


مهارات سوفت
مهارات سوفت للبرامج وتطوير المواقع والمنتديات والتبادل التجاري.


للتواصل ..
00967733873335

باب الحارة .. للبيع ..!!
مُجَاهِد غير متواجد حالياً   قديم 10-05-2005, 06:33 PM
عضو نشيط
تاريخ التسجيل: Jul 2003-
#11 (permalink)  

اقتباس:
المشاركة الأصلية كتبت بواسطة مُجَاهِد
جميل جداً..

والف الف شكر لك ..


وخالص المودة ،،
شكراً على توقيعك هنا ..






__________________
إن كانَ عندك يا زمانُ بقيّةً
ممّا يُهان بها الكرامُ فهاتها !
__________
يا أهل سوالف سوفت .. اكتبوا غير الـفاشل و لا تكتبوا الغير فاشل :) .. (غير) لا تُعرّف يرعاكم الله .
omars غير متواجد حالياً   قديم 12-05-2005, 03:50 PM
عضو فعال جدا
تاريخ التسجيل: Dec 2000-
#12 (permalink)  

كذا الدروس ولا بلاش ..
شرح واضح .. درس عملي سهل الفهم ..
لاحرمك الله الأجر ..
بإنتظار المزيد منك ..






__________________
الملف الشخصي
رضا غير متواجد حالياً   قديم 12-05-2005, 03:55 PM
عضو سوبر نشيط
تاريخ التسجيل: Mar 2002-
#13 (permalink)  

السلام عليكم
يا اخوان استخدمت طريقة الأخ عمر جزاه الله خير الجزاء وطريقته زكية جداً
أما عند استخدامي لعلامة التنصيص المفردة واجهتني مشكلة
أريد أن استخدم الكود التالي


كود:
<div class=color_box onmouseover="this.className='color_box_over'"; onMouseout="this.className='color_box_out'">text text text text text text text text</div>
أما عند استخدامي لعلامة التنصيص المفردة يتم اضافة بك اسلش قبل علامة التنصيص ولا يعمل معي الكود


كود:
<div class=color_box onmouseover="this.className=\'color_box_over\'"; onMouseout="this.className=\'color_box_out\'">text text text text text text text text</div>
انتظركم
ومرة أخرى أشكر الاستاذ عمر






haidar غير متواجد حالياً   قديم 21-05-2005, 03:29 PM
عضو نشيط جدا
تاريخ التسجيل: Jun 2003-
#14 (permalink)  

تسلم و الله يا أخي omars علي هالدرس الشيق الله يخليك
و يبارك فيك ألف شكر يا أخي الغالي






__________________
شوف بالله هنا هذا منتدي من برمجتي و تصميمي بأول خطواته
أعطيني رأيك

www.gegamix.com

Gega MiX

أعطيني رأيك بالمنتدي عشان تكسب فيا خير و تشحعني علي الشغل !!

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

الماسنجر :: bigrock2002 :) hotmail.com
almohtaref غير متواجد حالياً   قديم 22-05-2005, 08:41 PM
عضو سوبر نشيط
تاريخ التسجيل: Mar 2002-
#15 (permalink)  

اقتباس:
المشاركة الأصلية كتبت بواسطة haidar
السلام عليكم
يا اخوان استخدمت طريقة الأخ عمر جزاه الله خير الجزاء وطريقته زكية جداً
أما عند استخدامي لعلامة التنصيص المفردة واجهتني مشكلة
أريد أن استخدم الكود التالي


كود:
<div class=color_box onmouseover="this.className='color_box_over'"; onMouseout="this.className='color_box_out'">text text text text text text text text</div>
أما عند استخدامي لعلامة التنصيص المفردة يتم اضافة بك اسلش قبل علامة التنصيص ولا يعمل معي الكود


كود:
<div class=color_box onmouseover="this.className=\'color_box_over\'"; onMouseout="this.className=\'color_box_out\'">text text text text text text text text</div>
انتظركم
ومرة أخرى أشكر الاستاذ عمر
ساعدوني يا اخوان، انتظركم






haidar غير متواجد حالياً   قديم 05-07-2005, 01:03 PM
عضو فعال جدا
تاريخ التسجيل: Dec 2004-
#16 (permalink)  

جزاك الله كل خير يا اخى

شرح وافى






__________________
مجموعة تى ان تى العربية لخدمات الانترنت
استضافة - ريسيلر - نطاقات - برمجة
فريق التصميم لخدمات التصميم
النطاقات العربية لخدمات تسجيل النطاقات
تى ان تى لخدمات الاستضافة

msn: sales@arabtnt.com
easylink.com.eg غير متواجد حالياً   قديم 07-07-2005, 04:54 PM
عضو نشيط
تاريخ التسجيل: Jul 2003-
#17 (permalink)  

الأخ الكريم / حيدر

عذراً ..

نسيت هذا الكود البسيط و نسيت أين ملفات تطويره للأسف ..

و لكن حلاً للمشكلة التي واجهتك ..

قم بعمل التالي :

من ضمن محتويات الملف الذي طبّقت عليه الكود ، يوجد السطر التالي :

كود PHP:
  $html addslashes("$html"); 
ضع تحته مباشرةً :
كود PHP:
$html str_replace("\'""'"$html); 
لكن تأكّد إن فعلتَ هذا التعديل ؛ أن تتجنّب استخدام علامة التنصيص المفردة في إظهار القوالب من القاعدة .. أي في هذا السطر :

كود PHP:
eval("echo \""GetTemplate 'templatename' ) ."\";"); 
دمتَ بخير و عذراً على تأخري في الردّ






__________________
إن كانَ عندك يا زمانُ بقيّةً
ممّا يُهان بها الكرامُ فهاتها !
__________
يا أهل سوالف سوفت .. اكتبوا غير الـفاشل و لا تكتبوا الغير فاشل :) .. (غير) لا تُعرّف يرعاكم الله .
omars غير متواجد حالياً   قديم 19-08-2005, 11:32 AM
عضو سوبر نشيط
تاريخ التسجيل: Mar 2002-
#18 (permalink)  

مشكور أخي الكريم omars على الرد وجزاك الله خير الجزاء






haidar غير متواجد حالياً   قديم 22-08-2005, 11:32 PM
موضوع مغلق


 

أدوات الموضوع

تعليمات المشاركة
لا تستطيع كتابة مواضيع
لا تستطيع كتابة ردود
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة



الساعة الآن: 08:22 AM بتوقيت المملكة العربية السعودية