Bakenam
03-17-2009, 12:01 AM
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
اخواني الكرام ضمن سلسلة دروس ساقوم بها ان شاء الله دعما لبرمجة الهاكات نبدأ درسنا الاول ان شاء الله
لكن لي ملاحظة بسيطة كنت قد قمت بكتابة اساسيات برمجة الهاكات ارجو مراجعته
هاكنا البسيط اليوم سنتعلم كيف نقوم باستخراج البيانات من قاعدة البيانات ونقوم بتكرارها ضمن القالب
مثلا نريد هنا ان نقوم باستخراج اسم المستخدم مع رقمه ومع بريده
قم بانشاء ملف باسم مثلا test.php
قم بانشاء قالب جديد مثلا test.tpl
قم بفتح الملف test.php وضع في داخله التالي
رمز Code:
<?php
include(\'common.php\');
$Smarty->display(\'header.tpl\');
$sql=$DB->sql_query(\"select id,username,email from \" .$db_prefix . \"member order by id desc limit 20\");
while($row=$DB->sql_fetch_array($sql))
{
$gh[]=$row;
}
$Smarty->assign(\'gh\',$gh);
$Smarty->display(\'a.tpl\');
$Smarty->display(\'footer.tpl\');
?>
لنحلل الكود سويا
اولا قمنا باستدعاء الملف common.php وسبب الاستدعاء تجده في موضوعي دورة في برمجة الهاكات ارجو مراجعته
ثانيا قمنا بطباعة قالب الهيدر ايضا راجع الموضوع السابق ذكره
الان نريد الاستعلام من قاعدة البيانات فنقوم بانشاء متغير باي اسم تريد مثلا $sql
ونخزن به الناتج
رمز Code:
$sql=$DB->sql_query(\"select id,username,email from \" .$db_prefix . \"member order by id desc limit 20\");
حيث قمنا بالاستعلام على جدول الاعضاء member وطلبنا منه الرقم والاسم والبريد الالكتروني
قمت بوضع شرط الترتيب desc اي بالطريقة العكسية limit 20 اي بترتيب 20 ناتج
الان يجب علينا تكرار الناتج ضمن جملة while
رمز Code:
while($row=$DB->sql_fetch_array($sql)){ $gh[]=$row;}
حيث قمنا بانشء مصفوفة باسم gh طبعا اي اسم تريد وبنفس الطريقة
الان يجب علينا تعريف المتغير gh لكي نستطيع استخدامه بالقوالب
رمز Code:
$Smarty->assign(\'gh\',$gh);
راجع موضوع برمجة الهاكات
الان سنقوم بطباعة القالب test.tpl وقالب الفوتر
رمز Code:
$Smarty->display(\'test.tpl\'); $Smarty->display(\'footer.tpl\');
ايضا راجع الموضوع السابق ذكره اخي الكريم
لنأتي للقالب test.tpl
افتح القالب وضع فيه التالي
رمز Code:
<br />
<html dir=\"ltr\">
{literal}
<****** language=**********1.2>
<!--
var ns6=********.getElementById&&!********.all?1:0
var head=\"display:\'\'\"
var folder=\'main\'
function expandit(curobj){
folder=ns6?curobj.nextSibling.nextSibling.style:** ******.all[curobj.sourceIndex+1].style
if (folder.display==\"none\")
folder.display=\"\"
else
folder.display=\"none\"
}
//-->
</******>
{/literal}
<div align=\"center\">
<table border=\"0\" width=\"68%\" id=\"table1\" cellspacing=\"0\" cellpadding=\"0\">
<tr>
<td align=\"center\">
<center>
<FONT style=\"cursor: hand; font-weight:700\" onclick=expandit(this) face=Tahoma color=#911E54 size=2>
معلومات الاعضاء </FONT>
<table border=\"1\" cellpadding=\"4\" cellspacing=\"0\" style=\"border-collapse: collapse\" bordercolor=\"#111111\" width=\"617\" height=\"49\" id=\"table2\">
<tr>
<td>
<div align=\"center\">
<table class=\"border\" summary=\"احصائيات\" border=\"1\" cellspacing=\"1\" width=\"100%\" id=\"table3\">
<tr>
<td class=\"thead2\" align=\"right\">
<p align=\"center\"><font color=\"#FF0000\"><strong><span lang=\"ar-sy\">البريد</span></strong></font></td>
<td class=\"thead2\" align=\"right\">
<p align=\"center\"><font color=\"#FF0000\"><strong><span lang=\"ar-sy\">الاسم</span></strong></font></td>
<td class=\"thead2\" align=\"right\">
<p align=\"center\"><font color=\"#FF0000\"><strong><span lang=\"ar-sy\">الرقم</span></strong></font></td>
</tr>
{section name=idx loop=$gh}
<tr><td class=\"row1\">
<table border=\"3\" width=\"100%\" bordercolorlight=\"#FFFF00\" bordercolordark=\"#FFFF00\">
<tr>
<td>
<p align=\"center\"><u><strong><font color=\"#008000\">{$gh[idx].email}</font></strong></u></td>
</tr>
</table>
<td class=\"row1\">
<table border=\"3\" width=\"100%\" bordercolorlight=\"#FF0000\" bordercolordark=\"#FF0000\">
<tr>
<td>
<p align=\"center\"><u><strong><font color=\"#000080\">{$gh[idx].username}</font></strong></u></td>
</tr>
</table>
</td>
<td class=\"row1\">
<table border=\"3\" width=\"100%\" bordercolorlight=\"#008000\" bordercolordark=\"#008000\">
<tr>
<td>
<p align=\"center\"><u><strong><font color=\"#0000FF\">{$gh[idx].id}</font></strong></u></td>
</tr>
</table>
</td>
</td></tr>
{/section}
</table>
</div>
</td>
</tr>
</table>
</center>
</td>
</tr>
</table>
</div>
طبعا انا الذي يهمني من القالب هنا امرين اساسين
لكي تفهم قصدي قم بفتح القالب عن طريق الفرونت بيج
وسترى الناتج
لقد قمت باستخدام دالة بالجافا سكربت ليس لك بها اي علاقة وانما استخدمتها لتحسن ناتج العمل
ما يهمني في القالب كيف استطيع اظهار النتائج
رمز Code:
{section name=idx loop=$gh}{/section}
الوسم {section}
هو الذي يقوم بتكرار النتائج لنتعرف عليه اكثر
name = idx اي اسم تريد وليس شرطا ان يكون idx
loop=$gh وهنا شرط التكرار يجب ان يحمل اسم المتغير الذي عرفناه في الملف test.php هل تذكرون
تمام الى هنا ان شاء الله
يتم استخدام المتغيرات عادة ضمن القوالب ضمن {}
{$gh[idx].id}تقوم باظهار الرقم
{$gh[idx].username} تقوم باظهار الاسم
{$gh[idx].email} تقوم باظهار البريد الالكتروني
اذا كنا قد خزنا نتيجة الاستعلام ضمن المصفوفة gh[]
id,username,email اسماء الحقول في الجدول member
قم بالتجريب على بقية الحقول
هذا ما لدي لليوم فان اصبت فمن الله وان اخطأت فمن الشيطان
السلام عليكم ورحمة الله وبركاته
اخواني الكرام ضمن سلسلة دروس ساقوم بها ان شاء الله دعما لبرمجة الهاكات نبدأ درسنا الاول ان شاء الله
لكن لي ملاحظة بسيطة كنت قد قمت بكتابة اساسيات برمجة الهاكات ارجو مراجعته
هاكنا البسيط اليوم سنتعلم كيف نقوم باستخراج البيانات من قاعدة البيانات ونقوم بتكرارها ضمن القالب
مثلا نريد هنا ان نقوم باستخراج اسم المستخدم مع رقمه ومع بريده
قم بانشاء ملف باسم مثلا test.php
قم بانشاء قالب جديد مثلا test.tpl
قم بفتح الملف test.php وضع في داخله التالي
رمز Code:
<?php
include(\'common.php\');
$Smarty->display(\'header.tpl\');
$sql=$DB->sql_query(\"select id,username,email from \" .$db_prefix . \"member order by id desc limit 20\");
while($row=$DB->sql_fetch_array($sql))
{
$gh[]=$row;
}
$Smarty->assign(\'gh\',$gh);
$Smarty->display(\'a.tpl\');
$Smarty->display(\'footer.tpl\');
?>
لنحلل الكود سويا
اولا قمنا باستدعاء الملف common.php وسبب الاستدعاء تجده في موضوعي دورة في برمجة الهاكات ارجو مراجعته
ثانيا قمنا بطباعة قالب الهيدر ايضا راجع الموضوع السابق ذكره
الان نريد الاستعلام من قاعدة البيانات فنقوم بانشاء متغير باي اسم تريد مثلا $sql
ونخزن به الناتج
رمز Code:
$sql=$DB->sql_query(\"select id,username,email from \" .$db_prefix . \"member order by id desc limit 20\");
حيث قمنا بالاستعلام على جدول الاعضاء member وطلبنا منه الرقم والاسم والبريد الالكتروني
قمت بوضع شرط الترتيب desc اي بالطريقة العكسية limit 20 اي بترتيب 20 ناتج
الان يجب علينا تكرار الناتج ضمن جملة while
رمز Code:
while($row=$DB->sql_fetch_array($sql)){ $gh[]=$row;}
حيث قمنا بانشء مصفوفة باسم gh طبعا اي اسم تريد وبنفس الطريقة
الان يجب علينا تعريف المتغير gh لكي نستطيع استخدامه بالقوالب
رمز Code:
$Smarty->assign(\'gh\',$gh);
راجع موضوع برمجة الهاكات
الان سنقوم بطباعة القالب test.tpl وقالب الفوتر
رمز Code:
$Smarty->display(\'test.tpl\'); $Smarty->display(\'footer.tpl\');
ايضا راجع الموضوع السابق ذكره اخي الكريم
لنأتي للقالب test.tpl
افتح القالب وضع فيه التالي
رمز Code:
<br />
<html dir=\"ltr\">
{literal}
<****** language=**********1.2>
<!--
var ns6=********.getElementById&&!********.all?1:0
var head=\"display:\'\'\"
var folder=\'main\'
function expandit(curobj){
folder=ns6?curobj.nextSibling.nextSibling.style:** ******.all[curobj.sourceIndex+1].style
if (folder.display==\"none\")
folder.display=\"\"
else
folder.display=\"none\"
}
//-->
</******>
{/literal}
<div align=\"center\">
<table border=\"0\" width=\"68%\" id=\"table1\" cellspacing=\"0\" cellpadding=\"0\">
<tr>
<td align=\"center\">
<center>
<FONT style=\"cursor: hand; font-weight:700\" onclick=expandit(this) face=Tahoma color=#911E54 size=2>
معلومات الاعضاء </FONT>
<table border=\"1\" cellpadding=\"4\" cellspacing=\"0\" style=\"border-collapse: collapse\" bordercolor=\"#111111\" width=\"617\" height=\"49\" id=\"table2\">
<tr>
<td>
<div align=\"center\">
<table class=\"border\" summary=\"احصائيات\" border=\"1\" cellspacing=\"1\" width=\"100%\" id=\"table3\">
<tr>
<td class=\"thead2\" align=\"right\">
<p align=\"center\"><font color=\"#FF0000\"><strong><span lang=\"ar-sy\">البريد</span></strong></font></td>
<td class=\"thead2\" align=\"right\">
<p align=\"center\"><font color=\"#FF0000\"><strong><span lang=\"ar-sy\">الاسم</span></strong></font></td>
<td class=\"thead2\" align=\"right\">
<p align=\"center\"><font color=\"#FF0000\"><strong><span lang=\"ar-sy\">الرقم</span></strong></font></td>
</tr>
{section name=idx loop=$gh}
<tr><td class=\"row1\">
<table border=\"3\" width=\"100%\" bordercolorlight=\"#FFFF00\" bordercolordark=\"#FFFF00\">
<tr>
<td>
<p align=\"center\"><u><strong><font color=\"#008000\">{$gh[idx].email}</font></strong></u></td>
</tr>
</table>
<td class=\"row1\">
<table border=\"3\" width=\"100%\" bordercolorlight=\"#FF0000\" bordercolordark=\"#FF0000\">
<tr>
<td>
<p align=\"center\"><u><strong><font color=\"#000080\">{$gh[idx].username}</font></strong></u></td>
</tr>
</table>
</td>
<td class=\"row1\">
<table border=\"3\" width=\"100%\" bordercolorlight=\"#008000\" bordercolordark=\"#008000\">
<tr>
<td>
<p align=\"center\"><u><strong><font color=\"#0000FF\">{$gh[idx].id}</font></strong></u></td>
</tr>
</table>
</td>
</td></tr>
{/section}
</table>
</div>
</td>
</tr>
</table>
</center>
</td>
</tr>
</table>
</div>
طبعا انا الذي يهمني من القالب هنا امرين اساسين
لكي تفهم قصدي قم بفتح القالب عن طريق الفرونت بيج
وسترى الناتج
لقد قمت باستخدام دالة بالجافا سكربت ليس لك بها اي علاقة وانما استخدمتها لتحسن ناتج العمل
ما يهمني في القالب كيف استطيع اظهار النتائج
رمز Code:
{section name=idx loop=$gh}{/section}
الوسم {section}
هو الذي يقوم بتكرار النتائج لنتعرف عليه اكثر
name = idx اي اسم تريد وليس شرطا ان يكون idx
loop=$gh وهنا شرط التكرار يجب ان يحمل اسم المتغير الذي عرفناه في الملف test.php هل تذكرون
تمام الى هنا ان شاء الله
يتم استخدام المتغيرات عادة ضمن القوالب ضمن {}
{$gh[idx].id}تقوم باظهار الرقم
{$gh[idx].username} تقوم باظهار الاسم
{$gh[idx].email} تقوم باظهار البريد الالكتروني
اذا كنا قد خزنا نتيجة الاستعلام ضمن المصفوفة gh[]
id,username,email اسماء الحقول في الجدول member
قم بالتجريب على بقية الحقول
هذا ما لدي لليوم فان اصبت فمن الله وان اخطأت فمن الشيطان