المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : فهرس موضوعات لغة تطوير المواقع Php اخر تحديث



Bakenam
04-01-2009, 11:47 PM
السلام عليكم ورحمة الله وبركاته


خصصت هذا الموضوع لسهولة البحث في المنتدى على دروس تعليم لغة تطوير المواقع php ونسأل الله أن تعم الفائدة علينا جميعاً
اختر من متصفحك خيار تحرير ثم اختر من القائمة بحث ( في هذة الصفحة) ثم اكتب الكلمه المراد البحث عنها في المربع


شروحات

Bakenam
04-01-2009, 11:48 PM
كتاب صغير الحجم باللغة العربية يشرح تقنية CSS وكيفية التعامل معها

الكتاب متوافر فى نسختين

نسخة PDF وحجمها 639K


(http://shloon.com/9ot/book/Start_CSS.pdf)


اضغط هنا للتحميل (http://shloon.com/9ot/book/Start_CSS.pdf)

Bakenam
04-02-2009, 12:36 AM
السلام عليكم ورحمة الله وبركاتة



رابط الموضوع (http://http//www.traidnt.net/vb/showthread.php?t=973116)

تم تحميل الاسطوانه برابط مباشر بدل من الرابدشير وملف واحد فقط

وقريبا ان شاء الله سوف ارفع الاسطوانة الثانية

تابع الصور

http://arab-school.com/up//uploads/images/arab-school_9474ba5c51.jpg


http://arab-school.com/up//uploads/images/arab-school_ad6b0d24cc.jpg

http://arab-school.com/up//uploads/images/arab-school_9d95415eab.jpg

مساحة الملف 256 برابط مباشر

اضغط هنا (http://www.arab-school.com/downloads/php-course.rar)

لا تحرمونا من ردودكم الجميله

Bakenam
04-02-2009, 12:39 AM
http://up.l7njo.com/uploads/images/l7njo-5ff1d414e5.JPG







للتحميل الشرح

اضغط هنا من فضلك

للتحميل (http://www.4shared.com/file/70036984/f991dbfe/C_online.html?dirPwdVerified=9430d951)



لا تنسونا من الردود

وصالح دعواكــم

Bakenam
04-02-2009, 12:40 AM
السلام عليكم





كتاب
The PHP Anthology: Object Oriented PHP Solutions



http://www.sitepoint.com/images/books/phpant1/notoverlap2.jpg (http://www.sitepoint.com/images/books/phpant1/notoverlap2.jpg)



للتحميل
هنا (http://rapidshare.com/files/66084099/SitePoint_The_PHP_Antholog_with_code_example.rar)





وشكراً http://yas-m.com/vb/images/smilies/cupidarrow.gif


المصدر
http://yas-m.com/vb/showthread.php?t=943

Bakenam
04-02-2009, 12:43 AM
ان شاء الله الكل بخير وصحة وسلامة

http://www.ra7maa.com/up3/files/1/montada/Q82_64.gif



اهديكم مجموعة كبيرة من دروس

php

بالصوت والصورة

وهي لشركة vtc

ومجموع الدروس 98


وتم جمعها في ملف واحد لعيونكم

ورفعها على الفور شيرد ..



للتحميل

من هنا (http://www.4shared.com/file/68366027/2497ea66/wwwra7maacom_98_php.html)

والسلام عليكم



المصدر (http://www.ra7maa.com/vb/showthread.php?p=9381&posted=1#post9381)

Bakenam
04-02-2009, 12:50 AM
تم تجميع هذه الدروس من عدة مواقع من على الانترنت للفائدة العامه

http://www.pxll.com/pxlldros/index.p...ub&cat=8&sub=7 (http://www.pxll.com/pxlldros/index.php?page=sub&cat=8&sub=7)

اتمنى ان تنال على اعجابكم

Bakenam
04-02-2009, 01:07 AM
كتاب شرح aspباللغه العربيه فقط على الماجيك (http://elmjeck.com/vb/showthread.php?t=7402)


كتاب شرح asp باللغه العربيه فقط على الماجيك

اليكم صوره من دخل الكتاب

الكتاب بصيغه

ASP.pdf
باسورد فك الضغط
صوره بدايه الكتاب
http://i264.photobucket.com/albums/ii182/eltohamy/elmjeck-cfabb5618a.png

صوره من دخل الكتاب

http://i264.photobucket.com/albums/ii182/eltohamy/elmjeck-5a0933b710.png
www.elmjeck.com

http://i264.photobucket.com/albums/ii182/eltohamy/--12.gif


كتاب شرح aspباللغه العربيه فقط على الماجيك (http://elmjeck.com/vb/showthread.php?t=7402)

Bakenam
04-02-2009, 11:23 AM
http://www.albramj.com/uploads/alslam3lekom.gif



أخوتي الكرام من بعد غياب طويل يسرني أن ازف اليكم ثالث أسطوانة


تعليمية من هذا الكورس الرااائع عدد أربعة تأتيكم قريباً جداً


التعليم التفاعلي ( صوت وصورة باللغة العربية )


وهذاه الأسطوانة سوف تكون بمجال اللغ ة الأشهر بمجال البرمجة

ألا وهي لغة البي أتش بي PHP


إليكم بعض الصور من هذه الأسطوانة وما تحتوية من دروس تعليمية



1- صورة واجهة الأسطوانات



http://img212.imageshack.us/img212/5945/albramjphp1234hx4.jpg








2- بعض الصور من المواد التي تشملها الأسطوانة


http://img253.imageshack.us/img253/5697/php37.jpg

http://img253.imageshack.us/img253/2462/php31.jpg

http://img253.imageshack.us/img253/9518/php34.jpg

http://img253.imageshack.us/img253/5662/php35.jpg

http://img253.imageshack.us/img253/1341/php33.jpg

http://img253.imageshack.us/img253/2526/php36.jpg

http://img253.imageshack.us/img253/5699/php3.jpg

http://img253.imageshack.us/img253/9527/php32.jpg

http://img253.imageshack.us/img253/3140/php38.jpg






1 الحجم مضغوط = 181 ميجا http://traidnt.net/vb/images/smilies/bigsmile.gif


كل جزء 35 ميجا والأخير 6.16 ميجا



الحجم بعد فك الضغط = 476 ميجا http://traidnt.net/vb/images/smilies/icon30.gif




والأن مع روابط التحميل ويمكن تحميل نفس الملف من اي سيرفر ( نفس التقسيم )



أولا من سيرفر الرابيد شير الحبيب


1 (http://rapidshare.com/files/150693341/www.albramj.com_php3.part01.rar)

2 (http://rapidshare.com/files/150693561/www.albramj.com_php3.part02.rar)

3 (http://rapidshare.com/files/148895942/www.albramj.com_php3.part03.rar)

4 (http://rapidshare.com/files/150693725/www.albramj.com_php3.part04.rar)

5 (http://rapidshare.com/files/148897777/www.albramj.com_php3.part05.rar)

6 (http://rapidshare.com/files/150693461/www.albramj.com_php3.part06.rar)



ثانياً من سيرفر IFILE.IT


1 (http://ifile.it/rjy5wql/www.albramj.com_php3.part01.rar)

2 (http://ifile.it/27fqk1x/www.albramj.com_php3.part02.rar)

3 (http://ifile.it/ojek4tl/www.albramj.com_php3.part03.rar)

4 (http://ifile.it/vrel8t0/www.albramj.com_php3.part04.rar)

5 (http://rapidshare.com/files/148897777/www.albramj.com_php3.part05.rar)

6 (http://ifile.it/garx1mf/www.albramj.com_php3.part06.rar)



برنامج البصمة ( تنصيب ذاتي ) + ملف البصمة


للتحقق من الملفات + صور الشرح لمن لم تظهر عنده


من هنا (http://rapidshare.com/files/150704529/pic_sfv-php3.rar)




أخيراً باسوورد فك الضغط



رمز PHP:

www.albramj.com


أرجو إبداء أرائكم حول هذا الكورس لمتابعة البقية ان شاء الله



ولكم مني أطيب المنى

Bakenam
04-02-2009, 11:27 AM
http://www.geek4arab.com/vb/images/salam.png



الحمدلله والصلاة والسلام على رسول الله وعلى آله وصحبه أجمعين

اليوم احضرت لكم 4 كتب اجنبية رائعة لتعلم PHP5 إن شاء لله تفيد المهتم بهالموضوع

Always The Best eBooks from APS

(*)=(*)=(*)=(*)=(*)=(*)=(*)=(*)=(*)=(*)

1. PHP 5 Power Programming
http://s166.photobucket.com/albums/u99/ahmednasir91/Area51WareZ/posts/2007-12/1197938362_php5pp.jpg



This book, written by PHP developers, holds the key to unlocking the riches of PHP 5.
It thoroughly covers all of the features of the new version, and is a must-have for all PHP developers who are interested in exploring PHP 5's advanced features.

While the complexity of starting off with PHP remains unchanged and very low,
the features offered by PHP today enable developers to reach far beyond simple HTML applications.
The revised object model allows for largescale projects to be written efficiently, using standard object-oriented methodologies.

New XML support makes PHP the best language available for processing XML and,
coupled with new SOAP support, an ideal platform for creating and using *** Services.

للتنزيل :
إضغط هنا (http://rapidshare.com/files/77246005/pasado_p5pp.rar)

باسوورد :


رمز PHP:

www.area51warez.info


(*)=(*)=(*)=(*)=(*)=(*)=(*)=(*)=(*)=(*)

2. Sams Teach Yourself PHP in 10 Minutes



http://s166.photobucket.com/albums/u99/ahmednasir91/Area51WareZ/posts/2007-12/1197937031_30893451-2.jpg


minutes?
Think again.
Sams Teach Yourself PHP in 10 Minutes is a no-fluff, just-the-answers guide to building dynamic ***sites using PHP.
Broken into 10 minute lessons, you will gain a rapid working knowledge of PHP 5 and be able to immediately put that knowledge to use in practical applications.
Who ever would have thought there was so much you could do in just 10 minutes!

This book was written in clear language with small examples of code that are perfect for a beginner to make learning PHP easy.
The best thing is that the author chose an excellent set of topics to cover in an introductory book:
programming concepts ( arrays, variables, functions, etc. ),
*** concepts ( forms, connecting to MySQL data****, ******s and sessions, etc. ),
and a smattering of installation and configuration information ( ... just enough, not boring ).
Moreover, I really liked the smaller size of the book so that I could easily hold it while typing up the examples at my keyboard.


للتنزيل :
إضغط هنا (http://rapidshare.com/files/77236742/pasado_styp.rar)

باسوورد :


رمز PHP:

www.area51warez.info



(*)=(*)=(*)=(*)=(*)=(*)=(*)=(*)=(*)=(*)

3. Professional PHP5

http://s166.photobucket.com/albums/u99/ahmednasir91/Area51WareZ/posts/2007-12/1197931302_0764572822_500.gif
- The PHP language structure and syntax, including its data types, operators, statements and functions;
- The process of installing the ******ing engine onyour server;
- The myriad of PHP modules that greatly enhance its capabilities;
- Server Side Programming
- Practical case study examples of PHP in action

للتنزيل :
إضغط هنا (http://rapidshare.com/files/77208719/pasado_pp5.rar)

باسوورد :

رمز PHP:

www.area51warez.info


تحياتى

Bakenam
04-02-2009, 11:30 AM
http://www.albramj.com/uploads/alslam3lekom.gif



أخوتي الكرام من بعد غياب طويل يسرني أن ازف اليكم أول أسطوانة


تعليمية من هذا الكورس الرااائع عدد أربعة تأتيكم قريباً جداً


التعليم التفاعلي ( صوت وصورة باللغة العربية )


وهذاه الأسطوانة سوف تكون بمجال اللغ ة الأشهر بمجال البرمجة

ألا وهي لغة البي أتش بي PHP


إليكم بعض الصور من هذه الأسطوانة وما تحتوية من دروس تعليمية

1- صورة واجهة الأسطوانة



http://www.albramj.com/up//uploads/images/albramj.com-1d7b5f5043.jpg (http://www.albramj.com/up//uploads/images/albramj.com-1d7b5f5043.jpg)


2- بعض الصور من المواد التي تشملها الأسطوانة


http://www.albramj.com/up//uploads/images/albramj.com-0eb1d9dd0e.jpg (http://www.albramj.com/up//uploads/images/albramj.com-0eb1d9dd0e.jpg)


http://www.albramj.com/up//uploads/images/albramj.com-7bcb760468.jpg (http://www.albramj.com/up//uploads/images/albramj.com-7bcb760468.jpg)

http://www.albramj.com/up//uploads/images/albramj.com-6d4e12da85.jpg (http://www.albramj.com/up//uploads/images/albramj.com-6d4e12da85.jpg)

http://www.albramj.com/up//uploads/images/albramj.com-38eb793f20.jpg (http://www.albramj.com/up//uploads/images/albramj.com-38eb793f20.jpg)

http://www.albramj.com/up//uploads/images/albramj.com-f3cd4e3a7d.jpg (http://www.albramj.com/up//uploads/images/albramj.com-f3cd4e3a7d.jpg)






1 الحجم مضغوط = 265 ميجا وكل جزء 35 ميجا والأخير 20.3 ميجا



الحجم بعد فك الضغط = 576 ميجا





والأن مع روابط التحميل على الرابيد شير الأن

وغدا على موقع أخر ان شاء الله


1 (http://rapidshare.com/files/144849698/www.albramj.com_php1.part01.rar)

2 (http://rapidshare.com/files/144859631/www.albramj.com_php1.part02.rar)

3 (http://rapidshare.com/files/144860385/www.albramj.com_php1.part03.rar)

4 (http://rapidshare.com/files/144858393/www.albramj.com_php1.part04.rar)

5 (http://rapidshare.com/files/144853692/www.albramj.com_php1.part05.rar)

6 (http://rapidshare.com/files/144862625/www.albramj.com_php1.part06.rar)

7 (http://rapidshare.com/files/144861819/www.albramj.com_php1.part07.rar)

8 (http://rapidshare.com/files/144847203/www.albramj.com_php1.part08.rar)






برنامج البصمة ( تنصيب ذاتي ) + ملف البصمة


للتحقق من الملفات + صور الشرح لمن لم تظهر عنده

من هنا (http://rapidshare.com/files/145529188/www.albramj.com_php1.rar)




أخيراً باسوورد فك الضغط


رمز PHP:

www.albramj.com


أرجو إبداء أرائكم حول هذا الكورس لمتابعة البقية ان شاء الله



ولكم مني أطيب المنى





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

Bakenam
04-02-2009, 11:31 AM
Beginning.PHP.and.PostgreSQL.E.Commerce

Download address 1 (http://www1.vista-server.com/uploadfile/7/8/22/2255441307035.zip)
Download address 2 (http://www2.vista-server.com/uploadfile/7/8/22/2255441307035.zip)
Download address 3 (http://www3.vista-server.com/uploadfile/7/8/22/2255441307035.zip)


Extending.and.Embedding.PHP

Download address 1 (http://www1.vista-server.com/uploadfile/7/8/22/17484439511.zip)
Download address 2 (http://www2.vista-server.com/uploadfile/7/8/22/17484439511.zip)
Download address 3 (http://www3.vista-server.com/uploadfile/7/8/22/17484439511.zip)


PHP.Programming.with.PEAR

Download address 1 (http://www1.vista-server.com/uploadfile/7/2/16/1429506123166.zip)
Download address 2 (http://www2.vista-server.com/uploadfile/7/2/16/1429506123166.zip)
Download address 3 (http://www3.vista-server.com/uploadfile/7/2/16/1429506123166.zip)


PHP.Solutions.Dynamic.***.Design.Made.Easy

Download address 1 (http://www1.vista-server.com/uploadfile/7/2/16/1216516233167.zip)
Download address 2 (http://www2.vista-server.com/uploadfile/7/2/16/1216516233167.zip)
Download address 3 (http://www3.vista-server.com/uploadfile/7/2/16/1216516233167.zip)

كل الكتب باللغة الانجليزية

Bakenam
04-02-2009, 11:32 AM
الحمد لله و الصلاة و السلام على رسول الله
أما بعد
في منتدى ابن الخليج على هذا الرابط برفع هذه الدروس هنا
http://www.gulfson.com/vb/f94/t100870/ (http://www.gulfson.com/vb/f94/t100870/)

و لكن غالب الروابط قد انتهت فقمت برفعها مرة أخرى على روابط جديدة سريعة تدعم استكمال التحميل و لله الحمد
و يمكنك متابعة الروابط هنا
http://www.tsmem.net/showthread.php?t=85 (http://www.tsmem.net/showthread.php?t=85)

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

Bakenam
04-02-2009, 11:38 AM
بسم الله الرحمن الرحيم
السلام عليكم و رحمة الله و بركاته

الأعضاء الكرام http://traidnt.net/vb/images/smilies/cupidarrow.gif

أرجو من الله أن تكونو بصحة و عافيه ، لقد غبت فترة كبيره جداً ،
و لكن كان هذا بسبب أمور أتمنى من الله أن يتولاها برحمته.

و لكن أردت العودة للمتابعه بعد رحلة طويله مع PHP و مع غير الـ PHP
، و كما وعدتكم مسبقاً بكتابي في PHP فإني أوفي الآن .http://traidnt.net/vb/images/smilies/nosweat.gif

قمت بالبدء في الكتاب مع بداية نهاية شهر رمضان الكريم أعاده الله علينا و على الأمه كلها
بخير و سلامه إن شاء الله ، و أنتهيت منه تماما أمس ، و على الغم من أن الكتاب لم ينتهي
كليا إلا أنني أردت أن أقوم بنشره الآن ، حيث كثرت الأسأله على أمور PHP الأساسيه .http://traidnt.net/vb/images/smilies/icon30.gif

لذا فأتمنى من الله العلي القدير أن يكون الكتاب جدياً و مفيداً إن شاء الله
، و الكتاب مجاني و لا أرجو منكم غير صالح الدعاء.

و أشكر الله الكريم الذي ساعدني على أتمام هذا الكتاب، قد يكون
بسيطا إلا أنه بالنسبه للمعلومات الموجوده فيه و المنظمه إن شاء الله يكون جيد.
موضوعات الكتاب :

http://traidnt.net/vb/AGT04/misc/quotes/quot-top-left.gifاقتباسhttp://traidnt.net/vb/AGT04/misc/quotes/quot-top-right.gifhttp://traidnt.net/vb/AGT04/misc/quotes/quot-top-right-10.gif1-استكشاف بيئة عمل PHP
2-إعداد الخادم الشخصي للمرة الأولى
3-أول برنامج لك في PHP
4-ملاحظات هامة قبل البدء
5-المتغيرات
6-أنواع المتغيرات
7-دوال المتغيرات
8-المصفوفات
9-دوال المصفوفات
10-العبارات الشرطية
11-الوقت و التاريخ
12-إرسال و استقبال البيانات http://traidnt.net/vb/AGT04/misc/quotes/quot-bot-left.gifhttp://traidnt.net/vb/AGT04/misc/quotes/quot-bot-right.gif




الكتاب حجمه : ميجا تقريباً

http://img135.imageshack.us/img135/1889/downloadcv7.png (http://www.microeg.net/files/php.zip)


موجود أيضاً في المرفقات .http://traidnt.net/vb/images/smilies/icon30.gif

Bakenam
04-02-2009, 11:39 AM
هذا كتاب عثرت عليه فى أحد المواقع ولكن لا أذكر ما هو الرابط

http://www.4shared.com/file/72528173...etLessons.html (http://www.4shared.com/file/72528173/f493dd33/VBNetLessons.html)

Bakenam
04-02-2009, 11:40 AM
== اسم الكتاب ==

Php Book

== روابط التحميل ==

اختار اى سيرفر لتحميل الكتاب منه

http://rapidshare.com/files/19065611...t.Net.rar.html (http://rapidshare.com/files/190656116/Php.Zero_Traidnt.Net.rar.html)

http://www.zshare.net/download/5477614124825b09/ (http://www.zshare.net/download/5477614124825b09/)

http://www.megaupload.com/?d=LNQZXX9A (http://www.megaupload.com/?d=LNQZXX9A)

http://www.filefactory.com/file/a0413eg (http://www.filefactory.com/file/a0413eg)

http://uploaded.to/?id=inyis2 (http://uploaded.to/?id=inyis2)

== مساحة الكتاب ==

1.5 ميجا بايت

== الباسوورد ==

Zero

Bakenam
04-02-2009, 11:42 AM
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته http://traidnt.net/vb/images/smilies/shiny01.gif

وجدت هذه الكتب في موقع http://www.ebookee.com/ (http://www.ebookee.com/)

وهي من مجموعة for dummies الشهيرة وممتازة

وهذه الكتب هي :

اولا:
For Dummies PHP and MySQL *** Development
All in One Desk Reference For Dummies Jan 2008

ثانيا:
Ajax For Dummies

ثالثا:
********** for Dummies 4th Edition

جميع الكتب بالغة الانجليزية وكاملة ومجربة

الان التحميل كتاب الـphp والـajax تحميل تورنت وكتاب الـ********** رايبدشير

ملاحظة: الكتب والروابط شغال ومجرب 100% .

التحميل: http://www.traidnt.net/vb/attachment...1&d=1223043805 (http://www.traidnt.net/vb/attachment.php?attachmentid=301256&stc=1&d=1223043805)

Bakenam
04-02-2009, 11:43 AM
كتب احترافية في
تعلم php

اولا
تعلم PHP بسهولة (http://rss4arab.co.cc/open.php?cat=3&book=19)
تانيا
لغة بي اتش بي وقواعد البيانات (http://rss4arab.co.cc/open.php?cat=3&book=18)

Bakenam
04-02-2009, 11:44 AM
السلام عليكم ورحمة الله وبركاتة
اليوم درسنا هوا اساس لغة php وهي كيفية كتابة اول كود برمجي خاص بك وطبعاً الدرس كالعادة مصور لوصول المعلومة بسرعة اكبر

طبعاً هذا الاشارات اللي بلون الاصفر في بداية السطر رقم 1 وهي كما موضحة بصووورة
وفي السطر 5 باللون الاصفر بعد هي نهاية الكود او الانتهاء من كتابة الكود البرمجي وهذي الاشارتين مهمة لكي يتم التعرف على ان هذي الاكواد هي اكواد بي اتش بي .
نتقل الى الصورة التانية

الـecho والمعلومة باللون الاصفر تقوم بعض اي شئ على المتصفح للقيام وعرضة على الاشاشة
والاشارات " المعلمة باللون الاحمر هي تعطينى النص اللي سوف نقوم بة او الاسترنج وحالياً لن نتعلم الاسترنج وسوف نتعلمها في الدورس المقبلة
نتقل الى الصورة التالتة

الاشارة اللي معلمة باللون البرتقالي عملها كبير وهي تقوم بعمل إيقاف قرائة السطر البرمجي

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


وهذا التطبيق اللي قمت بعملة
http://www.php-ar.net/leesn/1/1.php (http://www.php-ar.net/leesn/1/1.php)

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

مع التحية

Bakenam
04-02-2009, 11:49 AM
السلام عليكم ورحمة الله وبركاته

اليكم اخواني الكرام درس تسجيل الدخول ولنفترض ان لديك سكربت وفيه لوحة تحكم خاصة فيك كمدير وترغب في جعله محصور بأسم خاص فيك + باسورد مشفر في تغنية MD5

المستلزمات كالتالي :
قاعدة بيانات وراح نسميها على سبيل المثال login
جدول راح نزرعه في قاعدة البيانات وأسمه admin
مثال
http://www.khellan.com/up/uploads/01d61cb7dd.jpg (http://www.khellan.com/up/)

وهنا كود زرع الجدول بعد انشاء قاعدة البيانات


رمز Code:
CREATE TABLE `admin` ( `id` int(4) NOT NULL auto_increment, `username` varchar(65) NOT NULL default '', `password` varchar(65) NOT NULL default '', PRIMARY KEY (`id`)) TYPE=MyISAM AUTO_INCREMENT=2 ;INSERT INTO `admin` VALUES (1, 'abosaleh', '1234');
لاحظوا معي اني طلبت بعد زراعة الجدول ادخال اسم المدير abosaleh وايضاً الباسورد حقه 1234
وبعد كذا راح نشفره من برنامج phpMyAdmin واليكم الطريقة

أنقر على جدول admin
واختار إستعراض او BROWSE
ومكان ما انا معلم باللون الاحمر انقر هناك لتشفير الباسورد
http://www.khellan.com/up/uploads/8042492f01.jpg (http://www.khellan.com/up/)

والآن راح نشفر الباسورد 1234 بخاصية MD5 ولو ما هالخاصية كان المنتديات وغيرها من السكربتات في خبر كان هههههههههههههههههه

http://www.khellan.com/up/uploads/c590e18866.jpg (http://www.khellan.com/up/)


شوفوا كيف صار شكل الباسورد مشفر
http://www.khellan.com/up/uploads/92edc0a412.jpg (http://www.khellan.com/up/)

الان سوف نعمل فورم بسيط لإدخال اسم المستخدم والباسورد واليكم الكود وراح نسميته main_login.php

http://www.khellan.com/up/uploads/d139db90db.jpg (http://www.khellan.com/up/)


رمز Code:

<br><br><br><br>
<table width="300" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<form name="form1" method="post" action="checklogin.php">
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF" dir="rtl">
<tr>
<td colspan="3"><strong>دخول المدير</strong></td>
</tr>
<tr>
<td width="68">الاسم</td>
<td width="4">:</td>
<td width="204"><input name="myusername" type="****" id="myusername"></td>
</tr>
<tr>
<td>الرقم السري</td>
<td>:</td>
<td><input name="mypassword" type="****" id="mypassword"></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><input type="submit" name="Submit" value="Login"></td>
</tr>
</table>
</td>
</form>
</tr>
</table>

لا حظوا معاي انه سوف يتم ارسال والمدخلات الى ملف اسمه checklogin.php
وهنا الكود كامل



رمز PHP:

<?php
// شرح بوصالح جرافيكس
// www.tsmim.com
$host="localhost"; // المستضيف
$username="root"; // اسم مستخدم قاعدة البيانات
$password=""; //الباسورد لمستخدم قاعدة البيانات
$db_name="login"; // اسم قاعدة البيانات
$tbl_name="admin"; // الجدول

// هنا يتم الاتصال بقاعدة البيانات
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");



// هنا تعرف المدخلات كمتغيرات
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];

// هنا يتم تشفير الباسورد
$encrypted_mypassword=md5($mypassword);

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$encrypted_mypassword'";
$result=mysql_query($sql);


// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row

if($count==1){
// Register $myusername, $mypassword and redirect to file "login_success.php"
session_register("myusername");
session_register("mypassword");
header("********:login_success.php");
}
else {
echo "هناك خطأ حاول مره اخرى";
}
?>


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

وهنا الكود كامل


رمز PHP:

<?
// هنا للتحقق اذا كان قد تم تسجيل الدخول ام لا

session_start();
if(!session_is_registered(myusername)){
header("********:main_login.php");
}
// واذا لم يتم تسجيل الدخول سوف يتم تحويله مره اخرى الى صفحة
//main_login.php
?>

<html>
<body>
<div align="center"><b>تم تسجيل الدخول بنجاح</b></div>
<p align="center"><b><span lang="ar-sa"><a href="index.php">
<span style="****-decoration: none">أنقر هنا للذهاب الى الرئيسية</span></a></span></b></p>



</body>
</html>

وهنا الرئيسية بعد اتمام تسجيل الدخول بنجاح وهي مجرد مثال واسميتها index.php


رمز PHP:

<?
session_start();
if(!session_is_registered(myusername)){
header("********:main_login.php");
}
?>

<table border="2" cellpadding="2" width="100%" dir="rtl" id="table1" height="136">
<tr>
<td>
<p align="center"><span lang="ar-sa"><font size="7">الرئيسية</font></span></p>
<p align="center"><span lang="ar-sa"><font size="5">
<a href="logout.php"><span style="****-decoration: none">أنقر هنا لتسجيل
الخروج</span></a></font></span></td>
</tr>
</table>

وبكذا انتهى

Bakenam
04-02-2009, 11:50 AM
السلم عليكم
الدورة منقولة
من موقع
www.no-exploit.com/forum (http://www.no-exploit.com/forum)


دورة احتراف البرمجة بلغة الفيوجل بيسك الدرس الأول (http://www.no-exploit.com/forum/showthread.php?t=322)
دورة احتراف البرمجة بلغة الفيوجل بيسك الدرس الثاني (http://www.no-exploit.com/forum/showthread.php?t=323)
دورة احتراف البرمجة بلغة الفيوجل بيسك الدرس الثالث (http://www.no-exploit.com/forum/showthread.php?t=324)
دورة احتراف البرمجة بلغة الفيوجل بيسك الدرس الرابع (http://www.no-exploit.com/forum/showthread.php?t=325)
دورة احتراف البرمجة بلغة الفيوجل بيسك الدرس الخامس (http://www.no-exploit.com/forum/showthread.php?t=326)
دورة احتراف البرمجة بلغة الفيوجل بيسك الدرس الخامس (http://www.no-exploit.com/forum/showthread.php?t=326)
دورة احتراف البرمجة بلغة الفيوجل بيسك الدرس السادس (http://www.no-exploit.com/forum/showthread.php?t=327)
دورة احتراف البرمجة بلغة الفيوجل بيسك الدرس السابع (http://www.no-exploit.com/forum/showthread.php?t=341)
دورة احتراف البرمجة بلغة الفيوجل بيسك الدرس الثامن (http://www.no-exploit.com/forum/showthread.php?t=342)
دورة احتراف البرمجة بلغة الفيوجل بيسك الدرس التاسع (http://www.no-exploit.com/forum/showthread.php?t=386)
دورة احتراف البرمجة بلغة الفيوجل بيسك الدرس العاشر (http://www.no-exploit.com/forum/showthread.php?t=387)


الدورة كاملة من هنا
دورة في فيوجل6 (http://www.no-exploit.com/forum/forumdisplay.php?f=80)
(تعلم vb6 من البداية للاحتراف)

Bakenam
04-02-2009, 12:27 PM
الدالة على طول


رمز PHP:

//Generate a Random String
function StrRandom($req = 6) //The Random string will be of the size $req
#By Galal Aly (Written from scratch) hah kan nefsy aktebha men zaman :D

{
//The Random String will be generated using this set of characters
$SetOfCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789abcdefghijklmno pqrstuvwxyz_";

//Generate ba2a
$len = strlen($SetOfCharacters);
//The $rand variable will contain our string
$rand = "";
for ($i = 1; $i <= $req; $i++) {
$teet = rand(0, $len - 1);
$rand .= substr($SetOfCharacters, $teet, 1);
}
return $rand;
}


أولا : فائدة الدالة

الدالة ليها فوائد كثير تقريبا كل المبرمجين عارفينها .. فهى تستخدم مثلا فى انشاء كلمات السر العشوائية او فى الSession hash ... الخ

طريقة عمل الدالة :

المتغير

رمز PHP:

$SetOfCharacters


يحتوى على الحروف اللى الكود هيعمل منها الString العشوائى وكما تلاحظ فيها كل الحروف تقريبا ..

المتغير

رمز PHP:

$req


يحتوى على عدد الحروف فى الString العشوائى الذى نريد انشاءه .. وهو افتراضيا 6 .. و من الممكن تعديله طبعا سواء عن طريق الdefault value فى الدالة نفسها

رمز PHP:

function StrRandom($req = 6)


او عندما نقوم باستدعاء الدالة

رمز PHP:

StrRandom(32);


ثانيا : ازاى نعمل الدالة دى؟

الProcedure المتبع هو اننا بنحدد الحروف اللى احنا عايزينها فى متغير .. وده اللى عملناه فى السطر ده

رمز PHP:

$SetOfCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789abcdefghijklmno pqrstuvwxyz_";


ثم قمنا بمعرفة عدد الحروف فى المتغير SetOfCharacters عن طريق الدالة strlen

رمز PHP:

$len = strlen($SetOfCharacters);


ثم قمت بانشاء متغير "فاضى" لكى يحتوى على الRandom String عند الانتهاء

رمز PHP:

$rand = "";


ثم قمت بعمل loop تقف عند الوصول الى عدد الاحرف المحدد فى المتغير $req

رمز PHP:

for ($i = 1; $i <= $req; $i++)


المتغير $teet :

يحتوى على رقم عشوائى بين الصفر وعدد الاحرف فى المتغير SetOfCharacters ناقص واحد .. ليه ناقص واحد؟ لأن أول حرف فى الString رقمه صفر وليس واحد .. يعنى اما ابدأ اعد الحروف هاعد من الصفر واحد اتنين تلاتة اربعة (خمس ارقام لأننا حاسبين الصفر) بينما الدالة التى تأتى لنا بعدد الاحرف تبدأ من الواحد لذلك نريد ان ننقص واحد حتى لا نطلب حرف غير موجود اصلا ويحدث خطأ.

رمز PHP:

$teet = rand(0, $len - 1);


ثم باستخدام الدالة substr وهى تقوم بقطع المتغير SetOfCharacters عند الرقم العشوائى teet وتقوم بارجاع حرف واحد فقط .. نقوم بتزويده على المتغير rand

رمز PHP:

$rand .= substr($SetOfCharacters, $teet, 1);


وتتكرر العملية عدد req مرات ليصبح لدينا المتغير rand يحتوى على الRandom String بتاعنا ونقوم بارساله لمن طلبه

رمز PHP:

return $rand;


الدالة اللى فوق دى بطريقة iterative .. ممكن الRecursive يبقى كده :

رمز PHP:

function StrRandomRec($req = 6, $rand)
{
#By Galal Aly (Written from scratch)
if ($req > 0) {
$SetOfCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789abcdefghijklmno pqrstuvwxyz_";
$len = strlen($SetOfCharacters);
$teet = rand(0, $len - 1);
$rand .= substr($SetOfCharacters, $teet, 1);
return StrRandomRec($req - 1, $rand);
} else
return $rand;
}


ونقوم باستدعاءها عن طريق دالة تانية

رمز PHP:

function StrRandomRec2($req) #Where $req is the length of the generated string

{
return StrRandomRec($req, "");
}


الدالة طبعا موجودة فى مواقع تانية وبOptions اكتر زى مثلا numbers only .. لكن الدالة تعتبر مشروحة هنا وسهلة نوعا ما ..

Bakenam
04-02-2009, 12:28 PM
بسم الله الرحمن الرحيم

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

بإختصار شديد هذه التقنيه تسمح لك بتغير إمتداد الملف الي اي إمتداد ترغب فيه

و هي تتم عن طريق ملف htaccess.

أولاً إفتح معي المفكره و إكتب الاتي


رمز PHP:

RewriteEngine on


هذا الكود يقوم بتشغيل الخاصيه في موقعك

لعد ذلك نقوم بتعريف السيرفر ما هو الاسلوب الذي يتعامل به مع الملفات عن طريق وضع الاتي


رمز PHP:


RewriteRule ^New Url$ old Url


أولاً نضع الاتي

RewriteRule

و هذا الكود يدل علي بدأ تبديل الرابط الاول

و يتكون هذا السطر من ^ و هذه العلامه تعني بداية الرابط الاول المراد تغيره

و بعد ذلك نضع الرابط الاول الجديد المراد التغيير إليه و بعد ذلك أضفنا

$ و هي تعني إنتهاء الجزء الخاص بالملف المراد التغيير إليه

و بعد ذلك قمنا بوضع اسم الملف القديم

فلنأخذ مثال عملي

أول شيئ انا عندي ملف موقعي الرئيسي اللي هو index.php و عايز أخليه
index.htm علشان محركات البحث

يبقي افتح ملف مفكرة و أكتب الاتي




رمز Code:
RewriteEngine onRewriteRule ^index\.htm$ index.php
و بعد كده أحفظه علي إمتداد htaccess.

و بعد كده أطلب من المتصفح الملف بإمتداده الجديد

شرح ما بداخل الملف عن قرب


RewriteEngine on : لتفعيل خاصية المود ري رايت

RewriteRule : و هي تعني بدأ التغير علي الرابط الاول

^ : تعني بدأ الجزء الخاص بإمتداد الملف الجديد
\. : و هي تعني . و تم وضع قبلها \ حتي يتم معاملتها علي انها نقطة عاديه

$ : نهاية الجزء الخاص بالملف الجديد




و بذلك ينتهي الجزء التمهيدي من سلسة دروس خاصية mod rewrite

و الي اللقاء في الجزء القادم

Bakenam
04-02-2009, 12:36 PM
:: السلام عليكم ورحمة الله وبركاته ::


بسم الله الرحمن الرحيم




لقد وصلنا الى آخر درس في نظام قوالب Smarty ودرسنا الأساسيات ,المتغيرات ,التكرار,الاستدعاء
وان شاء الله راح ندرس آخر درس في Smarty وهو درس تشغيل دوال PHP في Smarty


::: < متطلبات الدرس > :::

قراءة جميع الدروس :

{الدرس الأول}~~ شرح نظام قوالب Smarty للمبتدئين ~~[الأساسيات] (http://www.traidnt.net/vb/showthread.php?t=994286)

{درس الثاني}~~ شرح نظام قوالب Smarty للمبتدئين ~~ [المتغيرات في Smarty] (http://www.traidnt.net/vb/showthread.php?t=996162)

{الدرس الثالث}~~ شرح نظام قوالب Smarty للمبتدئين ~~ [التكرار في Smarty] (http://www.traidnt.net/vb/showthread.php?t=997959)

{الدرس الرابع}~~ شرح نظام قوالب Smarty للمبتدئين ~~ [إستدعاء الملفات في Smarty] (http://www.traidnt.net/vb/showthread.php?p=9313602)



::: < متطلبات الدرس / > :::

:-ملاحظة -:
( من المفترض ان تكون لك خلفية عن الـ PHP لكي تتابع معنا)


الطريقة في انشاء Smarty هو انك تعمل مجلد تسميه اي اسم ولكن في العملية راح نسميه smarty_func ثم تنسخ مجلد libs وهو ياتي مع نظام Smarty
ولقد تحدثنا عنه في الدورس السابقة ثم انشئ مجلدين فرعيين templates و compile طبعا هذه الأسماء الافتراضية في Smarty ويمكنك تغيير أسماء المجلدات مع تغيير ما يلزم في ملف Smart.class.php وذكرنا الطريقة في الدرس الاول


ودرسنا اليوم راح نتعرف على امر جديد من اوامر Smarty وهو :


رمز PHP:

register_function( ' temp_vari ' , ' php_vari ' )


وتاخذ مدخلين :

الاول : تضع اسم في قالب تصميم وتضعه في اي مكان يعجبك واي اسم يعجبك بهذ الشكل :


رمز PHP:

{temp_vari}


لاحظوا الاسم بدون علامة الدولار $ الذي تعلمناه في الدرس السابق
اذا وضعت علامة الدولار فسيكون متغير وليس اسم عادي
فتذكروا عندما تريدون وضع دالة في القالب يجب وضع اسم وليس متغير

الثاني : وضع الدالة التي موجودة في PHP واستبدالها بالاسم الذي موجود في القالب





::: - شرح مبسط - :::

( الاسم هو وسيلة لعرض مكان الدالة في القالب )



خطة العمل :

1 - برمجة ملف math.php لوضع الدالة وستكون دالة حسابية
2 - برمجة ملف func.htm وهو ملف تصميم يضع فيه الاسم ليستبدل بالدالة ولعرض العملية الحسابية
3 - برمجة ملف index.php وهنا يستبدل مكان الاسم بدالة PHP في القالب




1 - برمجة ملف math.php لوضع الدالة وستكون دالة حسابية

اولا : انشئ ملف اسمه math.php وثم ضع بداخله الكود التالي :


رمز PHP:

<?php

function php_math(){

$a = 5;
$b = 15;

$c = $a + $b;

echo $a." + ".$b." = ".$c;

}

?>


http://www.pxll.com/usersupload/mobher/smarty_lesson_5-function/1.jpg



واحفظه في المجلد الرئيسي smarty_func


دالة php_math هي دالة من صنعنا ويوجد بداخلها عملية حسابية
الآن لنستعرض الملف في المتصفح ولكن قبل الاستعراض اضف هذا الكود البسيط لتشغيل الدالة قبل نهاية الكود في ملف math.php :


رمز PHP:

php_math();




صورة توضيحية :


http://www.pxll.com/usersupload/mobher/smarty_lesson_5-function/2.jpg




الآن نستعرض الملف في المتصفح :


http://www.pxll.com/usersupload/mobher/smarty_lesson_5-function/3.jpg




حلو الآن كل شي تمام بس قبل اكمال العمل
اطلب منك طلب احذف الكود اللي اضفناه آخر شي وهو الكود :


رمز PHP:

php_math();



ويرجع الملف مثل قبل ويصير بهذا الشكل :


http://www.pxll.com/usersupload/mobher/smarty_lesson_5-function/4.jpg


لا يحتاج الى كود الشتغيل لأنه سيشتغل تلقائيا في Smarty



2 - برمجة ملف func.htm وهو ملف تصميم يضع فيه الاسم ليستبدل بالدالة ولعرض العملية الحسابية

افتح الفرونت بيج ثم اضف الكود التالي :


رمز Code:

<html dir="rtl">

<head>
<meta http-equiv="Content-Type" content="****/html; charset=windows-1256">
<meta http-equiv="Content-Language" content="ar-sa">
<title>شرح تشغيل دوال بي اتش بس في سمارتي</title>
</head>

<body>

<table border="1" width="100%" id="table1">
<tr>
<td bgcolor="#F2FCFF">
<p align="center"><b><font size="6">جدول الحساب</font></b></td>
</tr>
<tr>
<td>&nbsp;<p align="center">&nbsp;</p>
<p align="center">&nbsp;</td>
</tr>
</table>

</body>

</html>

احفظه باسم func.htm في مجلد templates


اضغط على ( معاينة ) في الفرونت بيج :


http://www.pxll.com/usersupload/mobher/smarty_lesson_5-function/5.jpg




والآن نريد عرض الدالة الحسابية في وسط الجدول :


http://www.pxll.com/usersupload/mobher/smarty_lesson_5-function/6.jpg




نضف هذا الكود في وسط الجدول :


رمز PHP:

{smarty_math}




صورة توضيحية :


http://www.pxll.com/usersupload/mobher/smarty_lesson_5-function/7.jpg




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


رمز Code:

<html dir="rtl">

<head>
<meta http-equiv="Content-Type" content="****/html; charset=windows-1256">
<meta http-equiv="Content-Language" content="ar-sa">
<title>شرح تشغيل دوال بي اتش بس في سمارتي</title>
</head>

<body>

<table border="1" width="100%" id="table1">
<tr>
<td bgcolor="#F2FCFF">
<p align="center"><b><font size="6">جدول الحساب</font></b></td>
</tr>
<tr>
<td>&nbsp;<p align="center">{smarty_math}</p>
<p align="center">&nbsp;</td>
</tr>
</table>

</body>

</html>

3- برمجة ملف index.php وهنا يستبدل مكان الاسم بالدالة التي موجود في ملف math.php في القالب


انشئ ملف وسميه index.php واضف الكود التالي :


رمز PHP:

<?php

// استدعاء ملف الأساسي لـسمارتي
include("libs/Smarty.class.php");

// استدعاء ملف الدالة التي سيتم وضعها في القالب
include("math.php");

// انشاء كائن سمارتي
$smarty = new Smarty;

###############################
###############################

// استبدال الاسم الموجود في القالب الى الدالة الحسابية
$smarty->register_function('smarty_math','php_math');

// عرض ملف التصميم بعد اتمام العملية
$smarty->display("func.htm");

?>



http://www.pxll.com/usersupload/mobher/smarty_lesson_5-function/8.jpg




شرح عمل الكود :


رمز PHP:

// استدعاء ملف الأساسي لـسمارتي
include("libs/Smarty.class.php");


استدعينا ملف Smarty.class.php وهو ملف لانشاء Smarty في برمجياتك




رمز PHP:

// استدعاء ملف الدالة التي سيتم وضعها في القالب
include("math.php");


استدعينا ملف الذي توجد به الدالة الحسابية والتي سيتم وضعها في وسط الجدول عن طريق Smarty




رمز PHP:

// انشاء كائن سمارتي
$smarty = new Smarty;


انشأنا كائن Smarty باستخدام امر new وطبعا Smarty مبرمج بالكائنات ويجب انشاء الكائن اولا ثم البدء بالبرمجة




رمز PHP:

// استبدال الاسم الموجود في القالب الى الدالة الحسابية
$smarty->register_function('smarty_math','php_math');


وصلنا الى امر جديد من اوامر Smarty وهي تاخذ مدخلين
الاول : اسم الموجود في قالب التصميم وهو smarty_math وهو في ملف func.htm
الثاني : اسم الدالة الحسابية ويتم استبدالها بمكان المدخل الاول والدالة موجودة في ملف math.php




رمز PHP:

// عرض ملف التصميم بعد اتمام العملية
$smarty->display("func.htm");


عرضنا ملف التصميم في صفحة الانترنت بأمر dispaly وهو أمر عرض الملفات التصميم في Smarty




الآن نستعرض ملف index.php ونرى النتيجة :

http://www.pxll.com/usersupload/mobher/smarty_lesson_5-function/9.jpg



يا سلااااااام عليك الف مبرووووك لقد تعلمت تشغيل الدوال في Smarty http://traidnt.net/vb/images/smilies/shiny01.gif



صورة توضيحية لخطة العمل :


http://www.pxll.com/usersupload/mobher/smarty_lesson_5-function/10.jpg






العمل كاملاً في المرفقات



الى هنا انتهى آخر درس في Smarty

واعتبر نفسك اتقنت Smarty وماهو مهم في فصل الكود عن التصميم

وارفقت Smarty Manual ليكون مرجعك في Smarty والبحث عن اي دالة او عملها
بعد فك الضغط راح تحصل ملفات HTML كثيرة افتح ملف index.html وابدا بمعرفة عالم Smarty

او يمكنك تحميل من الموقع الرئيسي:
http://www.smarty.net/download-docs.php (http://www.smarty.net/download-docs.php)


وطبعا لانتسون الهدية
كتاب الكتروني يوجد به جميع مواضيعي لتعليم نظام قوالب Smarty


:: تحميل الكتاب ::

بسم الله الرحمن الرحيم (http://www.zshare.net/download/20479400e79f7a11/)


الشكر الى الله ثم الى المنتديات التالية :

معهد ترايدنت
منتديات بكسل
منتديات بي اتش بي

بردودهم التشجيعية في اكمال الدروس بارك الله فيهم



ان شاء الله نتقابل بدروس آخرى في لغات برمجية آخرى

وان شاء الله اكون وفقت في الشرح واستفدتوا من جميع الدروس عن Smarty

لا تنسونا من صالح دعواتكم

وفقنا الله جميعا لما يحبه ويرضاه

Bakenam
04-02-2009, 01:26 PM
السلام عليكم ..

تكررت الأسئلة بخصوص موضوع عمل الصفحات بالطريقة التي ذكرت بالعنوان فسويت هالموضوع و فيه مراعاة للمبتدئين .. http://traidnt.net/vb/images/smilies/icon30.gif

راح أبدأ خطوة يا شباب بس ركزوا و إذا ما فهمتوا اقروا الموضوع مرة ثانية و ثالثة إلى أن تفهمونه و إذا ما فهمتوه أي استفسار أنا حاضر و بالخدمة ..

أول شيئ نسوي صفحة index.php و هذا هو الكود :


رمز PHP:

<?php
// هنا نستدعي الملف الي راح يطلع في الصفحة index.php بدون أي اضافات ..
include('index.htm');
// و هنا راح نستدعي الملف الي راح يسوي لنا الموضوع كامل ..
include('call.php');
?>

انتهينا من index.php

و هنا الكود كامل من غير الشرح :


رمز PHP:
<DIV class=smallfont style="MARGIN: 5px 20px 20px" align=center>
<SPAN style="COLOR: #000000">
<?php
include('index.htm');
include('call.php');
?>

و الحين انتهينا من الخطوة الأولى و نروح للخطوة الثانية ..

الخطوة الثانية و هي أن نصنع ملف index.htm الي استدعيناه في ملف index.php عشان يظهر ..

و الحين انتهينا من الخطوة الثانية و نروح للخطوة الثالثة و هي أهم خطوة و ركزوا معااي عدل :

راح نسوي ملف call.php

أول شيئ حبيت أقولكم أن انا استخدمت طريقة سهلة عن طريق الدالة :

رمز PHP:

switch()


و للعلم في طريقة ثانية عن طريق الدالة الشرطية :
رمز PHP:

if()


بس أنا بصراحة ما عجبتني لأني أحسها مملة و للعلم أن الدالتين متشابهتين بالعمل سوى اختلافات بسيطة ..

نبدأ بالعمل بملف call.php :


رمز PHP:

<?php
// هنا يقوم بإستقبال الحرف الي بعد علامة الإستفهام أنا عينت له هنا حرف q .. و لكن تقدر تعين له أشياء ثانية ..
switch ($_GET["q"]){
// هنا تقوله في حال أن الي يأتي بعد إشارة اليساوي رقم واحد مثلا يستدعي الملف الفلاني و غير الرقم واحد إلى ما يناسبك سواء رقم أو كلام و غير أيضا الملف الي موجود إلى الملف الي يناسبك في السكربت الخاص بك
case "1";
include "examble_1/examble_1.htm";
break;
// و هكذا إلى أن تشبع
case "2";
include "examble_2/examble_2.htm";
break;
// .........
case "3";
include "examble_3/examble_3.htm";
break;
}
?>

و أنا إنسان و ممكن أخطأ فإذا كان في خطأ يرجى تعديله ..

للعلم هذا مجهود شخصي و عند النقل يرجى ذكر المصدر ..

Bakenam
04-02-2009, 01:28 PM
السلام عليكم

كورس كامل وقوي في الجافا سكربت مقدم من Learnkey


وهذه بعض الصور

http://img238.imageshack.us/img238/5875/84293225cq1.jpg (http://img238.imageshack.us/img238/5875/84293225cq1.jpg)
http://img207.imageshack.us/img207/9725/32317131lw2.jpg (http://img207.imageshack.us/img207/9725/32317131lw2.jpg)
http://img238.imageshack.us/img238/3953/55379743uh6.jpg (http://img238.imageshack.us/img238/3953/55379743uh6.jpg)

********** For Developers - Part 1 and 2



The ********** for Developers training course from LearnKey starts with core concepts and takes you step-by-step through the process of creating richer, more dynamic client-side *** pages using **********. Expert instructor Campbell Gunn combines information usually found only in multiple reference sources into this concise course. At the conclusion of this course, you ll understand how to effectively use ********** to develop interactive client-side *** pages.

Benefits:
Increase your earning potential with technical mastery and proficiency.
Enhance employment opportunities with in-demand *** development knowledge.
LearnKey courses let you move along at your own pace and gain new skills in a useful, productive manner.



-----------------------------

قمت برفع الملفات على 5 سيرفرات بنفس التقسيمات
بامكانك تحميل ملف من سيرفر وملف اخر من سيرفر اخر

-----------------------------


أولاً للتحميل من ZShare

Part 1 (http://www.zshare.net/download/5026538621e59ae5/)
Part 2 (http://www.zshare.net/download/50265486aa7d3bab/)
Part 3 (http://www.zshare.net/download/5026581822d4149b/)
Part 4 (http://www.zshare.net/download/502658815042262e/)
Part 5 (http://www.zshare.net/download/5026620385e6aa51/)
Part 6 (http://www.zshare.net/download/50266311b470e611/)
Part 7 (http://www.zshare.net/download/50266385ebb90f55/)
Part 8 (http://www.zshare.net/download/50266528070e60ef/)
Part 9 (http://www.zshare.net/download/50266571f7b07b58/)



للتحميل من RapidShare

Part 1 (http://rapidshare.com/files/156786252/Yas-m.com_LK-JS.part01.rar)
Part 2 (http://rapidshare.com/files/156786255/Yas-m.com_LK-JS.part02.rar)
Part 3 (http://rapidshare.com/files/156806109/Yas-m.com_LK-JS.part03.rar)
Part 4 (http://rapidshare.com/files/156806112/Yas-m.com_LK-JS.part04.rar)
Part 5 (http://rapidshare.com/files/156821625/Yas-m.com_LK-JS.part05.rar)
Part 6 (http://rapidshare.com/files/156821631/Yas-m.com_LK-JS.part06.rar)
Part 7 (http://rapidshare.com/files/156824906/Yas-m.com_LK-JS.part07.rar)
Part 8 (http://rapidshare.com/files/156824909/Yas-m.com_LK-JS.part08.rar)
Part 9


(http://rapidshare.com/files/51310831/LK-JS-DE.part42.rar/)
للتحميل من SendSpace

Part 1 (http://www.sendspace.com/file/87wdsk)
Part 2 (http://www.sendspace.com/file/mzys3y)
Part 3 (http://www.sendspace.com/file/2970vd)
Part 4 (http://www.sendspace.com/file/q3wypj)
Part 5 (http://www.sendspace.com/file/1vrzm1)
Part 6 (http://www.sendspace.com/file/2hwztw)
Part 7 (http://www.sendspace.com/file/a49bsw)
Part 8 (http://www.sendspace.com/file/iax4rw)
Part 9 (http://www.sendspace.com/file/h7b5te)


(http://rapidshare.com/files/51310831/LK-JS-DE.part42.rar/)
للتحميل من IFile

Part 1 (http://ifile.it/gocnb1w)
Part 2 (http://ifile.it/7y8w3e2)
Part 3 (http://ifile.it/a3i19my)
Part 4 (http://ifile.it/fdxwnsg)
Part 5 (http://ifile.it/dy8a3eq)
Part 6 (http://ifile.it/ohq25bx)
Part 7 (http://ifile.it/vk69lcf)
Part 8 (http://ifile.it/yb9cvpr)
Part 9
(http://rapidshare.com/files/51310831/LK-JS-DE.part42.rar/)


للتحميل من FileFactory

Part 1 (http://www.filefactory.com/file/b2696d/n/Yas-m_com_LK-JS_part01_rar)
Part 2 (http://www.filefactory.com/file/91c7e5/n/Yas-m_com_LK-JS_part02_rar)
Part 3 (http://www.filefactory.com/file/d704c1/n/Yas-m_com_LK-JS_part03_rar)
Part 4 (http://www.filefactory.com/file/c5f86a/n/Yas-m_com_LK-JS_part04_rar)
Part 5 (http://www.filefactory.com/file/efbcce/n/Yas-m_com_LK-JS_part05_rar)
Part 6 (http://www.filefactory.com/file/e3df62/n/Yas-m_com_LK-JS_part06_rar)
Part 7 (http://www.filefactory.com/file/271c76/n/Yas-m_com_LK-JS_part07_rar)
Part 8 (http://www.filefactory.com/file/ddb06e/n/Yas-m_com_LK-JS_part08_rar)
Part 9 (http://www.filefactory.com/file/5a31d0/n/Yas-m_com_LK-JS_part09_rar)



باسوورد فك الضغط :
www.yas-m.com (http://www.yas-m.com/)


الموضوع منقول من مملكة الياسمين (http://traidnt.net/vb/www.yas-m.com/vb/)
http://www.yas-m.com/vb/showthread.php?t=938 (http://www.yas-m.com/vb/showthread.php?t=938)

Bakenam
04-02-2009, 01:30 PM
http://up.l7njo.com/uploads/images/l7njo-5ff1d414e5.JPG







للتحميل الشرح

اضغط هنا من فضلك

للتحميل (http://www.4shared.com/file/70036984/f991dbfe/C_online.html?dirPwdVerified=9430d951)

Bakenam
04-02-2009, 01:32 PM
السلام عليكم ورحمة الله وبركاته
أهلا ً وسهلا ً بكم فى أول درس باللغة العربية فى موقعى
وسوف نتكلم فى هذا الدرس عن مكتبة الجافاسكربت الأكثر من رائعة الجى كويرى



وسوف يغطى هذا الدرس النقاط التالية


1- ما هى الجى كويرى


2-ما هى مميزات المكتبة


3- كيف ستخدمنى الجى كويرى




الان دعنا نتكلم عن ما هى هذة المكتبة


الجى كويرى هى مكتبة جافاسكربت خفيفة وهى تؤكد التفاعل بين الجافاسكربت وبين الاتش تى ام ال


وقد أطلقت هذة المكتبة فى يناير عام 2006 فى مؤتمر بير كامب بواسطة جون رايسج وتم أطلاقها برخصتين واحدة هى


MIT License


والاخرى هى


GNU General Public License


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


وكانت مايكروسوفت قد قامت مسبقا ً بتبنى هذة المكتبة فى الفيجوال بيسك دوت نت واستخدمها فى الاية اس بى للتعامل مع الأجاكس


مميزاتها


*-التعامل مع عناصر الدى او ام وسهولة تامة فى تحديد العناصر المختلفة


*-السهولة التامة ايضا ً فى تحديد العناصر المختلفة عن طريق استخدام نفس قواعد التحديد الخاصة بالcss


*-التعامل الرائع مع الاحداث


*-التعديل على الاستيل بمنتهى اليسر


*-التأثيرات والتحريك لتحريك العناصر بشكل رائع الجمال


*-تعاملها مع الأجاكس


*-أدوات اخرى لتحديد مثلا ً نوع المتصفح نوع محرك السى اس اس الخ


*- أضافات عديدة ومفيدة جدا ً


كيف ستخدمنى الجى كويرى




بالأحرى علينا ان نسأل ما هو مجالك ؟


فاذا كنت انتا مصمم فأن الجى كويرى توفر لك العديد من الادوات التى قد تجعل حياتك أسهل بكثير جدا ً اتمنى ان تجربها اليوم


واذا كنت مبرمج بى اتش بى فانها سوف تقدم لك الحل النهائى لتقنية الاجاكس فى حلة من السهولة واليسر غير مسبوقة من قبل


واذا كنت مبرمج جافاسكربت فأهلا ً بك فى عالم من المميزات التى لا تنتهى فانتا الان ستنسى كل المشاكل الناجمة عن التعدد واختلاف المتصفحات فى التعامل مع الاحداث والتحديد للعناصر الموجودة فى الصفحة وعالم من المميزات يحاتج شرحة الى عمر اخر فلا تتردد ولا تنظر واستخدمها الان


انتظرو الدرس القادم لى عن استخدام الجى كويرى

لمذيد من الدروس عن الجى كويرى قم بزيارة موقعى
http://www.hack-systems.com (http://www.hack-systems.com/)

Bakenam
04-02-2009, 01:34 PM
السلام عليكم

طبعا الكود أبسط مما تظن

ولا يحتاج الى قواعد بيانات

---------------------------

طبعا الكود يوضع في نهاية ملف header.php فقط اذا كان الملف موجود

أو أي ملف مثلا في بداية index.php

الكود :

رمز PHP:

$close = "yes" ;
if ( $close = "yes" ){
echo "عفوا , الموقع مغلق حاليا للصيانة";
include( "footer.php" );
exit;
}


---------------------------

نبدأ بالشرح

رمز PHP:

$close = "yes" ;


نضع القيمة yes في المتغير close اذا تريد اغلاق الموقع

رمز PHP:

if ( $close = "yes" ){
echo "عفوا , الموقع مغلق حاليا للصيانة";
include( "footer.php" );
exit;
}


هنا نضع شرط اذا كان المتغير يحوي على القيمة yes فإنه يطبق الكود

ثم يلغي الكود الذي بعده

بالنسبة لـ :
رمز PHP:

include( "footer.php" );


تضعها اذا كان لديك ملف فوتر footer.php

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

---------------------------

أتمنى أن يكون الشرح مفهوم

Bakenam
04-02-2009, 01:36 PM
http://www.geek4arab.com/vb/images/salam.gif
http://www.up-00.com/upfiles/rqi43792.png





http://www.microsoft.com/library/media/1033/technet/images/sysinternals/homepage/55x55_file_disk.gif
File and Disk Utilities (http://www.microsoft.com/technet/sysinternals/fileanddiskutilities.mspx)
مجموعة كبيرة من البرمجيات المجانية
والخدمية للتعامل مع الاقراص والملفات



Sysinternals Utilities: File & Disk

http://switch.atdmt.com/action/umcmsr_FileandDiskUtilities_4•AccessChk (http://www.microsoft.com/technet/sysinternals/FileAndDisk/AccessChk.mspx)
This tool shows you the accesses the user or group you specify has to files, Registry keys or Windows services.
•AccessEnum (http://www.microsoft.com/technet/sysinternals/FileAndDisk/AccessEnum.mspx)
This simple yet powerful security tool shows you who has what access to directories, files and Registry keys on your systems. Use it to find holes in your permissions.
•CacheSet (http://www.microsoft.com/technet/sysinternals/FileAndDisk/CacheSet.mspx)
CacheSet is a program that allows you to control the Cache Manager's working set size using functions provided by NT. It's compatible with all versions of NT.
•Contig (http://www.microsoft.com/technet/sysinternals/FileAndDisk/Contig.mspx)
Wish you could quickly defragment your frequently used files? Use Contig to optimize individual files, or to create new files that are contiguous.
•DiskExt (http://www.microsoft.com/technet/sysinternals/FileAndDisk/DiskExt.mspx)
Display volume disk-mappings
•Diskmon (http://www.microsoft.com/technet/sysinternals/FileAndDisk/Diskmon.mspx)
This utility captures all hard disk activity or acts like a software disk activity light in your system tray.
•DiskView (http://www.microsoft.com/technet/sysinternals/FileAndDisk/DiskView.mspx)
Graphical disk sector utility
•Du (http://www.microsoft.com/technet/sysinternals/FileAndDisk/du.mspx)
View disk usage by directory
•EFSDump (http://www.microsoft.com/technet/sysinternals/FileAndDisk/efsdump.mspx)
View information for encrypted files
•Filemon (http://www.microsoft.com/technet/sysinternals/FileAndDisk/Filemon.mspx)
This monitoring tool lets you see all file system activity in real-time.
•Junction (http://www.microsoft.com/technet/sysinternals/FileAndDisk/Junction.mspx)
Create Win2K NTFS symbolic links
•LDMDump (http://www.microsoft.com/technet/sysinternals/FileAndDisk/LdmDump.mspx)
Dump the contents of the Logical Disk Manager's on-disk data****, which describes the partitioning of Windows 2000 Dynamic disks.
•MoveFile (http://www.microsoft.com/technet/sysinternals/FileAndDisk/pendmoves.mspx)
Schedule file rename and delete commands for the next reboot. This can be useful for cleaning stubborn or in-use malware files.
•NTFSInfo (http://www.microsoft.com/technet/sysinternals/FileAndDisk/NtfsInfo.mspx)
Use NTFSInfo to see detailed information about NTFS volumes, including the size and location of the Master File Table (MFT) and MFT-zone, as well as the sizes of the NTFS meta-data files.
•PageDefrag (http://www.microsoft.com/technet/sysinternals/FileAndDisk/PageDefrag.mspx)
Defragment your paging files and Registry hives!
•PendMoves (http://www.microsoft.com/technet/sysinternals/FileAndDisk/pendmoves.mspx)
See what files are scheduled for delete or rename the next time the system boots.
•Process Monitor (http://www.microsoft.com/technet/sysinternals/FileAndDisk/processmonitor.mspx)
Monitor file system, Registry, process, thread and DLL activity in real-time.
•PsFile (http://www.microsoft.com/technet/sysinternals/FileAndDisk/PsFile.mspx)
See what files are opened remotely
•PsTools (http://www.microsoft.com/technet/sysinternals/FileAndDisk/PsTools.mspx)
The PsTools suite includes command-line utilities for listing the processes running on local or remote computers, running processes remotely, rebooting computers, dumping event logs, and more.
•SDelete (http://www.microsoft.com/technet/sysinternals/FileAndDisk/SDelete.mspx)
Securely overwrite your sensitive files and cleanse your free space of previously deleted files using this DoD-compliant secure delete program.
•ShareEnum (http://www.microsoft.com/technet/sysinternals/FileAndDisk/ShareEnum.mspx)
Scan file shares on your network and view their security settings to close security holes.
•Sigcheck (http://www.microsoft.com/technet/sysinternals/FileAndDisk/Sigcheck.mspx)
Dump file version information and verify that images on your system are digitally signed.
•Streams (http://www.microsoft.com/technet/sysinternals/FileAndDisk/Streams.mspx)
Reveal NTFS alternate streams
•Sync (http://www.microsoft.com/technet/sysinternals/FileAndDisk/Sync.mspx)
Flush cached data to disk
•VolumeId (http://www.microsoft.com/technet/sysinternals/FileAndDisk/VolumeId.mspx)
Set Volume ID of FAT or NTFS drives



تحياتى

Bakenam
04-02-2009, 02:03 PM
بسم الله الرحمن الرحيم



سأقوم بسرد ما نحتاجه في هذه المقالة في عناوين و من ثم شرحها كلٍٍ علي حدى



محتويات المقالة :-



1- ما هو الكائن

2- إنشاء الكائن

3- تحديد الخواص

4- تحديد الأفعال

&-استخدام الافعال و الخواص
&- استخدام الكائن

5- الوراثة

6- الدالة construct و destruct

7- نسخ الكائن

8- تجريد الكائن

9- الكلمات ألمفتاحيه private, public, protected

10- الثوابت

11- نظره شامله علي الكائن

12- أمثله علي البرمجة ألكائنيه

-------------------------------------------------

1- ما هو الكائن :



بدأت php استخدام البرمجة الموجهة لكائن و المعروفة في معظم لغات البرمجة Object Oriented Program(OOp ) بداية من PHP4 ثم تطورت في PHP5 مما أدى إلي سرعة كتابه الاسكربتات و إضافة خواص جديدة إلى هذه الأسكربتات منها زيادة الاستفادة من المحرك Zend

و التي أدت إلي زيادة سرعة تشغيل الاسكربت الذي يحتوي علي كائن عن ما كان عليه في الإصدار php4



& الكائن ببساطه :

الكائن بكل بساطه هو كل ما هو موجود في هذا الوجود علي سبيل المثال الإنسان

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

و رجلان و ذراعان جيد الانسان يمتلك ذراعان لذلك هو يستطيع استخدمها في حياته

مثلاً نستخدم الزراع في حمل الأشياء الان استطعنا ربط تكوين الإنسان بأفعاله

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

الخلاصه الكائن يتكون من خواص و الأفعال لنكبر المثال أكثر



لدينا قاعدة بيانات و نريد عمل كائن تكون مهمته هي الاتصال بهذه القاعدة و جلب المعلومات منها

إذاً سنحتاج تحديد خواص لهذا الكائن تجعله مناسب لهذه المهمة

مثلاً نجعله قادر علي الاحتفاظ بما يجلبه من قاعدة البيانات في مصفوفة حتى نستطيع فيما بعد التحكم في هذه البيانات جميل جداً

و لكن هل تعتقد معي أن الخواص واحدها كافية لجعله قادر علي القيام بهذه المهمة بالشكل الأمثل الإجابة هي لا فالطفل الرضيع يمتلك كل الخواص التي تجعله يمشي و يتكلم و لكنه لا يستطيع عمل ذلك بدون تدريب و نضوج من هنا يجب علي المبرمج استخدام عقله في إنشاء أفعال الكائن فلا يمكن مثلاً عمل فعل في الكائن يقوم بقطع الاتصال بقاعدة البيانات و هو لم يقوم في الاصل بعمل الاتصال من بهذه القاعدة

كل هذه الأشياء سنتناولها بشكل مٌفصل فيما بعد فلا تقلق بشأنها.



2- إنشاء الكائن:



كل ما عليك لإنشاء الكائن استخدام هذه الجمله


رمز PHP:


Class اسم الكائن

{

//محتويات الكائن كخواصه و أفعاله

}






3- تحديد خواص الكائن




كما تكلمنا سابقاً عن الخواص التي يجب تحديدها للكائن حتي يستطيع ان يعتمد عليها في افعاله

في الكائنات يتم تحديد الخواص من خلال وضعها في متغيرات عن طريق الكلمة المفتاحيه

var



مثال :




رمز PHP:


class TV // قمنا بعمل كائن بأسم TV

{



var اسم الخاصيه ;

}









رمز PHP:


class TV // قمنا بعمل كائن بأسم TV

{



var $tardod= 12036; // قمنا بإنشاء متغير كخصيه يحمل الرقم

// 12036 بشكل إفتراضي



}




ملحوظه ما يساويه المتغير يكون هو قيمة المتغير الافتراضيه يعني يمكن تغيرها فيما بعد



مثال اخر




رمز PHP:


class TV // قمنا بعمل كائن بأسم TV

{



var $tardod= array(); // قمنا بإنشاء متغير يحمل مصفوفه خاليه



}






3- تحديد افعال الكائن

افعال الكائن هي الوظائف التي يقوم بها و معنى كلمة وظيفة في الانجليزيه هي Function (http://php.net/Function)
هل تتذكر معي هذه الداله التي استعانا بها في إنشاء دوال خاصه بنا تابع
http://www.traidnt.net/vb/showthread.php?t=83181 (http://www.traidnt.net/vb/showthread.php?t=83181)

هي نفس الطريقة المستخدمه في صنع وظائف أو افعال الكائن أو الفئه الخاصه به class

قد تسأل نفسك لماذا نستخدمها في الكائن و من الممكن استخدمها بشكل مباشر دون هذه التعقيدات طبعاً يوجد فرق كبير جداً و هي ان الدوال في الكائن أو الوظائف تتيح لك ربطها بالخصائص و كذلك ربط الوظائف مع بعضها و ايضاً كل كائن يحمل وظائف يعبر عن جزء من البرنامج بمفرده علي عكس الدوال لوحدها

مثال


رمز PHP:

class TV

{


function اسم الوظيفه ()
{

// محتوايات الوظيفه

}

}




مثال


رمز PHP:


class TV

{


function print_msg ($message)
{

print "<div>$message</div>";

}

}




&-استخدام الافعال و الخواص

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

عن طريق الكلمة
رمز PHP:

$this->


مثال


رمز PHP:


class TV // كائن التلفاز
{
// متغير يحمل لون التليفاز
var $color= 'اسود ';


function tv_color()
{

echo " لون التلفاز هو
$this-> color";


}

/*

استخدمنا الكلمه

$this->

في استدعاء المتغير

color

*/

}


اذا اردت استدعاء متغير داخل الكائن عن طريق الكلمة
رمز Code:
$this->
يجب كتابتها هكذا


رمز PHP:

$this->المتغير


و ليس


رمز PHP:

$this->$المتغير




و كذلك عن طريق هذه الكلمة تستطيع استعداء الدوال داخل بعضها

ملحوظه : لا يتم استخدام هذه الكلمة إللا داخل الدوال فقط

مثال




رمز PHP:


class TV // كائن التلفاز
{
// متغير يحمل لون التليفاز
var $color= 'اسود ';


function tv_color()
{

return" لون التلفاز هو
$this-> color";


}


function total()
{

print $this->tv_color(); // قمنا بإستدعاء الداله tv_color
// التي تقوم بطباعة لون التلفاز

}


}




&- استخدام الكائن


بعد إنشاء الكائن و تحديد خواصه و افعاله و ربطها ببعض يتم استخدام الكائن عن طريق الكلمة

new

مثال


رمز PHP:




// عملية استدعاء الكائن

$tv = new اسم الكائن ;

// و لو اردنا استخدام احد خواص و التعديل عليها أو أحد الوظائف

$tv->اسم الوظيفه();


مثال



رمز PHP:



class TV // كائن التلفاز
{
// متغير يحمل لون التليفاز
var $color= 'اسود ';


function tv_color()
{

return" لون التلفاز هو
$this-> color";


}


function total()
{

print $this->tv_color(); // قمنا بإستدعاء الداله tv_color
// التي تقوم بطباعة لون التلفاز

}


}

$tv= new TV;

$tv->color='أحمر';

print $tv->total();

Bakenam
04-02-2009, 02:14 PM
5- الوراثة

الوراثه من أكثر الاشياء الممتعه في البرمجه الكائنيه


ما هي الوراثه

من المعروف في حياتنا العملية ان لكل شيئ مصدر و هذا المصدر يحتوي علي بعض صفات هذا الشيئ

مثلاً الانسان مصدره ابويه فيرث منهما بعض الصفات كلون البشره و العين و طول القامه و لكنه يوجد به ما يميزه عن ابويه

مثلاً السياره فمثلاً أول سياره تم إختارعها كانت ذات الاربع عجلات بالشكل البدائي أما الاجيال المتطورها اصبحت ذات صفات أخرى متطوره مختلفه عن اول سياره تم إختارعها و لكن الشكل المبدائي واحد

إذاً نستنتج من ذلك انه يوجد في اب و ابناء في علاقة الوراثه الاب يحمل صفات فيرثها منه ابنائه كامله و لكنها تحتوي ايضاً علي صفات تختلف عن الاب


الكلمة المفتاحيه extends

تتم عملية التوريث من خلال الكلمة المفتاحيه extends

مثال



رمز PHP:


class A
{


}


class B extends اسم الكائن المراد الإرث منه
{


}



ملحوظه : الكائن الوريث يحتوي علي كل محتويات الكائن المورث أما الكائن المورث لا يحتوي علي صفات الكائن الوريث


مثال


رمز PHP:


class A
{

var $name='الوراثه تختصر الوقت ';

}


class B extends A
{

function msg()
{

echo $this->name; // استطعنا استخدام احد خصائص الكائن الاب
// A
// لأنه ورث كل محتويات الكائن
// A

}

}





6- الدالة construct و destruct




&مؤسس الصنف construct

ما هي مؤسس الصنف ؟

عندما تقوم ببناء الكائن قد تحتاج وضع إعدادات إفتراضيه له أو طباعة شيئاً معين عند استدعاء الكائن

فجائت ال php 5 بإضافة الكلمة المفتاحيه
رمز PHP:

__construct



مثال



رمز PHP:


class TV
{


function __construct()
{

echo "تم إنشاء الكائن ";

}


}


$tv = new TV ; // سيتم طباعة ما في مؤسس الصنف




&مدمر الصنف destruct

مثلاً عندما نقوم بمحو متغير الكائن من الذاكره عن طريق الداله
رمز PHP:

unset()


قد نحتاج لإجراء معين كمثلاً طباعة جملة معينه أو محو اشياء من الذاكره

مثال



رمز PHP:


class TV
{


function __construct()
{

echo "تم إنشاء الكائن ";

}

function __destruct()
{

echo "تم مسح الكائن";

}

}


$tv = new TV ; // سيتم طباعة ما في مؤسس الصنف

unset($tv); // سيتم طباعة ما في مدمر الصنف






7- نسخ الكائن
يتم نسخ الكائن عن طريق الكلمه المفتاحيه


رمز PHP:

clone



مثال


رمز PHP:

class c
{

var $num=50;

}

$c= new c;
$s= clone $c; // تمت عملية النسخ و اصبح لدينا الكائن المنسوخ تحت المتغير $s

echo $c->num;

echo "<br/>";

echo $s->num;



و لكن في بعض الاشياء نريد تميير الكائن المنسوخ بالتعديل علي بعض الخواص


يتم ذلك من خلال الكلمة المفتاحيه


رمز PHP:

__clone


مثال



رمز PHP:

class table
{

var $border = 3;
var $color = "red";

function inputItem( $num )
{

$this->border = $this->border + $num ;

print " $num حجم حدود الجدول هو ";

}

function __clone()
{

$this->border = 0 ;
}

}

$firstTable = new table;
$firstTable->inputItem(20);
$secondTable= clone $firstTable;

echo "<br/>".$firstTable->border ;

echo "<br/>".$secondTable->border ;



8- تجريد الكائن

بوضع كلمة abstract قبل اسم الكائن يصبح هذا الكائن في هذه الحاله فئة مجرده بمعنى

انه لا يمكن استدعاؤها بواسطة الكائن و يكون هذا الصنف في هذه الحالة غير صالحه في عمل الكائن و لكن تكون صالحه فقط للوريث

مثال مأخوذ من موقع php.net


رمز PHP:


abstract class AbstractClass
{
// Force Extending class to define this method
abstract function getValue();
abstract function prefixValue($prefix);

// Common method
function printOut() {
print $this->getValue() . "\n";
}
}

class ConcreteClass1 extends AbstractClass
{
function getValue() {
return "ConcreteClass1";
}

function prefixValue($prefix) {
return "{$prefix}ConcreteClass1";
}
}

class ConcreteClass2 extends AbstractClass
{
function getValue() {
return "ConcreteClass2";
}

function prefixValue($prefix) {
return "{$prefix}ConcreteClass2";
}
}

$class1 = new ConcreteClass1;
$class1->printOut();
echo $class1->prefixValue('FOO_') ."\n";

$class2 = new ConcreteClass2;
$class2->printOut();
echo $class2->prefixValue('FOO_') ."\n";


لاحظ وجود كلمة abstract قبل اسم الكائن ووجدها ايضاً قبل اسماء الدوال الموجوده داخل الكائن الاول , و لا يمكن عمل دالة مجرده داخل كائن غير مجرد اي لا يمكن استخدام

abstract

قبل اسم اي دالة موجوده داخل اي كائن عادي

9- الكلمات ألمفتاحيه private, public, protected

تستخدم هذه الكلمات قبل الخصائص و الدوال الموجوده داخل الكائن لجعلها ذو صفه معينه

فالكلمة

private : تجعل ما بعدها سري لا يمكن الوصول إليه من خارج الكائن و لا من الكائن الوريث يستخدم داخل الكائن فقط

public : تجعل ما بعدها عام يمكن استخدمه في كل انحاء البرنامج و هو الوضع الافتراضي للدوال و الخصائص

protected : تجعل ما بعدها سري لا يمكن استخدمه اللا داخل الكائن و الوصول إليه داخل الوريث

مثال :


رمز PHP:

class MyClass
{
privat $color = "blue";
public $color2 = "red";
protected $color3 = "white";

}



10- الثوابت

بإمكانك ايضاً عمل ثوابت داخل الكائن مثلما تقوم بعمل متغيرات عن طريق الكلمه المقتاحيه


رمز PHP:

const


مثال


رمز PHP:

class MyClass
{

const color="red";

function __construct()
{

print self::color;
}

}
class MyClass
{

const color="red";

function __construct()
{

print self::color;
}

}

Bakenam
04-02-2009, 02:17 PM
11- نظره شامله علي الكائن
البرمجه الكائنيه جعلت البرامجه بال php أكثر تنظيماً و اسهل تطورياً فيمكنك مثلاً
عمل إذا ستقوم بعمل اسكربت لبنك تجاري

فبإمكانك عمل كائن لحساب الارباح و كائن لعرض بيانات العملاء و كائن لإدخال بياناتهم
و كائن لحساب فوائد القرود و كائن لعمل تحكم في بيانات العملاء و هكذا ثم ربطهم ببعض

فيتكون لك برنامج كبير من حيث الرقي و منظم يمكن إصلاح أخطائه بسهوله لأنه منظم و مجزء

و البرمجه الكائنيه تجعل النظام يتعامل مع كل كائن علي انه برنامج علي حدى و كذلك يمكنك استخدام احد كائنات الاسكربت في اسكربت أخر لإختصار الوقت

و ايضاً يجب كتابة جملة الكائن في نفس المكائن الذي ستستدعي فيه الكائن أو عمله في ملف و من ثم جلبه عن طريق الداله


رمز PHP:

include()


مثلاً

يمكنك ايضاً استدعاء الكائن بدون استخدام الجمله new

عن طريق كتابة اسم الكائن و بعده :: و بعدها الخاصيه أو الوظيفه التي تريد استدعاؤها

مثال :


رمز PHP:

class MyClass
{

var $name="First object";

}


echo MyClass::name;



نصائح قبل البدء في برمجة اسكربت معتمد علي الكائنات :

قم بشكل نظري بتحديد ما تريده من كائنات في هذا النظام و من ثم تحديد مهمة كل كائن

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





12- أمثله علي البرمجة الكائنيه


سنقوم بإنشاء كائن يقوم بالاتصال بقاعدة البيانات

أول شيئ يجب ان نحدد ما نريده من هذا الكائن

1- الاتصال بقاعدة البيانات
2- الاستعلام من هذه القاعدة
3- جلب البيانات منها في مصفوفه
4- قطع الاتصال بقاعدة البيانات

جيد ما هي الخصائص التي يجب ان تكون فيه

1- متغير يحتوي علي مقبض الاتصال بهذه القاعدة
2- متغير يكون يحتوي علي الاستعلامات


الان نقوم بتنفيذ هذا في الكائن


رمز PHP:


<?
class DBConnect
{

var $link=false;//مقبض الاتصال بقاعدة البيانات

var $sql ; //مقبض الاستعلامات

var $arr=array(); // متغير لجلب البيانات من قاعدة البيانات في مصفوفه

function __construct($host,$user,$pass,$dbname) //الاتصال بقاعدة البيانات
{

$this->link= mysql_connect($host,$user,$pass);

if(!$this->link) exit ('لم يتم التمكن من الاتصال بالخادم');
else mysql_select_db($dbname);

}

function query(&$query) // الاستعلام من قاعدة البيانات
{
$this->sql= mysql_query($query,$this->link);

return $this->sql;

}

function fetch_array($query)// جلب البيانات في مصفوفه
{
$this->sql=$query;
$this->arr= mysql_fetch_array($this->sql);
return $this->arr;

}

function __destruct() // تحرير الاستعلام و قطع الاتصال بقاعدة البيانات
{

if($this->sql) mysql_free_result($this->sql);

if($this->link) mysql_close();


}



}

?>

طريقة الاستخدام


رمز PHP:


$db= new DBConnect('اسم الخادم','اسم المستخدم','كلمة المرور','اسم قاعدة البيانات');

$sql=$db->query("الاستعلام");

$arr=$db->fetch_array($sql);

unset($db);


http://traidnt.net/vb/images/icons/iconrote.gif

11- نظره شامله علي الكائن
البرمجه الكائنيه جعلت البرامجه بال php أكثر تنظيماً و اسهل تطورياً فيمكنك مثلاً
عمل إذا ستقوم بعمل اسكربت لبنك تجاري

فبإمكانك عمل كائن لحساب الارباح و كائن لعرض بيانات العملاء و كائن لإدخال بياناتهم
و كائن لحساب فوائد القرود و كائن لعمل تحكم في بيانات العملاء و هكذا ثم ربطهم ببعض

فيتكون لك برنامج كبير من حيث الرقي و منظم يمكن إصلاح أخطائه بسهوله لأنه منظم و مجزء

و البرمجه الكائنيه تجعل النظام يتعامل مع كل كائن علي انه برنامج علي حدى و كذلك يمكنك استخدام احد كائنات الاسكربت في اسكربت أخر لإختصار الوقت

و ايضاً يجب كتابة جملة الكائن في نفس المكائن الذي ستستدعي فيه الكائن أو عمله في ملف و من ثم جلبه عن طريق الداله


رمز PHP:

include()


مثلاً

يمكنك ايضاً استدعاء الكائن بدون استخدام الجمله new

عن طريق كتابة اسم الكائن و بعده :: و بعدها الخاصيه أو الوظيفه التي تريد استدعاؤها

مثال :


رمز PHP:

class MyClass
{

var $name="First object";

}


echo MyClass::name;



نصائح قبل البدء في برمجة اسكربت معتمد علي الكائنات :

قم بشكل نظري بتحديد ما تريده من كائنات في هذا النظام و من ثم تحديد مهمة كل كائن

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





12- أمثله علي البرمجة الكائنيه


سنقوم بإنشاء كائن يقوم بالاتصال بقاعدة البيانات

أول شيئ يجب ان نحدد ما نريده من هذا الكائن

1- الاتصال بقاعدة البيانات
2- الاستعلام من هذه القاعدة
3- جلب البيانات منها في مصفوفه
4- قطع الاتصال بقاعدة البيانات

جيد ما هي الخصائص التي يجب ان تكون فيه

1- متغير يحتوي علي مقبض الاتصال بهذه القاعدة
2- متغير يكون يحتوي علي الاستعلامات


الان نقوم بتنفيذ هذا في الكائن


رمز PHP:


<?
class DBConnect
{

var $link=false;//مقبض الاتصال بقاعدة البيانات

var $sql ; //مقبض الاستعلامات

var $arr=array(); // متغير لجلب البيانات من قاعدة البيانات في مصفوفه

function __construct($host,$user,$pass,$dbname) //الاتصال بقاعدة البيانات
{

$this->link= mysql_connect($host,$user,$pass);

if(!$this->link) exit ('لم يتم التمكن من الاتصال بالخادم');
else mysql_select_db($dbname);

}

function query(&$query) // الاستعلام من قاعدة البيانات
{
$this->sql= mysql_query($query,$this->link);

return $this->sql;

}

function fetch_array($query)// جلب البيانات في مصفوفه
{
$this->sql=$query;
$this->arr= mysql_fetch_array($this->sql);
return $this->arr;

}

function __destruct() // تحرير الاستعلام و قطع الاتصال بقاعدة البيانات
{

if($this->sql) mysql_free_result($this->sql);

if($this->link) mysql_close();


}



}

?>

طريقة الاستخدام


رمز PHP:


$db= new DBConnect('اسم الخادم','اسم المستخدم','كلمة المرور','اسم قاعدة البيانات');

$sql=$db->query("الاستعلام");

$arr=$db->fetch_array($sql);

unset($db);


بالتوفيق للجميع بإذن الله و اي استفسارات يمكن وضعها في هذا الموضوع

Bakenam
04-02-2009, 02:21 PM
بس الله الرحمن الرحيم
نظرا لكثرة الاسئلة عن نظام تسجيل الاعضاء فقد قمت بعمل هذا الموضوع
اول شيء نسم الله ونسأل نفسنا ايه هيا الحقول المطلوبه او البيانات المطلوبه عن الاعضاء اللي عاوزين نعمل نظام تسجيل ليهم وطبعا العملية تعتمد على نظام الكوكيز

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


رمز PHP:

<form name="reg" method="post" action="signup.php?do=send">
<table width="250" border="0" cellspacing="0" cellpadding="0">

<tr>
<td width="414" align="center"><font size="1">الاسم</font></td>
</tr>
<tr>
<td width="414" align="center"><input name="username" type="****" id="name" size="37"></td>
</tr>
<tr>
<td align="center"><font size="1">البريد الإلكتروني</font></td>
</tr>
<tr>
<td align="center"><input name="email" type="****" id="email" size="37"></td>
</tr>
<tr>
<td align="center"><font size="1">كلمة المرور</font></td>
</tr>
<tr>
<td align="center"><input name="password" type="password" id="password" size="37"></td>
</tr>
<tr>
<td align="center" width="99%"><font size="1">إعادة كلمة المرور</font></td>
</tr>
<tr>
<td align="center" width="99%"><input name="repassword" type="password" value="" size="37"></td>
</tr>
<tr>
<td align="center" width="99%"><font size="1">البلد</font></td>
</tr>
<tr>
<td align="center" width="99%"><input name="country" type="****" id="country" size="37"></td>
</tr>
<tr>
<td width="99%">
<p align="center">&nbsp;

</b>

<input name="aloow" onClick="********.enableform.submit.disabled ='';" id="yes" type="radio" value="yes" style="font-weight: 700"><b> <label for="yes">
موافق</label>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</b>
<input name="aloow" type="radio" onClick="********.enableform.submit.disabled ='true';" id="no" value="no" checked style="font-weight: 700"><b><label for="no">لا
أوافق</label>
<br>
</b>
<br>
<input id="submit" name="submit" type="submit" value="تسجيل" disabled></td>
</tr>
</table>
</form>


اعتقد ان مافيش فيها اي شيء للشرح
بس لاحظ معايا ان الفورم واخده اكشن اللي هو

رمز PHP:

signup.php?do=send


يعني معنى كده لازم نصمم صفحه باسم signup.php ونبدأ فيها الشغل
وهيا دي الصفحه اللي هاتستقبل البيانات
ونقول بسم الله ونبدأ نبرمج

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


رمز PHP:

switch ($_GET['do']){
هنا الحالات
}


واول حاله هيا حالة تأمينيه بحته بحيث انه لما اي حد يطلب طلب الصفحه في المتصفح على طول يطلع رسالة خطـأ بحيث تكون كالتالي

رمز PHP:

case"":
die("رسالة خطأ");
break;


اظن واضحه جدا يعني في حالة ما اذا تم طلب الصفحه باكشن فاضي او اكشن خطأ طلع رسالة خطأ واكتب الرسالة اللي انت عاوزها

الحالة التانية اللي هيا التسجيل

رمز PHP:

case"send":


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

رمز PHP:

function check($var){
$var = trim($var);
$var = strip_tags($var);
$var = mysql_real_escape_string($var);
return ($var);
}


ثانيا نتأكد من عدم تسجيل العضو سواء في الداتا بيز او تسجيل دخول الى الاسكربت
نعمل كود بسيط يعتمد على الكوكيز بحيث يكون كالتالي

رمز PHP:

if(!isset( $_******[اسم الكوكيز])){


ونحط هنا اكواد التسجيل اللي بعد كده
}

وبعدين نبدأ نمرر المدخلات على الدالة كالتالي

رمز PHP:

$username = check($_POST[username]);
$password = check($_POST[password]);
$repassword = check($_POST[repassword]);
$email = check($_POST[email]);
$country = check($_POST[country]);
$md5password = md5($password);


لاحظ اننا قمنا بتشفير كلمة المرور باستخدام الدالة md5
ولو حابب انك تزود في تشفير كلمة المرور تقدر تتابع الدرس التالي
http://www.traidnt.net/vb/showthread.php?t=954827 (http://www.traidnt.net/vb/showthread.php?t=954827)

طيب ياعم وبعدين نعمل ايه؟
اول شيء
نتأكد من عدم تسجيل هذا العضو بنفس البيانات قبل كده .. ازاي؟؟
نعمل استعلام بسيط كالتالي

رمز PHP:

$getuser = mysql_db_query("$DB_Name", "SELECT * FROM `$tblname` WHERE $tblname.`user_name` = '$username' ") ;
$issetuser = mysql_affected_rows();


بس كده؟
ممكن نعمل استعلام برضه على الايميل بحيث سكون كالتالي


رمز PHP:

$getmail = mysql_db_query("$DB_Name", "SELECT * FROM `$tblname` WHERE $tblname.`user_mail` = '$email' ") ;
$issetmail = mysql_affected_rows();


لاحظ اننا عملنا متغيرين اللي هما

رمز PHP:

$issetuser

$issetmail


وفي المتغيرين دول سجلنا عدد الصفوف المتأثرة من الاستعلامات
وكده نكون جبنا كل البيانات اللي محتاجينها فاضل بقى اننا نتاكد من البيانات دي
نعمل الاكواد التالية
ملحوظه صغيرة
اعتقد ان كل الناس عارفه دالة التأكد من صحه الايميل لذلك ساقوم باستخدامها ايضا

نعمل مصفوفه صغيره جدا بالاخطاء ونحط فيها الاستعلامات كالتالي


رمز PHP:


if ($username =='')
{
$errors[] = 'عفوا اسم المستخدم فارغ';
}
elseif ( $password != $repassword)
{
$errors[] = 'عفوا كلمة المرور غير متطابقة';
}
elseif (valid_email($email)==FALSE)
{
$errors[] = 'عفوا البريد الالكتروني خطأ';
}
elseif ($issetuser != 0)
{
$errors[] = 'من فضلك اختر اسم مستخدم آخر';
}
elseif ($issetmail != 0)
{
$errors[] = 'من فضلك اختر بريد الكتروني آخر';
}


يعني قولنا اذا كان اسم المستخدم فاضي او كلمات المرور غير متطابقة او البريد الالكتروني بعد تمريره على دالة التأكيد خطا او اذا كان المتغير الخاص باسم المستخدم اللي هو $issetuser اللي عملناه من قبل لا يساوي صفر يعني معنى كده الاسم مستخدم من قبل وايضا المتغير الخاص بالايميل لا يساوي صفر عند حدوث اي خطا من هذه الاخطاء يظهر رسالة الخطأ الخاص به
ويكون كود عرض الخطا كالتالي

رمز PHP:

if(is_array($errors))
{ while (list($key,$value) = each($errors))
{

echo( $value."<br>" );
}


طبعا استخدمنا الدالة is_array لتاكد من وجود الخطا في المصفوفه

لحد كده مفهوم؟؟
طبعا لو مافيش اي اخطاء يبقى ماعدش فاضل الا اننا ندخل البيانات في الداتا بيز

طيب وهنا نيجي لشرح تاني وهو مثلا لو عاوز تعمل نظام تفعيل زي المنتديات من لوحه التحكم او نظام تفعيل عن طريق البريد او تعمل عضو مطرود او او
يبقى لازم تعمل جدول اعدادت وتحط فيه حقل وتخلي اسم الحقل مثلا site_activation
ونحط اي قيم
يعني مثلا
الرقم 1 التفعيل من قبل لاالادارة
الرقم 2 تفعيل تلقائي
الرقم 3 تفعيل عن طريق البريد
الرقم 4 مطرود
او زي ما تحب
نرجع بقى لادخال البيانات في الداتا بيز بس قبل كده لابد نعمل استعلام عن حقل ال site_activation ونشوف حالته مظبوطه على ايه
ونعمل استعلامات كالتالي


رمز PHP:

if($siteactivation == (1)){
كود ادخال بيانات المستخدم في القاعدة
ورسالة بعد الادخال تعرف المستخدم انه بانتظار التفعيل من قبل الادارة
}elseif($siteactivation == (2)){
كود الادخال مع رسالة تعرفه انه تم تفعيله
}elseif($siteactivation == (3)){
كود لارسالة رابط التفعيل عن طريق البريد
واذا تم الارسال يتم طباعه رسالة تعرفه انه تم الارسال
}


وبضه ما ننساش نقفل الحالة
نحط
break;
في النهاية

طبعا نظام التفعيل عن طريق البريد محتاج شرح تاني ان شاء الله اسويه في موضوع تاني

اتمنى من الله ان اكون وفقت في الشرح وان يستفيد الكل من شرحي

Bakenam
04-02-2009, 02:23 PM
السلام عليكم و رحمة الله

اسم الدرس : شرح استخراج المعلومات من قاعدة البيانات

ارجوا حفض الحقوق

بسم الله

درسنا اليوم عن استخراج البيانات من قاعدة البيانات

اول شئ قم بتكوين قاعدة البيانات و جدول باسم admin يتكون من عمودين username و password

الان نكتب الكود


رمز PHP:

<?
/* هنا نتصل بقاعدة البيانات */
$con = mysql_connect("localhost","اسم مستخدم قاعدة البيانات","باسوورد قاعدة البيانات";
$db = mysql_select_db("اسم قاعدة البيانات",$con);
/* هنا نختار الجدول */
$query = "select * from admin";
$result = mysql_query($query);
/* هنا نستدعي كافة محتويات الاعمدة*/
while($name = mysql_fetch_array($result)){
echo $name['username'];
echo "<br>";
echo $name['password'];
}
?>

Bakenam
04-02-2009, 02:25 PM
بسم الله الرحمن الرحيم
الحمد لله رب العالمين
والصلاة السلام على أشرف المرسلين
سيدنا محمد عليه أفضل الصلوات والتسليم

السلام عليكم ورحمة الله وبركاته
تحية طيبة لرواد القسم الجميل
بداية أعتذر عن التأخير في طرح الدروس وإن شاء الله بحاول ما أنقطع مرة أخرى

كنا قد تابعنا سلسلة دروس ويفضل الرجوع أليها قبل الخوض في هذا الدرس


http://traidnt.net/vb/AGT04/misc/quotes/quot-top-left.gifاقتباسhttp://traidnt.net/vb/AGT04/misc/quotes/quot-top-right.gifhttp://traidnt.net/vb/AGT04/misc/quotes/quot-top-right-10.gif

[الدرس الأول] مقدمة في لغة Php والتعرف على مميزاتها (http://www.traidnt.net/vb/showthread.php?t=54666)
[الدرس الثاني] تركيب برنامج Iis (http://www.traidnt.net/vb/showthread.php?t=56278)

[الدرس الثالث] شرح كيفية تركيب مترجم لغة Php (http://www.traidnt.net/vb/showthread.php?t=57409)
[الدرس الرابع] كيف تضيف قاعدة البيانات MySQL لسيرفر IIS (http://www.traidnt.net/vb/showthread.php?t=58657)
[الدرس الخامس] تركيب ملف Php وتنفيذ صفحات Php (http://www.traidnt.net/vb/showthread.php?t=60036)

[الدرس السادس] شرح بروتوكولات تبادل المعلومات بين السيرفر والمتصفح (http://www.traidnt.net/vb/showthread.php?t=60931)

[الدرس السابع] التعليقات والمتغيرات (http://www.traidnt.net/vb/showthread.php?t=62832)
[الدرس الثامن] البيانات الحرفية والبيانات العددية (http://www.traidnt.net/vb/showthread.php?t=68694)
[الدرس التاسع] شرح متغيرات النظام والثوابت وبعض الدوال (http://www.traidnt.net/vb/showthread.php?t=70285)
http://traidnt.net/vb/AGT04/misc/quotes/quot-bot-left.gifhttp://traidnt.net/vb/AGT04/misc/quotes/quot-bot-right.gif



وإن شاء الله سنبدأ اليوم في شرح إستخدام النماذج وبعض الخواص والوسائل





نبدأ بسم الله ::





إستخدام النماذج ::

تستخدم النماذج لإستقبال قيم أو مدخلات من المستخدم أو لعرض قيم مخزنة بقاعدة بيانات كنتيجة لعملية بحث مثلاً أو أكثر ،، مثال على النماذج هو الصفحة التي تجدها دائماً عند بدء الإشتراك في خدمة يقدمها موقع معين مثل مواقع البريد الألكتروني فيطلب منك الموقع تسجيل إسمك وسنك وغيره من البيانات ويقوم بتخزين هذه البيانات تلقائياً .

ويوجد دائماً في نهاية الصفحة التي تقوم بالإدخال فيها مفتاح Submit والغرض منه هو إرسال هذه البيانات لمعالجتها .

وتتم عملية الإدخال عن طريق أدوات قياسية مثل صناديق الإدخال (**** Box) أو مفاتيخ الإختيارات (Radio buttons and check box) ، وفيما يلي شكل لكل منهم ::


http://www.eltayer.net/vb/uploaded/27.gif

والفرق بين Radio و Check هو أن الأول يمكن تنفيذ أختيار واحد فقط والثاني يعطي للمستخدم عدة إختيارات ، وسنتعرف فيما بعد كيف يمكن إدراج هذه الأدوات .

هذه الأدوات يجب أن توضع داخل النموذج ويتم الإعلان عن النموذج بالعبارتين


رمز PHP:

<Form>

</Form>



من أهم خصائص النموذج العبارتين Action و Method وفيما يلي شرح لكل منهم ::

الخاصية Action ::

تكتب على الصيغة التالية ::


رمز PHP:

<Form Action="Result_page.php">
</Form>



فتدل الخاصية على الصفحة التي يجب على برنامج السيرفر أن يقوم بالإنتقال أليها عندما يقوم المستخدم بالإنتهاء من عملية الإدخال ويضغط على مفتاح submit ويوجد بهذه الصفحة (Result_page.php) الكود اللازم لمعالجة البيانات وإظهار رسالة ترحيب (مثلاً) للمستخدم عند الإشتراك .


الخاصية Method ::

وقد تكون أحدى الحالتين ::


رمز PHP:

<Form Action="Result_page.php" Method="post">
<Form Action="Result_page.php" Method="Get">



وهما طريقتين مختلفتين لإرسال البيانات للصفحة (Result_page.php) .

وفيما يلي الفرق بين الطريقتين ::

الوسيلة Get ::

تقوم بإرسال البيانات التي قام المستخدم بإدخالها عن طريق سطر العنوان بحيث يظهر سطر العنوان مضافاً أليه المعامل ؟ ثم أسماء المتغيرات وقيمها .


http://localhost/order_page.php?name=value&age=20

وتأتي المسميات name و age من الخاصية name لأدوات الإدخال ، فعند وضع **** Box يمكن أعطاؤه الإسم age عن طريق الخاصية name ، بحيث تستطيع معرفة أن هذا الصندوق خاص بإدخال عمر المستخدم .

ولا يمكن كتابة أسماء أدوات الإدخال إلا باللغة الإنجليزية ، ولكن المدخلات تكون باللغة المراد إستخدامها .

والسطر السابق الذي يظهر في عنوان الصفحة يسمى سطر الإستعلام أو query string ، ويمكن تشفيره بحيث لا يظهر للمستخدم أو الهاكرز القيم المدخلة إلى الموقع إذا كانت البيانات سرية مثل بطاقات الإئتمان .

ونلاحظ من هنا أو الطريقة Get أنها لا تناسب إرسال بيانات حجمها كبير إلى صفحة أخرى ، لذلك يمكن إستخدام الطريقة الثانية كما سنرى .

الوسيلة Post ::

وهي نفس طريقة Get ، ولكن تستطيع إرسال بيانات بكمية أكبر ويتم هذا عن طريق إرسال البيانات من خلال إتصال مستقل ، وتتميز هذه الطريقة بأنها أكثر أمناً ، ولكن على نقيض الطريقة Get فإنها أقل سرعة .

لذلك يتم إستخدام الوسيلة Get عادة في محركات البحث ، وبذلك يستطيع الإحتفاظ بنتيجة البحث المتمثل في العنوان URL وفتحه مرة أخرى دون إعادة البحث .


درس اليوم خفيف وسهل وتعرفنا منه على أساسيات إستخدام النماذج

وإن شاء الله في الدرس القادم سيكون الدرس دسم بعض الشئ فقد وضعت هنا الأساسيات وفي الدرس القادم إن شاء الله بعض التطبيقات العملية إن شاء الله

أسأل الله أن لا أكون أطلت عليكم الحديث وإن يكون الدرس سهل ومفهوم إن شاء الله

هذا وأسأل الله لي ولكم التوفيق

Bakenam
04-02-2009, 02:27 PM
السلام عليكم

أخواني الكرام

أتمنى من من يعرف إفادتنا في برمجة صفحة لإستدعاء الأميلات في بريدك وارسال رسالة لها


كالموجود بالرابط أدناه

http://www.resalahcenter.com/***site...=1&option=auto (http://www.resalahcenter.com/***sites/tell/?eurl=file%3A%2F%2F%2FC%3A%2F********s%2520and%252 0Settings%2FPC%252008%2FLocal%2520Settings%2FTempo rary%2520Internet%2520Files%2FFrontPageTempDir%2Fp vw3.htm&title=&btn=1&option=auto)

Bakenam
04-02-2009, 02:30 PM
السلام عليكم

طريقة عمل سكربت أرسال رسالة الى البريد الالكترونى
عن طريق الفرنت بيج

يتكون السكربت من ملفين mail.html و mail.php
mail.html > سوف نضع به نموذج صفحة ارسال الرسالة وسوف اشرح الان طريقة عمل النموذج
قم بفتح الفرونت بيج

و اعمل صفحة جديدة

تم نأتى الى قائمة إدراج و نختار نموذج تم نختار نموذج أيضآ مثل مافى الصورة

http://www.sakr1.com/doros/send_front/001.jpg


تم سوف يطهر لنا جدول مخفى وبه أثنان أزرار مثل مافى الصورة

http://www.sakr1.com/doros/send_front/002.jpg

زر إرسال > وهو الدى سوف نحتاجه فى ارسال البيانات الى الملف mail.php
زر إعادة تعيين , وهو غير مهم و يستخدم فى أفراغ الحقول

والان نلاحظ عدم وجود حقول التى تتطلب لتعبئة البيانات لارسال الرسالة
حتى نقوم بنموذج ارسال الرسائل نحتاج الى 4 حقول
الحقل الاول > يستخدم لوضع بريد الالكترونى للمرسل له
الحقل التانى > يستخدم لوضع اسم الرسالة
الحقل الثالث > يستخدم لوضع بريدك الالكترونى
الحقل الرابع > يستخدم لوضع الرسالة او موضوع الرسالة
والان نأتى الى كيف يتم الحصول على 4 حقول
نأتى الى قائمة إدراج تم نموذج تم نختار مربع النص

http://www.sakr1.com/doros/send_front/003.jpg

تم نكرر الخطوة مرتين مرات حتى نحصل على 3 حقول

http://www.sakr1.com/doros/send_front/004.jpg

و الان نأتى الى عمل الحقل الرابع الذى سوف نضع به موضوع الرسالة او محتوى الرسالة
من قائمة إدارج نختار نموذج تم ناحية النص

http://www.sakr1.com/doros/send_front/005.jpg

والان نأتى الى تنسيق الحقول و النموذج

http://www.sakr1.com/doros/send_front/006.jpg


و الان نأتى الى تسمية الحقول من ناحية المتغيرات حتى يتعرف عليها الملف mail.php
قم بضغظ على الحقل مرتين (دبل كليك)
سوف يظهر لنا خصائص الحقل

http://www.sakr1.com/doros/send_front/007.jpg

نقوم بتغير اسم الحقل الاول الى to مثل مافى الصورة

http://www.sakr1.com/doros/send_front/008.jpg
الحقل التانى بنفس الطريقة نضغظ دبل كليك على الحقل ونغير الاسم الى you

http://www.sakr1.com/doros/send_front/010.jpg

و الحقل الثالث نغير الاسم الى sub
و الحقل الرابع نغير الاسم الى msg

http://www.sakr1.com/doros/send_front/011.jpg

والان نأتى الى الخطوة الاخيرة فى عمل النموذج وهى الاتصال بملف mail.php
من الفرونت بيج نقوم بدخول الى النموذح بلغة html مثل مافى الصورة

http://www.sakr1.com/doros/send_front/012.jpg

و الان نأتى الى هذه الجملة فى لغة html

<!--***bot bot="SaveResults" u-file="C:\My ********s\My ***s\_private\form_results.csv" s-format="****/CSV" s-label-fields="TRUE" --><p align="center">
نقوم بإزالتها

مثل مافى الصورة

http://www.sakr1.com/doros/send_front/013.jpg



و الان نأتى الى الجملة

<form method="POST" action="--***BOT-SELF--">
نقوم بتغير "--***BOT-SELF-- الى mail.php
مثل مافى الصورة



http://www.sakr1.com/doros/send_front/015.jpg

قم بتغييرها الى mail.php

http://www.sakr1.com/doros/send_front/014.jpg



و الان نقوم بتخزين النموذج و تسميتها mail.htm
و الان نقوم بعمل ملف mail.php
قم بإدراج ملف txt بواسطة برنامج نوت باد
وضع به هذه الاكواد ونلاحظ الدالة mail بلغة php




رمز PHP:

<html dir ="rtl">
<head><title>إرسال رسالة الى بريد الالكترونى</title></head>
</html>
<?
mail("$to", "$sub", "$msg","From:$you");
echo "<BR>";
echo "<BR>";
echo "<center>تم بحمد الله إرسال الرسالة الى $to</center>";
?>

و تم قم بعمل حفظ بأسم و تسمية الملف يكون طبعآ mail.php
الملف mail.htm و mail.php هنا



قم بإرسال الملفين لموقعك واستدعى الملف mail.html

وبالتوفيق
قمت بأرفاق الملف لتعم الفائدة ويمكنكم ارسالة لموقعك وتشغيلة

Bakenam
04-02-2009, 02:33 PM
بسم الله الرحمن الرحيم
حبيت انقل لكم هذه الدوره الهامه والتى هنتعرف
على اجمل لغه وهى نادره او محديش عنده فكره عنها
تعالى نشوف ؟؟؟؟
http://traidnt.net/vb/images/smilies/icon30.gifhttp://traidnt.net/vb/images/smilies/cupidarrow.gifhttp://traidnt.net/vb/images/smilies/tears.gifhttp://traidnt.net/vb/images/smilies/smoke1.gif
دورة في لغة البايثون نتعرف فيها على هذه اللغة الرائعة ذات الإمكانيات العالية التي جمعت بين القوة و السهولة و لقد عرفنا سابقا المشاريع الضخمة التي أنجزت بهذه اللغة وتعتبر لغة البايثون أحسن إختيار للبدء بالبرمجة حسب رأي أغلب خبراء البرمجة لأنها لغة كاملة تحتوي على جميع مبادئ البرمجة لأنها كانت سابقا عبارة عن نواة نظام تشغيل كما أن البرمجة بهذه اللغة سيزيد من إنتاجية المبرمج لأنها تتيح له الكثير من الدوال التي تسهل عليه إنشاء المشاريع الكبيرة كما أن المبرمج بلغة السي يتوجب عليه تعلم هذه اللغة لإستعمالها مع لغة السي حفظا للوقت .
لغة البايثون لغة محمولة تستطيع البرمجة بواسطتها على كل الأنظمة و لكنها تعتبر مركز قوة لمستعمل نظام لينيكس خصوصا لأمنها متوافقة مع هذا النظام مما يسمح للمبرمج بالتحكم في موارد النظام بسهولة .

متطلبات الدورة

سنحتاج أولا إلى المفسر الرسمي للغة البايثون و تستطيع تحميله من الموقع الرسمي للغة البايثون

رابط التحميل
http://www.python.org/ftp/python/2.5.1/python-2.5.1.msi (http://www.python.org/ftp/python/2.5.1/python-2.5.1.msi)

صورة المفسر

http://www.mediafire.com/imgbnc.php/fff88cb8ba6d9edd91bda3ec0e1f6c385g.jpg

ثم يلزمنا بعد ذلك تحميل المفسر Py******erer الذي سنعمل به خلال الأقسام الأولى من الدورة

رابط التحميل

http://www.mediafire.com/?e5ioniytoxs (http://www.mediafire.com/?e5ioniytoxs)

صورة المفسر

http://www.mediafire.com/imgbnc.php/807f70ddfd20d3003ab78e1ce10417884g.jpg


قم بتثبيت المفسر الرسمي الذي حملته أولا سيطلب منك إعادة تشغيل الجهاز بعد التثبيت عند تشغيل الجهاز ثانيتا قم بتثبيت بيسكريبتر
إذا كنت تستعمل لينيكس لا يلزمك تحميل أي برنامج لأن لينيكس قد أعطاك العشرات من الإمكانيات للبرمجة بهذه اللغة تستطيع إستعمال سطر الأوامر مباشرة بكتابة الأمر python أو تستطيع إستعمال بيئة Kdevelop و يوجد بيئة أخرى مخصصة للغة البايثون إسمها Eric


أول خطوة مع البايثون

أدات النسخ print

طريقة إستعمال المفسر سهلة جدا و هذا راجع لسهولة اللغة بحيث لا تفرض علينا تعريفات قبل الإستعمال . و لطباعة الكتابة على الشاشة نستعمل الأمر print ثم نتبعه بالرسالة التي نريد طباعتها و لتشغيل البرنامج (run) نقوم بالضغط على F9

http://www.mediafire.com/imgbnc.php/a6f4b880b2f573a5318d1068c78d56f94g.jpg

ويظهر النتاتج الكود أسفل البرنامج

http://www.mediafire.com/imgbnc.php/c8c817f8570b414a1abff31e82aae9524g.jpg

و نستطيع أيضا إسناد جمل لـ المتغيرات و طباعتها على الشاشة كما هو موضح في الثال التالي

http://www.mediafire.com/imgbnc.php/634498853ea88c4fad5cffc83506d7314g.jpg


http://www.mediafire.com/imgbnc.php/6660faee04ffd54d26a937761ee554804g.jpg

http://www.mediafire.com/imgbnc.php/f771e9e1104fb30a730b25c1e1a0f4544g.jpg


- المتغيرات

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


http://www.mediafire.com/imgbnc.php/ffb56627223507e1d477036fa71edcb14g.jpg


كما نلاحظ في المثال x تعتبر المتغير أو إسم المتغير و 10 أو 22 تعتبر قيمة المتغير و قلنا أن إسمه متغير لأننا نستطيع تغير قيمته متى نشاء
و لكي نستطيع حجز قيم ومعلومات في ذاكرة الجهاز لابد لنا من إسنادها إلى متغيرات لكي يستطيع الجهاز حجزها فالجهاز يتعامل مع المعلومات أو القيم حسب أسمائها فمثلا يحجز الجهاز القيمة 10 ويطلق علها إسم x فإذا استدعينا x بالأمر print يقوم الجهاز بالبحث عن x في الذاكرة ثم يقوم بتحميل قيمتها .

تترك الغة في إختيار الأسماء ل المتغيرات و بكل الأحرف (A>Z) و الأعداد(0<9) لكن يشترط أن يكون أول الإسم عبارة عن حرف لا عدد .
و لاتستطيع إستخدام الأحرف الخاصة لتسمية المتغيرات مثل # @ /$ و أيضا لا يمكنك تسمية المتغيرات بالاسماء المحجوزة من الطرف اللغة و المبينة في القائمة التالية

رمز PHP:

and assert break class continue def
del elif else except exec finally
for from global if import in
is lambda not or pass print
raise return try while yield



ما عدى هذا يمكنك إختيار الإسم الذي تشاء و لكي تسهل على نفسك الأمر حاول دائما إختيار إسم يكون معبر عن عمل المتغير مثلا إذا احتجت لمتغير تحجز فيه الاسماء سمه name حتى تستطيع معرفته بسهولة لأنك في المستقبل إن شاء الله ستستعمل الكثير من المتغيرات في مشروعك فإذا كان الإسم مناسب لن تتعب كثيرا في البحث عن المتغير و يكون عملك منظما اكثر.
إسناد قيم لـ المتغيرات

كما قلنا سابقا يتكون المتغير من قسمين إسم وقيمة و إسناد قيمة لمتغير معين أمر سهل جدا بحيث نقوم بكتابة إسم المتغير ثم وضع علامة = ثم قيمة المتغير.

http://www.mediafire.com/imgbnc.php/df3c8e411483544aadb7302dff6de4fd4g.jpg

من اروع مميزات لغة البايثون أنها تقوم بتعريف المتغير تلقائيا ففي لغة السي مثلا يجب أن نعرف نوع المتغير قبل أن نسند له قيمة

لغة البايثون تكتشف نوع المتغير تلقائيا ليس هذا فقط بل إنها تقوم بتسير موارد الذاكرة تلقائيا و هذه الميزة الأخيرة لا يعرف قيمتها إلا من جرب البرمجة بلغة السي و السي ++ .
في الأمثلة الثلاثة الذكورة في الأعلى يقوم الحهاز بعمل أربعة أمور
-إنشاء المتغير ثم حفظه و حفظ المعلومات الخاصة به( الإسم القيمة).
-يحدد نوعه.
-يحوله إلى صيغته الخاص الصيغةأو المستعملة من طرف الجهاز المشابهة ل الصيغة التالية a3 b9 fx
-إنشاء رابط (مؤشر) بين الإسم و مكان الحفظ و هذه ميزة أخرى رائعة بحيث أن اللغة تقوم يتسير المؤشرات تلقائيا .

نستطيع إعطاء قيمة لأكثر من متغير في سطر واحد أو حتى إعطاء قيم مختلفة لمتغيرات متعددة كما يوضح المثال التالي
http://www.mediafire.com/imgbnc.php/30408222d0aa1ea46ca74853d4ddefa44g.jpg

وهذا مثال يقوم بحساب المساحة
http://www.mediafire.com/imgbnc.php/6fbe2f8f91403c9f37579d66d12aea534g.jpg

كما نستطيع التعامل مع المتغيرات بكل المعاملات الرياضية */ + ...

يوجد معامل مهم هو معامل باقي القسمة %
كما نستطيع التعامل مع المتغيرات بكل المعاملات الرياضية */ + ...

يوجد معامل مهم هو معامل باقي القسمة %

http://www.mediafire.com/imgbnc.php/5ede4128a3f35566f454bf6c27dfe9134g.jpg

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

Bakenam
04-02-2009, 02:34 PM
شرح عمل الاشتراك\تسجيل الدخول بلغة الـphp
الدرس ده يعلمك ازاى تعمل اسكربت التسجيل وتسجيل الدخول
وكمان مرفق مع الشرح الملفات الناتجة فى اخر علية البرمجة
الدرس من هنا (http://www.jooria.com/forums/viewtopic.php?f=2&t=158)
مع تحياتى

Bakenam
04-02-2009, 02:37 PM
نستكمل سويا دروس دورة احتراف php5 التى ابتدأناها سويا فى معهدنا الغالى ترايدنت .

والآن سنقدم الدرس الخامس بعنوان المصفوفات وتتمثل محاور الحديث على :



مقدمه عن المصفوفات .

التعامل مع المصفوفات ومفتاح القيمه .

أنواع المصفوفات .

المصفوفات البسيطه .

المصفوفات المعقده .

المصفوفات الخاصه .

دوال التعامل مع المصفوفات .

الشرح


1-مقدمه عن المصفوفات :
تحدثنا فيما سبق عن المتغيرات (http://traidnt.net/vb/showthread.php?t=833508) وأوضحنا أن المصفوفات هى نوع متميز من المتغيرات حيث بامكان المصفوفات أن تحمل أكثر من قيمه بنفس الاسم .
فبامكان المصفوفات أن تحمل كم كبير من القيم بعكس المتغيرات العاديه فالمتغيرات العاديه بمختلف انواعها تحمل قيمه واحده فقط أما المصفوفات فهمى تحمل أكثر من قيمه .

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

فى الحقيقه عند بداياتى فى البرمجه وتعلمى للبرمجه لم اقدر قيمة المصفوفات ولكن عندما دخلت العالم بتعمق اكتشفت انها من اهم أجزاء كودك البرمجى ومن أسس بناء كود محترم http://traidnt.net/vb/images/smilies/bigsmile.gif
لذلك نصيحة منى اهتم بها جيدا .....

2-التعامل مع المصفوفات :
عندما شرحنا الدرس الثانى الخاص بالتعامل مع المتغيرات أوضحنا انك عندنا تريد أن تعرف متغير جديد وتسند له القيمه سيكون كما يلى .

رمز PHP:

$ahmed = "Mr.Ajax";


فى المصفوفات قد يكون الأمر مختلف الى حد ما
فعندما نريد أن نعرف مصفوفه فاننا يجب أن نخبر المترجم اننا سنعرف مصفوفه وهذا يتم باستخدام الداله array()
فمثلا اذا اردنا ان نعرف مصفوفه فسنقوم بما يلى :

رمز PHP:

$ahmed = array("enginner","programmer","developer");


بالمثال السابق يجب توضيح ما يلى :
ahmed : اسم المصفوفه
array : وجب استخدامها لكى نخبر المترجم ان ما سيتعامل معه هو عباره عن مصفوفه وليس متغير عادى .
("enginner","programmer","developer") : هى قيم المصفوفه ويتم الفصل بين كل قيمه والآخرى بفاصله .

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

اذن فاستدعاء قيمه من المتغير ستتم عن طريق ما يسمى بمفتاح القيمه فيجب تعريف ما هو مفتاح القيمه أولا ثم العوده فيما بعد ذلك الى الاستدعاء .
مفتاح القيمه هو عباره عن قيمه تسند تلقائيا الى المتغير الموجود بالمصفوفه اذا لم يتم اسنادها اليه .
فمثلا فى المثال السابق لم يتم تعريف أو اسناد مفتاح القيمه الى اى من قيم المصفوفه .
فتلقائيا سيعتبر المترجم أن القيمه الاولى قيمة مفتاحها هو صفر والقيمه الثانيه قيمة مفتاحها واحد وهكذا .....

رمز PHP:

1=> engineer
2=> programmer
3=> developer


أما اذا أردنا أن نقوم بتعريف مفتاح القيمه بصوره خاصه بنا فاننا سنقوم بمايلى :

رمز PHP:

$ahmed = array("first" => "enginner","second" => "programmer","third" => "developer");


وفى هذا المثال قمنا نحن يدويا باسناد قيمة مفتاح القيمه الخاص بقيمة عنصر المصفوفه .
ويكون مفتاح العنصر الأول هو first ومفتاح العنصر الثانى هو second والعنصر الثالث هو third

رمز PHP:

first =>engineer
second=>programmer
third=>developer


والآن نعود الى استدعاء عنصر من المصفوفه .
فى هذا المثال

رمز PHP:

$ahmed = array("enginner","programmer","developer");


اذا أردنا أن نستدعى العنصر الأول فكما أشرنا سابقا أن مفتاحه هو صفر فسنقوم بكتابة ما يلى :

رمز PHP:

echo $ahmed[0];


واذا اردنا استدعاء العنصر الثانى من المصفوفه

رمز PHP:

echo $ahmed[1];


وهكذا مع باقى عناصر المصفوفه ........

أما بالنسبه لهذا المثال

رمز PHP:

$ahmed = array("first" => "enginner","second" => "programmer","third" => "developer");


فقد أشرنا سابقا أننا قمنا بتعريف مفتاح القيمه أو مفتاح الوصول
فاذا أردنا استدعاء العنصر الأول من المصفوفه :

رمز PHP:

echo $ahmed[first];


أما اذا أردنا استدعاء العنصر الثانى من المصفوفه

رمز PHP:

echo $ahmed[second];


وهكذا مع باقى عناص المصفوفه ......

3- أنواع المصفوفات :
عند حديثنا عن أنواع المصفوفات فاننا يمكن أن نصنفهم كما يلى :


مصفوفات بسيطه : ذات بعد واحد .
مصفوفات معقده : ذات الأبعاد المتباعده .
مصفوفات خاصه : تستعمل فى نقل البيانات بين الصفحات والجلسات .

4- المصفوفات البسيطه :
المصفوفات البسيطه هى التى أشرنا اليها فى المثالين السابقين وهى تتكون من بعد واحد فقط .
وتم الاشاره اليها بالأمثله فى الفقرات السابقه .

5- المصفوفات المعقده :
المصفوفات المعقده أو كما يطلق عليها المتعددة الأبعاد أو التى ذات أكثر من بعد فهى تتشعب لجلب صفات وعناصر لأكثر من عنصر حتى تصبع معقده جدا .

فمثلا فى هذا المثال سيكون فهمه سهل جدا اذا كنت قد اتقنت ما تم ذكره فى الفقرات السابقه

رمز PHP:

$ahmed = array(
"first" => array(
"A"=>"Ahmed",
"b"=>"Selim",
"c"=>"refaat"),
"second" => array(
"A"=>"Mohammed",
"b"=>"selim",
"c"=>"refaat"),
);


أما عن طريقة الاستعلام فستكون بطريقة متسلسه مثال على استدعاء العنصر الاول من المصفوفه الثانيه من المصفوفه الاولى :

رمز PHP:

echo $ahmed["second"]["A"];


6- المصفوفات الخاصه :
ومنها HTTP_GET_VARS
وكذلك HTTP_POST_VARS
هى ليست متغيرات ولكنها مصفوفات تختزن بها البيانات التى يتم نقلها من صفحة لأخرى ويتم تعريفها تلقائيا عندما تصل المتغيرات الى صفحه أخرى بواسطة الوسيله get او post
وسيتم الحديث باستفاضه عن تلك المتغيرات والتعامل معها عند التعامل مع النماذج فى الدروس القادمه .

7- دوال التعامل مع المصفوفات :
هناك الكثير والكتير من الدوال التى تختص بالتعامل مع المصفوفات سنتحدث عن الأكثر استخداما منها ويمكنك الاطلاع على قائمة الدوال التعامل مع المصفوفات على الرابط التالى :
http://www.php.net/manual/en/ref.array.php (http://www.php.net/manual/en/ref.array.php)
ومن أهم الدوال :

array()
تقوم بحجز مصفوفه جديده وتحدثنا عنها فى الفقرات السابقه

list .... each
تختص بصنع مصفوفه مفهرسه بجداول html
ومثال على تلك الداله :

رمز PHP:

<?php
$ahmed = array("first" => "enginner","second" => "programmer","third" => "developer");

while (list($key, $val) = each($ahmed)) {
echo "$key = $val<br>";
}
?>



print_r()
تعرض المصفوفه فى شكل هرمى للتعرف بسهوله على عناصر كل مصفوفه
ومثال على تلك الداله :

رمز PHP:

<?php
$ahmed = array("first" => "enginner","second" => "programmer","third" => "developer");

echo "<pre>";
print_r ($ahmed);
echo "</pre>";
?>

array_merge()
تقوم بدمج مصفوفتان فى مصفوفه جديده واحده
ومثال على تلك الداله

رمز PHP:

<?php
$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r($result);
?>

array_push()
تقوم باضافة قيمه أو اكثر الى مهاية المصفوفه
ومثال على تلك الداله

رمز PHP:

<?php
$stack = array("orange", "banana");
array_push($stack, "apple", "raspberry");
print_r($stack);
?>

array_unique()
تقوم بارجاع عناصر المصفوفه بدون تكرار
ومثال على تلك الداله

رمز PHP:

<?php
$input = array("a" => "green", "red", "b" => "green", "blue", "red");
$result = array_unique($input);
print_r($result);
?>

فى النهايه يرجى النظر الى مرجع دوال التعامل مع المصفوفات على الرابط التالى
http://www.php.net/manual/en/ref.array.php (http://www.php.net/manual/en/ref.array.php)


الى هنا ينتهى الدرس الخامس
الى اللقاء باذن الله فى الدرس السادس
ملحوظه : استعنت فى هذا الدرس ببعض الأمثله من موقع php.net ووجب التنويه

دروس سابقه :




[دورة احتراف php5] [الدرس الأول] مقدمه ومتطلبات : http://traidnt.net/vb/showthread.php?t=826015 (http://traidnt.net/vb/showthread.php?t=826015)

[دورة احتراف php5] [الدرس الثانى] مفاهيم أساسيه والمتغيرات والثوابت وكتابة أول برنامج http://traidnt.net/vb/showthread.php?t=833508 (http://traidnt.net/vb/showthread.php?t=833508)

[دورة احتراف php5] [الدرس الثالث] اتخاذ القرارات وحلقات التكرار http://traidnt.net/vb/showthread.php?t=850038 (http://traidnt.net/vb/showthread.php?t=850038)

[دورة احتراف php5] [الدرس الرابع] الدوال Functions http://traidnt.net/vb/showthread.php?t=864742 (http://traidnt.net/vb/showthread.php?t=864742)


أرجو أن أكون قد قدمت لكم الدرس بشكل واضح ومفهوم

Bakenam
04-02-2009, 02:39 PM
بسم الله الرحمن الرحيم

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

المشكلة : عدم القدره علي التعامل مع المتغيرات التي يتم إرسالها عن طريق FORM فيه select multiple
يعني لو الشخص إختار اكثر من إختيار فالي راح تستطيع التعامل معه اول إختيار فقط إختاره فقط :(

طيب والعمل ؟؟

فكرتي تعتمد علي جعل المتغيرات في قائمة الـSELECT عباره عن ARRAY وذلك بإستبدال الكود العادي في الـhtml بالكود التالي :

رمز Code:
<select name='servertype[]' multiple>
طبعا server type ده إسم المتغير الي راح نستلمه في الصفحة الي نرسل لها بإستخدام

رمز PHP:

$_POST['servertype']


لو حاولنا الان نقوم بكتابة المتغير والذي إسمه

رمز PHP:

$_POST['servertype']


في الصفحة الثانيه
سنلاحظ خروجه كالتالي :
Array

طيب كيف نستطيع التعامل مع محتويات هذه المصفوفه ؟؟
الأول خلينا نقوم بفك محتويات هذه المصفوفه ونستعرضها ويمكننا إستخدام دالة implode لذلك فمثلا لو نريد نحصل علي محتويات المصفوفه بحيث يفصل بين كل عنصر والأخر بالرمز :

نقوم بإستخدام الكود التالي :

رمز PHP:

$test = implode(":", $servertype);


دعونا نجرب عرض محتوي المتغير $test

سنلاحظ الناتج كالتالي :
element1,element2,element3,element4

علي اساس ان الـelement هو الإختيارات المتاحه في الـform select

طيب الان نيجي نقسم هالمتغير إلي عدة أجزاء بحيث يحمل كل جزء عنصر معين بإستخدام الدالة split وبطعا التقسيم راح يكون علي اساس الرمز :
الداله split تقوم بإرجاع مصفوفه دائما وابدا ^_^
بحيث يمكنك إستلامها في مصفوفه والتحكم بكل عنصر لحاله عن طريق كود مشابه للكود التالي :

رمز PHP:

$array = split(':',$test);


الان المتغير $array هو مصفوفه بها الإختيارات التي تم إختيارها باقي وضعها في متغيرات ليتم إستخدامها يمكننا إستخدام الكود التالي لذلك :

رمز PHP:

for ($i = 0 ; $i<5 ; $i++ )
{
switch ($array[$i])
{
case 'tickets':
$tickets = $array[$i];
break;
case 'mobile':
$mobile = $array[$i];
break;
case 'msn':
$msn = $array[$i];
break;
case 'office':
$office = $array[$i];
break;
case 'mail':
$mail = $array[$i];;
break;
}
}

أتمني اكون قدرت افيدكم ويكون الكود سهل ^_^ والشرح اسهل وراح احط لكم مثال أستخدمته انا في سكريبت المستضيف الان

Bakenam
04-02-2009, 02:41 PM
صفحة الاخبار برمجة phpوmysql
his is a little dynamic news page where the registered users can add news to the index page via news.php
the index.php displays all the news in the data**** starting with the newest.
this ****** uses:
-index.php
-logout.php
-reg.php ( to create users but maybe it's better to just make 1 account for the owner and then remove it from the server)
-news.php
1 MySQL databse with 2 tables
هذا الاسكربت برمجة www.jooria.com
للتفاصيل والتحميل من هنا (http://www.jooria.com/forums/jooria-programming-f31/news-t187.html)

Bakenam
04-02-2009, 02:43 PM
السلام عليكم ورحمته الله وبركاته

(دوره اوراكل فيديو) تم الانتهاء من الدرس الثالث الخاص بي sqlبحمد الله

والدرس عباره عن جزئين

الجزي الاول

http://www.4shared.com/file/72190511/623be8ad/sql3.html (http://www.4shared.com/file/72190511/623be8ad/sql3.html)

الجزء الثاني

http://www.4shared.com/file/72199245/606681fe/sql33_where_1_.html (http://www.4shared.com/file/72199245/606681fe/sql33_where_1_.html)



ولا اريد منك غير الدعاء وعم الفائده

Bakenam
04-02-2009, 02:44 PM
السلام عليكم و رحمة الله
لن اطيل عليكم

رابط التحميل

http://www.mediafire.com/?mn0doeklizm (http://www.mediafire.com/?mn0doeklizm)
و جميع الحقوق محفوضة الشبح الدموي

Bakenam
04-02-2009, 02:48 PM
بسم الله الرحمن الرحيم

وددت ان اعرض عليكم كلاس من برمجتى بالكامل لحساب عدد زوار موقعك بالايبي و كذلك احصائيات زوار اليوم و الشهر و العام و فكرته بسيطة جدا و مفيدة للمبتدئين امثالى بلغة php و ساشرحها لكم بالتفصيل على الكود

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


رمز Code:

-----------------------------------------------------------------------------+
| Table | Create Table |
+---------+------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------
-----------------------------------------------------------------------------+
| counter | CREATE TABLE `counter` (
`id` int(11) NOT NULL auto_increment,
`ip` varchar(100) default NULL,
`day` int(11) default NULL,
`month` int(11) default NULL,
`year` year(4) default NULL,
`time` varchar(100) default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 |
+---------+------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------
-----------------------------------------------------------------------------+

ثانيا : الكلاس و شرحه موجود داخل اسطر الكلاس و يجب عليك ان تعدل بينات قاعدة البيانات الخاصة بك اولا قبل البدء فى تشغيله و سم الملف : count.class.php


رمز PHP:


<?php

/**
*
* كلاس متقدم لحساب الزوار و الزيارات و احصائياتهما
*
* يقوم هذا الكلاس بحساب عدد زوار موقعك من خلال الايبي الخاص بهم
* و كذلك يقوم باستخراج احصائيات كاملة عنهم .
*
* @المبرمج عبدالله محمد ضياء الدين
* @الاصدارة 0,01 بيتا
* @الترخيص مجانى
* @القسم عداد زوار
* @مثال example.php
* @أنشئ 17/5/2008 يوم السبت
**/


class counter
{

/**
* المعلومات الخاصة بالاتصال بقاعدة البيانات.
*
* @vars string
* @access private
**/
var $db_HOST = "localhost"; //ادخل المستضيف
var $db_USER = "root"; // ادخل اسم المستخدم لقاعدة البيانات
var $db_PASS = ""; // الرقم السري لقاعدة البيانات
var $db = "counter"; //اسم قاعدة البيانات
var $dbc;


/**
* جلب أيبي الزائر
*
* @vars string
* @access private
**/
var $ip;


/**
* جلب اليوم
*
* @vars string
* @access public
**/
var $day;


/**
* جلب السنة
*
* @vars string
* @access public
**/
var $year;


/**
* جلب الشهر
*
* @vars string
* @access public
**/
var $month;


/**
* جلب الوقت
*
* @vars string
* @access public
**/
var $time;


///////////////////////////////////////////////////////////////////
/**
* Constructor
* دالة البناء للكلاس
* @access public
**/
function counter()
{
$this->ip = getenv('REMOTE_ADDR');
$this->day = date('d');
$this->month = date('m');
$this->year = date('Y');
$this->time = time();
// استدعاء لدالة الاتصال بقاعدة البيانات
$this->connect_db();
}
///////////////////////////////////////////////////////////////////
/**
* دالة الاتصال بقاعدة البيانات
*
* @access private
**/
function connect_db()
{
$this->dbc = @mysql_connect($this->db_HOST, $this->db_USER, $this->db_PASS) or
die("open <b>count.class.php</b> and edit your data**** informaion ");
$m = @mysql_select_db($this->db, $this->dbc);
return ($dbc);
}
///////////////////////////////////////////////////////////////////
/**
* دالة للتحقق من ايبي الزائر و ادخال بياناته لقاعدة البيانات ليتم حسابها
*
* @access public
**/
function check_insert()
{
//البحث داخل قادة البيانات للتاكد من ان اىبي الزائر لم يدخل مسبقا طوال هذا اليوم
$query = "select * from counter;";
$result = mysql_query($query, $this->dbc);
$num = mysql_num_rows($result);
$check = "select * from counter where ip='$this->ip' and day ='$this->day' and month='$this->month' and year='$this->year';";
$result2 = mysql_query($check, $this->dbc);
$num2 = mysql_num_rows($result2);
//ان كانت بيانات الزائر موجودة من قبل اغلق الاتصال بالقاعدة
if ($num2 != 0)
{
mysql_close($this->dbc);
exit();
}
//ادخال بينات الزائر كاملة لقاعدة البيانات
$insert = "insert into counter (ip,day,month,year,time) values('$this->ip','$this->day','$this->month','$this->year','$this->time')";
mysql_query($insert, $this->dbc);
}
///////////////////////////////////////////////////////////////////
/**
* دالة لحساب اجمالة زوار موقعك عن طريق الايبي الخاص بكل شخص
*
* @access public
**/
function all_visit()
{
//اختيار الايبيهات المختلفة بقاعدة البيانات و حساب عددها
$select = "SELECT DISTINCT * FROM counter GROUP BY ip;";
$result = mysql_query($select, $this->dbc);
echo mysql_num_rows($result);
}
///////////////////////////////////////////////////////////////////
/**
* دالة لحساب اجمالى زوار موقعك هذا اليوم
*
* @access public
**/
function visit_today()
{
//اختيار الصفوف التى تطابق تاريخ اليوم
$select = "select * from counter where day ='$this->day' and month='$this->month' and year='$this->year'";
$result = mysql_query($select, $this->dbc);
echo mysql_num_rows($result);
}
///////////////////////////////////////////////////////////////////
/**
* دالة لحساب احمالى زوار موقعك هذا الشهر
*
* @access public
**/
function visit_month()
{
//اختيار الصفوف التى تطابق هذا الشهر و العام و مختلفة الايبي
$select = "select DISTINCT * from counter where month ='$this->month' and year='$this->year' GROUP BY ip;";
$result = mysql_query($select, $this->dbc);
echo mysql_num_rows($result);
}
///////////////////////////////////////////////////////////////////
/**
* دالة لحساب اجمالى زوار موقعك هذا العام
*
* @access public
**/
function visit_year()
{
//اختيار الصفوف التى تطابق العام و مختلفة الايبي
$select = "select DISTINCT * from counter where year ='$this->year' GROUP BY ip;";
$result = mysql_query($select, $this->dbc);
echo mysql_num_rows($result);
}
///////////////////////////////////////////////////////////////////
/**
* دالة لحساب اجمالى زياراتك للموقع
*
* @access public
**/
function visit_u()
{
//اختيار كافة الصفوف التى تحوى الايبي الخاص بالزائر
$select = "select * from counter where ip ='$this->ip'";
$result = mysql_query($select, $this->dbc);
echo mysql_num_rows($result);
}
///////////////////////////////////////////////////////////////////
/**
* دالة لاغلاق الاتصال بقاعدة البيانات بعد تنفيذ الاستعلامات بالاعلى
*
* @access public
**/
function close_db()
{
//اغلاق الاتصال بقاعدة البيانات
$this->dbc = mysql_close($this->dbc);
}
}


?>

ثالثا طريقة الاستعمال كما هو موضح بالكود التالى :


رمز PHP:

<?php
//استدعاء كلاس الخاص بعداد الزوار
require_once('count.class.php');
// ادخال الكلاس داخل المتغير count
$count = new counter ;
// حساب اى من عدد الزوار فى اى وقت
echo "<html dir='rtl' encoding='windows-1256'>";
echo "<b>اجمالى الزوار</b> : ";
$count->all_visit();
echo "<br /><b>زوار اليوم</b> : ";
$count->visit_today();
echo "<br /><b>عدد زوار الشهر</b> : ";
$count->visit_month();
echo "<br /><b>عدد زوار السنة</b> : ";
$count->visit_year();
echo "<br /><b>عدد زياراتك</b> : ";
$count->visit_u();
echo "</html>";
// عمل فحص للقاعدة و ادخال بيانات الزائر
// ******* يجب ان يكون استدعاء هذه الدالة بعد الاحصائيات و ليس قبلها
$count->check_insert();
// اغلاق الاتصال بقاعدة البيانات
$count->close_db();
?>

و الكلاس بالكامل مع المثال مرفق مع الموضوع
فى امان الرحمن
لللتحميل
http://www.swalif.net/softs/attachme...0&d=1211100858 (http://www.swalif.net/softs/attachme...0&d=1211100858)

Bakenam
04-02-2009, 02:51 PM
السلام عليكم ورحمه الله
http://www.up-00.com/bzfiles/EXw83672.jpg





الحمد الله رب العالمين



بعد الأنتهاء من
::الجزء الأول (الدرس الأول)فى دوره تعليم السى بلس بلس
رابط الموضوع
http://www.traidnt.net/vb/showthread.php?t=1035277 (http://www.traidnt.net/vb/showthread.php?t=1035277)
::الجزء الأول (الدرس الثانى)فى دوره تعليم السى بلس بلس
رابط الموضوع
http://www.traidnt.net/vb/showthread.php?t=1036448 (http://www.traidnt.net/vb/showthread.php?t=1036448)


::الجزء الثانى (الدرس الأول)دوره تعليم السى بلس بلس
رابط الموضوع
http://www.traidnt.net/vb/showthread...=1#post9687469 (http://www.traidnt.net/vb/showthread.php?p=9687469&posted=1#post9687469)


المشتركين فى الدوره ولتى هجواب على أسئلتهم وأسئله المشرفين فقط
http://www.traidnt.net/vb/showpost.p...7&postcount=24 (http://www.traidnt.net/vb/showpost.p...7&postcount=24)


:::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::


اليوم هنكمل الدرس السابق ولكن فى المتغيرات
التعامل مع المتغيرات:

يتم التعامل مع المتغيرات من خلال تخزين القيم فيها او استدعاء قيمها , بعمليات حسابية او منطقية :
1. العبارات الحسابية او الاصح ان تبقى بدون ترجمة Assignment Statements:

وهي عبارات مهمتها القيام بمعالجة ما من خلال معادلة :
مثلا :




رمز PHP:

x = z + y;




والاشارات هي الجمع '+' و الطرح '-' والضرب '*' و القسمة '/' و المود (باقي القسمة) '%' ....





رمز Code:
لا توجد اشارة للقوة "الأس" في العمليات الحسابية ....

رمز Code:
ولا يسمح باستخدام الاختصار في ازالة اشارة الضرب مثلا خطأ ان تكتب 2y لتكتب بالشكل الصحيح : 2*y مهم للغاية الانتباه لهذه النقطة



رمز PHP:

x = 5+2;
x = 2/5;
x = 4*8;
x = 9-6;
x = 5%2;







رمز Code:
ربما كل العمليات معروفة ولكن اشارة المود % غريبة , ببساطة لو قلنا 5%2 , اي نقصد هنا باقي ناتج القسمة الناتجة عن قسمة 5 على 2 اي سيكون الناتج 1 ...




ويمكننا الاستعاضة عن الارقام باسماء المتغيرات بحيث يكون هذا المتغير يخزن قيمة , قد لا تكون معروفة لدى المبرمج , اي يتم اخذها خلال البرنامج او من ناتج عملية حسابية اخرى , مثلا :


رمز PHP:

void main()
{
int area , x , y ;
cin>> x >> y;
area = x * y;
cout<< "Area = " << area ;
}




ويمكن استخدام نفس المتغير في الحسابات , مثلا لو اردنا ان نزيد 5 على قيمة x , فإننا نكتب


رمز PHP:

x = x + 5;




الأولويات الحسابية :

شيء مهم ان نعرف الاولويات وكيف نحددها في العمليات الحسابية , فهي ما اكبر سبب للأخطاء المنطقية , كيف ذلك ؟؟

ماذا سيكون قيمة x اي ناتج المعادلة التالية :



رمز PHP:

x = 4/2 + 9;




وماذا سيكون قيمة x اي ناتج المعادلة التالية :




رمز PHP:

x = 9 + 4/2;




في الحالة الاولى والثانية نفس الجواب ....


ربما تكون قصدت في المعادلة الثانية ان يتم جمع الرقمين 9 و 4 ثم القسمة على 2 , ذلك يتم بعد التعديل لتصبح بالشكل التالي :



رمز PHP:

x = (9 + 4)/2;




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

الاقواس () ثم * و / و % ثم + و -
يعني بصيغة اخرى الاولوية تكون لفك الاقواس بداية ثم الاولوية للعمليات الضرب * والقسمة / و المود % ويحملن نفس الاولوية ثم للاشارتين الجمع + و الطرح - ..

وفي حال تساوي الاولويات يتم جمع الارقام من اليسار الى اليمين ..

امثلة على تساوي الاولويات


رمز PHP:

x = 1 + 2 + 3;
x = 4/2*6;
x = 9%3 *1;




لاحظوا هنا
لو قلنا


رمز PHP:

x = 9%3 *1.5;




فالناتج سيكون 0 ,
بينما


رمز PHP:

x = 1.5 * 9%3;




سيكون الناتج 1 ...

اترك لكم التفسير .....

Bakenam
04-02-2009, 02:53 PM
السلام عليكم ورحمة الله
لمن لا يعرف الجى كويرى تفضل هنا (http://www.hack-systems.com/2008/11/01/introduction-to-jquery-in-arabic/)

والان مع الدروس
الجزاء الأول المقدمة وتحميل مكتبة الجى كويرى
http://www.youtube.com/watch?v=QSZZEh8YP7Q (http://www.youtube.com/watch?v=QSZZEh8YP7Q)
الجزاء الثانى اعداد الصفحة و مثال هالو ورلد
http://www.youtube.com/watch?v=bR-NFXumhH4 (http://www.youtube.com/watch?v=bR-NFXumhH4)
الجزاء الثالث أختيار وتحديد العناصر فى الصفحة
http://www.youtube.com/watch?v=dKlsntUQEPo (http://www.youtube.com/watch?v=dKlsntUQEPo)
الجزاء الرابع استخدام الاحداث 1
http://www.youtube.com/watch?v=1uaqJ4juUJs (http://www.youtube.com/watch?v=1uaqJ4juUJs)
الجزاء الرابع استخدام الاحداث 2
http://www.youtube.com/watch?v=5dEZhPn1CSQ (http://www.youtube.com/watch?v=5dEZhPn1CSQ)
الجزاء الخامس التأثيرات
http://www.youtube.com/watch?v=xKm4jEZmcOg (http://www.youtube.com/watch?v=xKm4jEZmcOg)

Bakenam
04-02-2009, 02:58 PM
السلام عليكم و رحمة الله وبركاته
بعدما وجدت في المنتدى استفسارات كثيرة من الاعضاء حول برمجة محرك بحث داخلي للموقع
ارتأيت أن أضع هذا الدرس المتواضع متضمنا اياه طريقة برمجة محرك بحث بطريقة سهلة جدا
و الان نبدأ على بركة اللهhttp://traidnt.net/vb/images/smilies/shiny01.gif
تنشئ ملف للاتصال و نسميه connexion.php وهذا هو الكود الذي سيكون فيه


رمز PHP:

<?php
// معلومات للاتصال بقاعدة البيانات
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'test';// هنا نضع اسم القاعدة
//------- هذه الاسطر لطباعة الوقت و الناريخ -------------

$now_Y = date("Y");
$now_m = date("m");
$now_d = date("d");
$now_H = date("H");
$now_i = date("i");
$now_s = date("s");

$date = "$now_d-$now_m-$now_Y à $now_H:$now_i:$now_s";

// الاتصال بقاعدة البيانات
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());

?>

بعد ذالك نقوم بانشاء ملف جديد و نسميه search.php


رمز PHP:

<?php
include('connexion.php');

echo $date;


$h = $_POST['name'];
echo "<BR><BR><BR>\n";

echo $row['date'];
echo "تبحث عن الرقم <EM>$h</EM>.\n";
echo "<BR><BR>\n";
$SQL = "SELECT * FROM اسم الجدول WHERE Nom LIKE '$h%'";
$result = mysql_query($SQL) or die("وقع خطأ <BR><PRE>$SQL</PRE>في الاتصال بقاعدة البيانات: ".mysql_error());
$article =mysql_fetch_object($result);
$result = mysql_query($SQL) ;
//حددت المتغير $i لطباعة خمس نتائج في كل سطر
echo "<TABLE border =\"0\" width=\"100%\" CELLPADDING=\"0\" cellspacing=\"0\">";

//ابتداء المتغير من الصفر
$i=0;
while($row = mysql_fetch_row($result))
{
if ($i==0)
{
echo "<TR>";
}

//لا أعرف ماذا تسمون هذه العملية باللغة العربية
$i=$i+1;

//$row[رقم الحقل الذي نريد طباعته]
echo "<td width=\"20%\" align=\"center\"> $row[7] <br>$row[1] $row[2] <br> <i><b><u>الخدمة :</i></b></u>$row[8]</td>";
if ($i==5)
{
echo "</TR>";
$i=0;
}
}
echo"</table>";

و أخيرا ملف ثالث نسميه recherche.html واي اسم تريد


رمز PHP:

<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<H1>البحث عن الاسم: </H1>
<BR>
<CENTER>
<FORM ACTION="search.php" METHOD="POST">
ادخل الرقم : <INPUT TYPE="****" NAME="name">
<BR><BR>
<INPUT TYPE="submit" VALUE="بحث">
</FORM>
</CENTER>

<BR><BR><BR>

</DIV>
</BODY>
</HTML>


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


نسيت ان اقول بالنسبة للذين يريدون البحث في اكثر من حقل واحد نكتب OR
مثال :
نعوض هذا الكود
رمز PHP:

$SQL = "SELECT * FROM اسم الجدول WHERE Name LIKE '$h%'";


بهذا الكود
رمز PHP:

$SQL = "SELECT * FROM اسم الجدول WHERE Name LIKE '$h%' OR Prenom LIKE '$h%'";

Bakenam
04-02-2009, 03:03 PM
اقدم اليكم اليوم درس خاص جدا ومتقدم .
الدرس يتحدث عن تخزين وحفظ الملفات بداخل قواعد البيانات MySql
بدلا من حفظها بداخل القرص التخزينى
ملاحظه : وصفى للدرس أنه متقدم لا يعنى أنه بدرجه عاليه من الصعوبه ولكننى أقصد ان فئه معينه فقط من المبرمجين الذين يستخدموا تلك الطريقه وهم المبرمجين الذين يقومون باستغلال أقصر الطرق وأفضلها والضين يحرصون على عدم فقدان البيانات الخاصه بهم .
ولذلك اذا كنت مبرمج مبتدئ أو متوسط يمكنك تطبيق الدرس وفهمه أيضا بكل سلاسه .

فوائدها :
1- الحفاظ على مساحة التخزين الخاصه بك بدون استهلاك مساحة المرفقات او الملفات التى تم رفعها http://traidnt.net/vb/images/smilies/bigsmile.gif
2- الحفاظ على الملفات المرفوعه بدون فقدانها أو ضياعها http://traidnt.net/vb/images/smilies/bigsmile.gif.
3- عندما تريد ان تقوم بأخذ نسخه احتياطيه من الموقع يكتفى بأخذ نسخة احتياطيه من قاعدة البيانات فقط فالملفات المرفوعه موجوده بقاعدة البيانات http://traidnt.net/vb/images/smilies/bigsmile.gif.
4- كافة المشاريع المحترمه http://traidnt.net/vb/images/smilies/smoke1.gif تستخدم تلك الطريقه كطريقه متميزه فى الحفاظ على الملفات كسكربت VBulletin .
سكربت VBulletin يستخدم تلك الطريقه فى عملية رفع الملفات المرفقه والصور الشخصيه والصور الرمزيه .

الفكره الأساسيه :
من المعلوم ان قاعدة البيانات لا تسمح بتخزين الملفات بصوره مباشره بداخلها
ولذلك سنحول الملف الى نوع آخر من البيانات حتى يمكن ادخالها وتخزينها بقاعدة البيانات
ولذلك سنقوم بتحويل الملف الى صيغة البيانات BLOB .

خطوات التطبيق للدرس :
1- سنقوم أولا بتكوين قاعدة البيانات التى سيتم تخرين الملف بها وسيكون اسمها upload
بذلك الاستعلام :



رمز PHP:

CREATE TABLE upload (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(30) NOT NULL,
type VARCHAR(30) NOT NULL,
size INT NOT NULL,
content MEDIUMBLOB NOT NULL,
PRIMARY KEY(id)
);


2- سنقوم بتكوين الصفحة التى سيوجد بها الفورم الخاص بعملية اختيار المستخدم للملف المراد رفعه
وهذا الفوم يتطابق بشكل كلى مع الفورم الخاص برفع الملفات الى القرص الصلب والتى تستخدم فيها الطريقه البسيطه جدا لرفع الملفات والمنتشره درسها بالمعهد
سنقوم بتسمية الملف up.htm


رمز PHP:

<form method="post" enctype="multipart/form-data">
<table width="350" border="0" cellpadding="1" cellspacing="1" class="box">
<tr>
<td width="246">
<input type="hidden" name="MAX_FILE_SIZE" value="2000000">
<input name="userfile" type="file" id="userfile">
</td>
<td width="80"><input name="upload" type="submit" class="box" id="upload" value=" Upload "></td>
</tr>
</table>
</form>


3- سنقوم بتكوين الصفحه الخاصه بعملية تخزين الملف الى قاعدة البيانات والمسئوله عن قرائة الملف باستخدام الداله fopen والداله fread والتى تقوم أيضا بالاتصال بقاعدة البيانات وتنفيذ الاستعلام الخاص باضافة الملف الى قاعدة البيانات .
وسيكون محتواه هو :


رمز PHP:
[PHP]<?php
if(isset($_POST['upload']) && $_FILES['userfile']['size'] > 0)
{
$fileName = $_FILES['userfile']['name'];
$tmpName = $_FILES['userfile']['tmp_name'];
$fileSize = $_FILES['userfile']['size'];
$fileType = $_FILES['userfile']['type'];

$fp = fopen($tmpName, 'r');
$content = fread($fp, filesize($tmpName));
$content = addslashes($content);
fclose($fp);

if(!get_magic_quotes_gpc())
{
$fileName = addslashes($fileName);
}



$name = "root";
$pass = "";
$dbname = "upload";
$host = "localhost";
//connect with mysql
$link = mysql_connect($host,$name,$pass);
mysql_select_db($dbname,$link);



$query = "INSERT INTO upload (name, size, type, content ) ".
"VALUES ('$fileName', '$fileSize', '$fileType', '$content')";

mysql_query($query) or die(mysql_error());


echo "<br>File $fileName uploaded<br>";
}
?>

الى هنا سنكون قد اتممنا عملية ادخال الملف وتخزينه الى قاعدة البيانات .
__________________________________________________ ________
سنأتى الآن الى الخطوه المقابله لعملية الرفه وهى عملية التحميل

4- الملف down.php سيكون وظيفته هى الاتصال بقاعدة البيانات وعمل رص لأسماء الملفات فى عمود واحد وعند الضغط على أى ملف يتم استدعاؤه من قاعدة البيانات وتحميله .

وسيكون محتواه هو :


رمز PHP:

<html>
<head>
<title>Download File From MySQL</title>
<meta http-equiv="Content-Type" content="****/html; charset=iso-8859-1">
</head>

<body>
<?php
$name = "root";
$pass = "";
$dbname = "upload";
$host = "localhost";
//connect with mysql
$link = mysql_connect($host,$name,$pass);
mysql_select_db($dbname,$link);


$query = "SELECT id, name FROM upload";
$result = mysql_query($query) or die('Error, query failed');
if(mysql_num_rows($result) == 0)
{
echo "Data**** is empty <br>";
}
else
{
while(list($id, $name) = mysql_fetch_array($result))
{

echo "<a href=down2.php?id=$id>$name</a> <br> ";

}
}
?>
</body>
</html>

5- الخطوه الأخيره وهى الخاصه باستدعاء الملف المطلوب واجراء العمليه العكسيه لعملية تحويل صيغة الملف الى BLOB وجعله فى صوره قابله للتحميل للمستخدم .ومحتواه سيكون كما يلى


رمز PHP:

<?php
if(isset($_GET['id']))
{
// if id is set then get the file with the id from data****

$name = "root";
$pass = "";
$dbname = "upload";
$host = "localhost";
//connect with mysql
$link = mysql_connect($host,$name,$pass);
mysql_select_db($dbname,$link);

$id = $_GET['id'];
$query = "SELECT name, type, size, content " .
"FROM upload WHERE id = '$id'";

$result = mysql_query($query) or die('Error, query failed');
list($name, $type, $size, $content) = mysql_fetch_array($result);

header("Content-length: $size");
header("Content-type: $type");
header("Content-Disposition: attachment; filename=$name");
echo $content;


exit;
}

?>


والى هنا ستكون قد أتتمت الدرس بنجاح وكاجمالا قمنا بعمل 4 ملفات هم :

1- up.htm : الخاص بتحديد المستخدم للملف المراد تخزينه بقاعدة البيانات .
2- up.php : الخاص بعملية تحويل الملف الى الصيغة BLOB وتخزينه بقاعدة البيانات .
4- down.php : الخاص بعملية صف الملفات لاختيار الملف المراد تحميله .
5- down2.php : الخاص باتمام عملية التحميل للملف الى جهازك .

مرفق مع الدرس ال4 ملفات الخاصه بالدرس جاهزه للتشغيل مباشرة واختبارها

أرجو أن أكون قد وفقت فى تقديم اليكم الدرس

Bakenam
04-02-2009, 03:06 PM
بسم الله الرحمن الرحيم

اليوم جاي بدرس صغير وهو يهم بشكل عام الراغبين في وضع نافذه دخول للمنتدي في سكريبتهم

او المصممين الي يبون يحطون نافذة تسجيل الدخول للمنتدي من خلال تصاميمهم في الواجهات

هالكود هو من تطويري طبقا لما فهمته من قرائتي لكود منتديات الفي بي وقد جربته وعمل 100% والحمد لله

بداية بالنسبه للمثال فهو موجود هنا :
http://www.egy2net.com (http://www.egy2net.com/)

وبالنسبة للشرح فسوف اقوم بالتعليق علي كل سطر داخل الكود نفسه كل ماعليك هو نسخ متحوي الصندوق التالي وتغير القيم المطلوبه فقط ووضعه في اي مكان في تصميمك وأبشر بعزك وطول عمرك


رمز PHP:

<form method="POST" action="vb/login.php?do=login" onsubmit="md5hash(vb_login_password, vb_login_md5password, vb_login_md5password_utf, $show[nopasswordempty])>
<input type="****" class="bginput" style="font-size: 10px" name="vb_login_username" id="navbar_username" size="20" accesskey="u" onfocus="if (this.value == 'اسم المستخدم') this.value = '';" value="User Name" />
<input type="password" class="bginput" style="font-size: 10px" name="vb_login_password" id="navbar_password" size="20" value="Pass Word" />
<input type="submit" value="Sign in" name="B1" style="font-size: 10px; font-family: Tahoma">
<input type="reset" value="Reset" name="B2" style="font-size: 10px; font-family: Tahoma">
<input type="hidden" name="s" value="" />
<input type="hidden" name="do" value="login" />
<input type="hidden" name="vb_login_md5password" />
<input type="hidden" name="vb_login_md5password_utf" />
<input type="hidden" name="url" value="index.php" />
</form>



قم بإستبدال index.php بالمكان الذي تريد الذهاب إليه عقب تسجيل الدخول مباشرة (إما ان تقوم بوضع الرابط كامل او ضح إسم الملف داخل مجلد الـvb).

قم بإستبدال vb/login.php?do=login بمسار ملف تسجيل الدخول داخل مجلد منتداك (غالبا كما هو وماراح تعدله ).

الكود يعمل علي نسخ 3.5 و 3.6

Bakenam
04-02-2009, 03:07 PM
بسم الله الرحمن الرحيم

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


شرح توحيد الهيدر والفوتر في جميع أقسام الموقع


1 - انشئ ملف فوتر وملف هيدر ثابين فلنفترص انك انشئت ملفين باسم



header.html
footer.html

ورفعتهم على موقعك مباشرة ورابط موقعك
www.----------.com (http://www.----------.com/)

2 - في الهيدر الخاص بكل قسم او سكربت استخدم دالة include أو دالة require لاستدعاء الملفات
الفرق بين الدالتين
include - تستدعي الملف المطلوب
require - تستدعي الملف المطلوب واذا كان غير موجود لا تعمل الصفحة

طريقة الإستخدام

رمز Code:


<?phpinclude ("www.-------.com/header.html");?>


وفي حال رغبت باستخدام require فقط استبدل كلمة include بـ require

بعض السكربتات مثل vbulletin لاتسمح باستخدام اكود php في القوالب

فالحل هو استخدام وسم ****** باستخدام html
وطريقة الإستخدام

رمز Code:
<****** scr="http://www.-------.com/header.html" width="100%" height="------" frameborder="0">
مكان height اكتب طول الهيدر أو الفوتر

Bakenam
04-02-2009, 03:10 PM
السلام عليكم ورحمه الله
http://www.up-00.com/bzfiles/EXw83672.jpg




الحمد الله رب العالمين


بعد الأنتهاء من
::الجزء الأول (الدرس الأول)فى دوره تعليم السى بلس بلس
رابط الموضوع
http://www.traidnt.net/vb/showthread.php?t=1035277 (http://www.traidnt.net/vb/showthread.php?t=1035277)
::الجزء الأول (الدرس الثانى)فى دوره تعليم السى بلس بلس
رابط الموضوع
http://www.traidnt.net/vb/showthread.php?t=1036448
المشتركين فى الدوره ولتى هجواب على أسئلتهم وأسئله المشرفين فقط
http://www.traidnt.net/vb/showpost.p...7&postcount=24 (http://www.traidnt.net/vb/showpost.php?p=9621287&postcount=24)
:::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::
والحمد الله الدروس السابقه اتعلمنا فيها ما هى هذه اللغه وكيفيه استعمال المترجم وهو البرنامج وكيفيه فتحه والعمل عليه
__________________________
_______
_
هنتعلم اليوم حاجات مهمه جداااااااا
والتركيز مطلوب , رغم انه بسيط لكن مستقبليا الاخطاء تقع خلال البرمجة تكون اخطاء باساسيات البرمجة......... تعالوا نتعلم الاول شروط أو حاجات لابد تكون فكرها كويس جدااااا
::البرنامج حين يبدأ بترجمته فانه يترجم من السطر الاعلى الى الاسفل
::كل جملة برمجية في لغة ++C تنتهي بفاصلة منقوطة ';' تقريباً
اولا : الجمل وانواعها :





يقصد بالجمل هي مجموعة من الكلمات المرتبة بشكل متتالي و لها معنى وهنا بالبرمجة بالطبع , لكن هنالك اساسيات وقواعد لتصبح الجملة صحيحة , ولكل نوع طريقة والانواع الرئيسية هي :


جمل التعليقات Comment Statements

هي جمل لا قيمة لها فعليا في تنفيذ البرنامج ولا تؤثر فيه و وانما دورها يقتصر بمساعدة المبرمج على القيم بالبرمجة بشكل مريح ومنظم وذلك اثناء كتابة البرنامج , وتساعده في اكتشاف الاخطاء وموضعه وخصوصا الاخطاء المنطقية (سنتعرض لانواع الاخطاء في الدرس القادم ان شاء الله) .. اضافة لاهمية وجودها في الكود الذي نكتبه اذا كان طويل جدا وايضا اذا كان العمل مشترك او ان البرنامج هو برمجية حرة Open Source , فتخيلوا انه البرنامج يكون 10000 سطر ويطلب من مبرمج آخر ان يكمله او يحسنه , اعتقد لو يكتب الكود من البداية اوفر له وقتا وجهدا من اعادة قراءة الكود من اول وفهم كل جملة ماذا تقوم وما ناتجها ولمى وضعت , وتنقسم بدورها جمل التعليقات الى نوعين :



سطر مفرد Single Line


هي جمل التعليقات على هيئة سطر واحد وتنتهي هذه الجملة بمجرد ان تنزل سطر جديد اثناء كتابتك للكود , وطريقة كتابتها هو بكتابة "//" ثم اي شيء بعدها ,مع ملاحظة اننا بامكاننا وضعها إما في سطر جديد او بعد عبارة برمجية منتهية مثال:











رمز PHP:

// Hello this is My first Program

// This program written by : Al-Mothafar
void main()
{
cout<<"Welcome to C++"<<endl; // Print "Welcome to C++
}


اسطر متعددة MultiLines
وهي الاصح ان تسمى فقرات التعليق , هي مجموعة من الاسطر الممتابعة نعرفها ببداية ونهاية ولا يكفي فقط بداية والا سيعتبر كل التالي هي جملة تعليق , تبدأ بـ /* وتنتهي بـ */

رمز PHP:

/* Hello this is My first Program
This program written by : Al-Mothafar */
void main()
{
cout<<"Welcome to C++"<<endl; /* Print "Welcome to C++*/
}


جمل الادخال Input Stream
هي جمل وظيفتها تحويل البرنامج الى وضع الانتظار حتى تتم عملية الادخال من قبل المستخدم (المستخدم هنا سواء كان شخص او برنامج) , ما ان تتم عملية الادخال حتى تكون هذه الجملة قد انتهت وظيفتها وقامت بارجاع القيمة المدخلة الى البرنامج, يعود بعدها البرنامج الى وضع العمل , وهذه الجمل تنتهي بالفاصلة المنقوطة ';' , بالنسبة لاشارة الادخال Input Operator هي ">>" يتبعها اسم المتغير المراد تخزين القيمة فيه , مثال يوضح الامر :
رمز PHP:

cin >>x>>y>>z;



ويمكننا الكتابة نفس العبارة بطريقة اخرى لاحظ
رمز PHP:

cin >>x
>>y
>>z;


جمل الاخراج Output Stream
هي جمل وظيفتها اظهار النتائج والمعلومات مثل cout و clog و cerr و printf , وحالها في كتابتها شبيهة بالادخال الا ان الاشارة الاخراج Output Operator معكوسة "<<"
ملحوظه
طريقة printf مختلفة تماما
رمز PHP:

cout<< "x =" << x << "and y = "
<< y <<endl;


ولاحظوا ان هنا ان ما يحصر بين " " يُطبع كما هو ويستخدم لطباعة نص ولكن اذا اردنا طباعة قيم المتغيرات المخزنة داخلها فلا نضعها , لو فرضنا ان x متغير مخزن داخله الرقم 5 ففي الحالة هذه اذا كتبنا :

رمز PHP:

cout<< "x";


يطبع x هكذا على الشاشة اما اذا كتبناها بالشكل التالي :

رمز PHP:

cout<< x;


والحد هنا كفايه نكمل فى الدرس القادم باذن الله المتغيرات ؟؟؟؟؟
والسلام عليكم ورحمه الله
منكم الدعاء

Bakenam
04-02-2009, 03:15 PM
السلام عليكم ورحمه الله
http://www.up-00.com/bzfiles/EXw83672.jpg



الحمد الله رب العالمين
اخواتى الشرح هذا انا تعيبت فيه جامد ارجوا الدعاء الصالح....
بعد الأنتهاء من
::الجزء الأول (الدرس الأول)فى دوره تعليم السى بلس بلس
رابط الموضوع
http://www.traidnt.net/vb/showthread.php?t=1035277
المشتركين فى الدوره ولتى هجواب على أسئلتهم وأسئله المشرفين فقط
http://www.traidnt.net/vb/showpost.p...7&postcount=24 (http://www.traidnt.net/vb/showpost.php?p=9621287&postcount=24)
:::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::
لقد تعلمنا فى الدرس السابق على تعريف السى بلس بلس
واتعلمنا فائده هذه اللغه المهمه ومدى أهميتها من الماضى
على اللغات الأخرى وأى سؤال بنسبه للغه ممكن تذهب إلى
الدرس الأول وأنا هقوم بالاجابه بأذن الله للمشتركين فقط
::::::::::::::::::::


ماذا يلزمني حتى ابرمج بلغة الـ ++C , الجواب هو مترجم لهذه الغة C++ Compiler وهذا المترجم يكفيه فقط شاشة الـ ***** او الـ Dos ولكن ظهرت برامج متنوعة ورائعة تدعى IDE إختصار لـ Integrated Development Environment واهمها Microsoft Visual Studio الذي يضم البرنامج الذي يهمنا Microsoft Visual C++ , وتنوعت الاصدارات والآن وصل الى اصدار 9 لكن نحن سنعمل على اصدار 6 , وذلك لاسباب منها ان هذا الاصدار هو آخر اصدار يتعامل مع المعايير النهائية لهذه اللغة وبعيد عن بيئة الدوت نت وارتحت معه اكثر وايضا يوجد Borland C++ 6.0 وهو آخر اصدار ممكن اعتباره "جيد" , وبالنسبة لنظام لينوكس اعتقد هنالك برنامج يدعى بـ Mano (http://www.monodevelop.com/Main_Page (http://www.monodevelop.com/Main_Page)) .


::::::::::
سنتعلم اليوم البدء بإستخدام برنامج Microsoft Visual Studio 6.0 وكتابة اول برنامج عليه, ....
اللى مش عنده البرنامج يحمل من هنا
للتحميل من موقع ( mediafire ) :
الملف الأول ( 98 م.ب )


http://vb6.almokna.googlepages.com/download.gif (http://www.mediafire.com/?sm9z25ztyjd)



الملف الثاني ( 98م.ب )



http://vb6.almokna.googlepages.com/download.gif (http://www.mediafire.com/?jgn3cmtmtcn)



الملف الثالث ( 65 م.ب )



http://vb6.almokna.googlepages.com/download.gif (http://www.mediafire.com/?tyjfgbhyuen)
أو يدخل هنا
http://www.traidnt.net/vb/showthread.php?t=1025676
أو
http://www.ar-tr.com/vb/showthread-t_9716.html
أو
يحمل من الروابط اللى بالمرفقات
واللى بيدخلها صور الموضوع

::::::::::::::::


الشرح وخلى بالك كويس جدا جدا
أولا نذهب الى قائمه أبدء -ونختار programs all
ولعدها نختار
Visual Studio 60.
ومنها نختار


Microsoft visual c++6


بعد ذلك هيظهر البرنامج كما فى الصوره كدا


http://www.up-00.com/bzfiles/zKx04688.jpg


بعد ذلك سيفتح لا البرنامج , اذهب الى قائمة ملف ثم جديد او استخدم الاختصار Ctrl+N كما فى الصوره


http://www.up-00.com/bzfiles/Q5q04688.jpg


هنجد خيارات كتير ركز معاى جدا نشوف هنعمل ماذا نقوم بتظليل ما يشير اليه رقم 3 وهى win32console applicaition


وفى رقم 1نكتب اسم المشروع
وفى رقم 2 نحددموقع البرنامج ويفضل تتركه زى ماهو وبعدها نضغط ok
http://www.up-00.com/bzfiles/Fhe04688.jpg


وبعدها تظهر شاشه النتائج ونختار منها رقم 1 كما موضح فى الصوره وبعدها نضغط كما فى السهم رقم2


http://www.up-00.com/bzfiles/sc704688.jpg
تظهر هذه النافذه نضغط على على رقم1 كما هو موضح


http://www.up-00.com/bzfiles/E0x04688.jpg




بعد ذلك هنضغط على ctrl+n مره أخرى هتظهر لنا هذه النافذه نعمل مثل ما هو موضح رقم2 نحدد على حفظ وتاكيد المشروع رقم 2 نكتب أى اسم
رقم 3 نختارc++ source file
http://www.up-00.com/bzfiles/kOb04688.jpg



أخير نهايه العمل وبدايه العمل فى البرنامج
رقم1يرمز ألى التوقيف
رقم2هنا لاختبار البرنامج
رقم3هذا الزر مهم فى حال التعليق
رقم4هذا زر لبناء البرنامج
رقم5هنا مساحه ملفات البرنامج
رقم6هذا زر لعمل ترجمه للملف الحالى



http://www.up-00.com/bzfiles/8JI07961.jpg


والسلام عليكم ورحمه الله
ياربى بجد الشروحات تعب ويارب يجزنى خير وأرجوا منكم الدعاء

Bakenam
04-02-2009, 03:17 PM
أنشاء نموزج أسكريبت بلغة html وجافا سكريبت معا

--------------------------------------------------------------------------------

بسم الله الرحمن الرحيم
فى هذا القسم يقوم كلا من المصممين بتعليم هذة اللغة ولكن هناك البعض متعجلا لعمل شىء محدد وبالسرعة المطلوبة
لذلك فكرت أن أقوم بأنشاء سكريبت محدد ويمكنكم فقط عمل نفس الأسكريبت مع تغيير الجمل فقط حسب نوع التصميم

الأن فقط أفتح برنامج notepad وأكتب بداخل المفكرة مايلى:-
<HTML>
<HEAD>
<TITLE>Forms</TITLE>
</HEAD>
<BODY>
<FORM>
Enter your Name:<INPUT TYPE="****"><BR>
Enter your Address:<**** AREA COLS="40"
ROWS="4"></**** AREA><BR>
Enter your City:<SELECT>
<OPTION>Alexandria
<OPTION>Cairo
<OPTION>Tanta
<OPTION>Aswan
</SELECT><BR>
Interests:<SELECT SIZE="3"MULTIPLE>
<OPTION>Football</OPTION>
<OPTION>Music</OPTION>
<OPTION>Reading</OPTION>
<OPTION>Fishing</OPTION>
<OPTION>Chatting</OPTION>
<OPTION>Swimming</OPTION>
</SELECT><BR>
Select a Course:<SELECT>
<OPTGROUP LABEL="End User">
<OPTION>Word</OPTION>
<OPTION>Excel</OPTION>
</OPTGROUP>
<OPTGROUP LABEL="Developer">
<OPTION>****</OPTION>
<OPTION>C#</OPTION>
</OPTGROUP>
<OPTGROUP LABEL="*** Design">
<OPTION>HTML</OPTION>
<OPTION>Front Page</OPTION>
<OPTION>Flash</OPTION>
<OPTION>Dream Weaver</OPTION>
</OPTGROUP>
</FORM>
</BODY>
</HTML>


بعد ذلك قم بحفظ الملف بأسم forms.html
ولكى تشاهد شكل التصميم قم بفتح الملف بالضغط مرتين Double-click على أسم الملف ليتم فتح برنامج الأنترنيت أكسبلورر ولتطمئن على صحة التصميم شاهد ة بنفسك

Bakenam
04-02-2009, 03:18 PM
السلام عليكم

اخباركم اخواني

http://traidnt.net/vb/images/smilies/blushing.gif

حبيت اطلب منكم كود امر للقاعده

وهو وضيفته تغير البوست للاعضاء القديمن

يعني

عندي اول المزاجات كانت في الفيلد 15 $post[field15]

وحولتها الى فيلد 16 $post[field16]

لكن اصبحت المشكله تظهر عند الاعضاء علامه |×|

لذلك يجب عليهم تغيره من لوحه التحكم

صعبه اغير لك واحد

لذلك اريد كود امر للقاعده .. يحط الامر $post[field16] لكل الاعضاء


وكذلك الجنس كمان .. http://traidnt.net/vb/images/smilies/blushing.gif

Bakenam
04-02-2009, 05:19 PM
السلام عليكم ورحمة الله وبركاته .,.
هندرس شرح مفصل لكيفية برمجة موقع كامل ..
يلا ..
متطلبات الدورة الأول كده :-
Apache:
mysql
php
لتحميل الأباتشي:-
سيرفر الجمل :
www.camel.com (http://www.camel.com/)
وبعدين ..
Progammer's Notepad
or
Php Designer 2008
www.mpsoftware.dk/phpdesigner.php (http://www.mpsoftware.dk/phpdesigner.php)
or
www.pnotepad.org/ (http://www.pnotepad.org/)
خلصنا كده مية مية ..
الأدوات بتاعتنا موجودة
...\
الحلقة دي هنعمل الشكل الخارجي وكده يعني ..
نبدأ نفتح البرنامج ..
ونكتب الكود كما في الصور
http://upload.traidnt.net/upfiles/ToY56404.gif (http://upload.traidnt.net/)
ركزت يابني ..؟
طيب مية مية ..
في الصورة نسيت أكمل الكود ..
حطه كده:

رمز PHP:

include './system,./style.css'


مية مية ..
وهنبدأ عمل جديد هيكون سي إس إس ..
هنكتب فيه :
http://upload.traidnt.net/upfiles/S8C57236.gif

حلو كده الإستايل رصاصي عسل ..
في خط أسمر تاهوما.
يتبع والشرح الجاي ..
عمل ملف تسجيل دخول وتظبيط ملف السيستم..
و عمل ملف تسجيل خروج ..
و عمل ملف تسجيل

Bakenam
04-02-2009, 05:21 PM
تم بحمد الله الانتهاء من الدرس الرابع


وهو يتحدث علي جمله الشرط where


وايضا order by


والان ادعوكم للتحميل من سيرفر شباب جديدو


http://www.gededo.com/up//view.php?file=97455d10b3 (http://www.gededo.com/up//view.php?file=97455d10b3)


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

Bakenam
04-02-2009, 05:23 PM
السلام عليكم ورحمه الله
http://www.up-00.com/bzfiles/EXw83672.jpg




الحمد الله رب العالمين


بعد الأنتهاء من
::الجزء الأول (الدرس الأول)فى دوره تعليم السى بلس بلس
رابط الموضوع
http://www.traidnt.net/vb/showthread.php?t=1035277 (http://www.traidnt.net/vb/showthread.php?t=1035277)
::الجزء الأول (الدرس الثانى)فى دوره تعليم السى بلس بلس
رابط الموضوع
http://www.traidnt.net/vb/showthread.php?t=1036448 (http://www.traidnt.net/vb/showthread.php?t=1036448)
الجزء الثانى (الدرس الأول)دوره تعليم c++ http://www.traidnt.net/vb/showthread.php?t=1039831 (http://www.traidnt.net/vb/showthread.php?t=1039831)
المشتركين فى الدوره ولتى هجواب على أسئلتهم وأسئله المشرفين فقط
http://www.traidnt.net/vb/showpost.p...7&postcount=24 (http://www.traidnt.net/vb/showpost.php?p=9621287&postcount=24)
:::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::
والحمد الله الدروس السابقه اتعلمنا فيها الجمل وانواعها والمتغيرات ...
إنهارده هنكمل
النصوص Literal
النصوص كـ String وكيف تعريفها سنأتي اليه لاحقا في مواضيع المصفوفات , لكن اقصد هنا النصوص التي نكتبها للطباعة المباشرة من خلال جمل الاخراج , مثلا


رمز PHP:

cout<<"My Name is : Al-Mothafar "<<endl;


فيحق لك ان تكتب ما تشاء بين اشارتي الاقتباس " و " عدا المرموز \ و " و ' ...
السبب ان الرمز \ يستخدم Escape character
و " تستخدم في اقفال وبداية النص و ' تستخدم في طباعة الاحرف المفردة مثل
cout<<'x'<<end; ..

اما بالنسبة لما يسمى بـ Escape character فهي الرمز \ يتبع باحدى الحروف التي من شأنها عمل وظيفة ما او حدث ما وهي كالتالي :

\aصوت صافرة من داخل الجهاز\bBackspace \fFormfeed\nسطر جديد\rالعودة لبداية السطر\ttab \\لطباعة \ الباك سلاش\'لطباعة ' \"لطباعة " \xddلطباعة الرمز المقابل للرقم بالهيكسا (الرقم مكان dd )
امثلة :

رمز PHP:

cout<<"Welcome \rto My program"<<endl;
cout<<"Welcome \bto My program"<<endl;
cout<<"Welcome \tto My program"<<endl;
cout<<"Welcome \"to My program\" "<<endl;
cout<<"Welcome \'to My program\' "<<endl;
cout<<"Welcome \ato My program\""<<endl;
cout<<"03 = \d03"<<endl;


النواتج ستكون بالترتيب كالتالي:

رمز PHP:

to My program
Welcometo My program
Welcome to My program
Welcome to "My program"
Welcome to 'My program'
Welcome to My program
03 = ♥


وفي حال ان الحرف خطأ سيعطي تحذير ويطبع الحرف عادي ويتجاهل \ ...


كدا خلصنا
عايزين نشتغل ونشوف اعضاء الدوره
نيجى الى الأسئله
واريد منكم تفسير الناتج جراء العمليات الحسابية التالية


رمز PHP:

x = 9%3 *1.5;


فالناتج سيكون 0 ,
بينما

رمز PHP:

x = 1.5 * 9%3;


سيكون الناتج 1 ...

ما ناتج العمليات التالية والمخزنة في المتغير x


رمز PHP:

double x = 4/ 6 + (6+2*9*(9/8));
double x = 9 % 6 / 5;
double x = 9 - 9 - 6 * 9;
int x = 9/2*9-(6*5/10);


http://traidnt.net/vb/AGT04/misc/quotes/quot-top-left.gifاقتباسhttp://traidnt.net/vb/AGT04/misc/quotes/quot-top-right.gifhttp://traidnt.net/vb/AGT04/misc/quotes/quot-top-right-10.gifاريد منكم كشف الاخطاء في العبارات التالية: http://traidnt.net/vb/AGT04/misc/quotes/quot-bot-left.gifhttp://traidnt.net/vb/AGT04/misc/quotes/quot-bot-right.gif


رمز PHP:

double x , int y ;
int x , y
int 8x , y;
double x = 9 ( 6 / 5 );
cout<<"Welcome to C++<<endl;
cout<<''Welcome to C++''<<endl;


والسلام عليكم ورحمه الله
منكم الدعاء

Bakenam
04-02-2009, 05:26 PM
بسم الله الرحمن الرحيم

كلاس PHP :

Binary Search


أقدم لكم اليوم هذا الكلاس المميز والذي يُتيح لك البحث داخل الملفات Binary Search !

وظيفة جديدة ومميزة فعلاً، تخيل انك تقوم برفع كتب مثلاً من نوع word أو غيرها وتُمكن زوار موقعك من البحث داخل هذه الكتب عن ما يريدوه لكي يصلوا للكتاب المطلوب بالتحديد ..

وغيرها من الأفكار التي يمكن تنفيذها بإذن الله اعتماداً على هذا الكلاس.

محتويات الملف المرفق:



ملف binary_search.class.php : ملف الكلاس نفسه، الذي يتم عمل include له في ملفاتك.

ملف data.csv : ملف به بيانات، وهو كمثال فقط لأي ملف، أي مثال للملف الذي سيتم إجراء البحث داخله بإذن الله.

ملف test.php : وهو مثال على استخدام الكلاس، ويتم في هذا الملف البحث عن كلمة معينة داخل الملف data.csv.

Bakenam
04-02-2009, 05:27 PM
درس شرح تصميم مركز تحميل بسيط جدا
النتيجة النهائية
http://www.phpeasystep.com/imgs/single_file_upload.gif

الدرس وشرح الوصور والاكواد من هنا (http://www.jooria.com/details-25.html)
ومع تحياتى واسف لان الدرس انجليزى

Bakenam
04-02-2009, 05:30 PM
السلام عليكم ورحمه الله
http://www.up-00.com/bzfiles/EXw83672.jpg




الحمد الله رب العالمين


بعد الأنتهاء من
::الجزء الأول (الدرس الأول)فى دوره تعليم السى بلس بلس
رابط الموضوع
http://www.traidnt.net/vb/showthread.php?t=1035277 (http://www.traidnt.net/vb/showthread.php?t=1035277)
::الجزء الأول (الدرس الثانى)فى دوره تعليم السى بلس بلس
رابط الموضوع
http://www.traidnt.net/vb/showthread.php?t=1036448 (http://www.traidnt.net/vb/showthread.php?t=1036448)
الجزء الثانى (الدرس الأول)دوره تعليم c++ http://www.traidnt.net/vb/showthread.php?t=1039831 (http://www.traidnt.net/vb/showthread.php?t=1039831)
الجزء الثانى (الدرس الثانى)دوره تعليم c++

المشتركين فى الدوره ولتى هجواب على أسئلتهم وأسئله المشرفين فقط

http://www.traidnt.net/vb/showpost.p...7&postcount=24 (http://www.traidnt.net/vb/showpost.php?p=9621287&postcount=24)
:::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::
إن شاء الله سيكون في هذا الدرس شرح عن الجمل الشرطية والدورانات

جمل التحكم وبنيتها Control Statements & Structure :
وهي نوعين :


ما يسمى جمل متتالية Sequential Control :


الجمل التي تنفذ مباشرة خلال البرنامج .







ما يسمى بالجمل الانتقالية Transfer Controls :







وهي ما سنتطرق اليه في درسنا اليوم , وتنقسم بدورها ايضا الى نوعين :






الجمل التحديدية او الشرطية Selection Statements :
مثل If و Switch ...

الجمل التكرارية Repetition Statements :
وهي الدورانات مثل دورانات Whileو do while و for ...


وطبعا قبل ان ندخل في النوع الثاني من الجمل يجب ان نعلم اشارات المقارنة الخاصة بلغة C++ Comparison Operator المكونة للشرط Condition

تنبيه هام...

رمز PHP:

. لاحظ ان الاشارة مقيدة بالشكل الذي تراه ولا يسمح بوجود مسافة بين الرموز المكونة لكل اشارة , مثلا == لا يسمح بكتابتها بالشكل = = سوف يعترض عليه المترجم ولن يتابع البرنامج...

2. في حال انك اخطأت في كتابة الجملة الشرطية باستخدام المساواة فكتبت = بدلا من == , لن يتعرض البرنامج حقيقة على ذلك , انما خلال التفيذ ستلاحظ ان هنالك خطأ منطقي اي في الحسابات وذلك بسبب تغير قيمة المتغير المقارن به مثلا x=5 فسيخزن الرقم 5 في x وسيعتبر الشرط صحيح في جميع الاحوال الا اذا كانت x=0 وذلك بسبب ان تحقق الشرط هو ان يكون ناتجه لا يساوي صفر اما اذا كان صفر فهذا يعني ان الجملة خطأ اي false اتمنى ان تكون واضحة..




وقبل ان بدأ ...
قد نحتاج للجمع بين اكثر من شرط اي قد نقول اذا كان x اكبر من 0 واقل من 100 , او قد نقول اذا كان x اقل من 0 واكبر من 100 فإننا نستخدم الاشارة التالية :

لصيغة "أو OR" نقوم بالجمع بين الشريطن او اكثر بإشارة || بدون مسافة لاحظ .

لصيغة "و AND" نقوم باستخدام && بدون مسافات وبهذا الشكل

رمز Code:
سينتج خطأ منطقي اذا استخدمتم & بدلا من && و | بدلا من || .. ارجو الانتباه ...


مثال : x > 100 || x < 0


مثال : x < 100 && x > 0
ملاحظة مهمة : يمكنك تخزين قيمة الناتج من عملية المقارنة في متغير من نوع bool حيث ان جملة المقارنة فعيلا ترجع قيمة اما true او false ... مثال :

رمز PHP:

bool result = x > y;




بحيث يمكن استخدام المتغير متى احتجنا ذلك بدلا من الجملة الشرطية كاملة ....

الجمل الشرطية (بمعنى آخر التحديدية) وانواعها Selection Statements :







يقصد بالجمل الشرطية ببساطة هي الجمل التي قد تنفذ او لا , حسب قاعدة نحن نكتبها او الاصح شرط نحن نكتبه , وسميت تحديدية Selection لانها نحدد ما الذي ينفذ من الجمل :



الجملة الشرطية IF


الجملة if هكذا تكتب ولا تكتب IF او iF او If كما تعلمنا ان لغة السي بلس بلس حساسة لحاله الاحرف فكن حذر , هي جملة في ابسط اشكالها تختبر شرط ما اذا كان الشرط صحيح فإنه ينفذ الجملة التابعة لجملة if واذا كانت خاطئة فيتجاوز ما يتبع جملة if ويتابع عمله ...






والصيغة العامة تكون كالتالي:
رمز PHP:

if (condition )
{
statement1;
statement2;
statement3;
.
.
.
}




وهذه جملة الـ if في ابسط حالاتها , ونلاحظ انها لم تنتهي بالفاصلة المنقوطة , واذا وضعت الفاصلة المنقوطة فإن هذا يعتبر انهاء لجملة if وتعتبر بنية كاملة , اعتقد بالامثلة تصل الفكرة التي قد لا تصل حقيقة الا بالامثلة ....


رمز PHP:

void main()
{
int age;
cout<<"Please input your age: ";
cin>> age;
if ( age < 100 ) {
cout<<"You are pretty young!\n";
}
}





أنظر للبرنامج هو يقوم بقراءة رقم نحن ادخلناه خلال تنفيذ البرنامج , يقرأ البرنامج قيمة المتغير age بعد الادخال ومن ثم يرى هل هو اكبر من القيمة 100 فإذا كان ذلك, يطبق الجملة التي داخل البلوك التابع له فإذا كان العمر المدخل اقل من 100 يطبع You are pretty young! اما اذا يساوي 100 او اكبر من 100 فإنه لا يطبع شيء ...


رمز PHP:

void main()
{
int age;
cout<<"Please input your age: ";
cin>> age;
if ( age < 100 ); {
cout<<"You are pretty young!\n";
}
}





هذا المثال نفس المثال اعلاه لكن الفرق بسيط جدا , هذا المثال ببساطة دائما يطبع You are pretty young! لكن لماذا؟


السبب ببساطة يوجد فاصلة منقوطة!!!!!
هنا if ( age < 100 ); , لذلك فهو سواء حقق الشرط او لا بالنسبة له انتهت الجملة if ولا تتبع لها شيء , لذلك جملة الطباعة التي تليها تعتبر خارج if وليس داخلها , ايضا نقطة اخرى احب ان انو لها



ما الفرق بين
رمز PHP:

void main()
{
int age;
cout<<"Please input your age: ";
cin>> age;
if ( age < 100 )
cout<<"You are pretty young!\n";
cout<<"Thank you!\n";
}






الفرق انه في الحالة الاولى الذي يتبع جملة if اذا تحققت هو فقط



رمز PHP:

cout<<"You are pretty young!\n";







ولذلك لو تحقق الشرط سيكون الناتج هو


رمز PHP:

You are pretty young!
Thank you!






اما اذا لم يتحقق فسيصبح



رمز PHP:

Thank you!






في الكود الثاني اذا تحقق الشرط سيطبع فقط



رمز PHP:

You are pretty young!
Thank you!







اما اذا لم يتحقق لن يطبع شيء , والسبب هو انه اذا لم تكن موجودة اشاة البلوك فسيعتبر الجملة التالية فقط هي التي تتبع لجملة if يعني بعبارة اوضح يتوقف تأثير if عند اول فاصلة منقوطة (مبدئيا نقول هذا), في حال وجود اشارات البلوك { و } وتتبع لجملة if فكل ما داخل البلوك يعتبر تابع لجملة if وهكذا نعرف فائدة البلوك بشكل اكثر ... وهو شيء مهم وضروري معرفته خصوصا على من تعود على لغة الفيجوال بيسك او البيسك اذا ان هذه اللغات تعتمد على ان كل ما يتبع جملة if هو تابع لها الا اذا وجد end if , هنا الذي يحدد هو البلوك , او اول فاصلة منقوطة بعد جملة if .....

لنقل بعبارة اخرى لو كنا نريد فقط تنفيذ جملة واحدة بعد if فيكننا الاستغناء عن البلوك ولا نحتاج لـ { و } لذلك , اما اذا اكثر من جملة وجب عليك ذلك ويجب تضمين العبارات المراد تطبيقها في بلوك ....

............

الى هنا نكون قد انتهينا من شرح اساسيات جملة if لكن هنالك عدة طرق لكتابتها


والسلام عليكم ورحمه الله
منكم الدعاء

Bakenam
04-02-2009, 05:31 PM
بسم الله الرحمن الرحيم

إخواني و أخواتي الاعزاء سنقوم إن شاء الله مع بعض بعمل برمجة بسيطة عباره عن اسكربت اخباري
و لكن بإسلوب منظم يسهل علينا تطويره من وقت لأخر

فائدة تنظيم العمل هي عدم ضياع الكود الخاص الاسكربت منا و السماح بتطويره في شكل اعمال اخرى أو تطويره في اصدارات اخرى منه

أولاً و قبل كل شيئ حتى تكون علي درايةو استيعاب كامل لكل الموضوع يجب ان تتعرف علي البرمجة الكائنية
http://traidnt.net/vb/showthread.php?t=628768 (http://traidnt.net/vb/showthread.php?t=628768)


أولاً يجب تكوين رؤية (Vision) للبرمجة قبل البدء و هذه اهم خطوه و المقصود بالرؤية هو ترتيب خطوات العمل قبل البدء و الالتزام بها (مهم) بعد ذلك نبدء في مراحل التنفيذ
و ستكون إن شاء الله كالتالي

تصميم الاسكربت -> تحليل الاسكربت -> تصميم قاعدة البيانات -> برمجة الاسكربت بنأ علي الرؤية التي تم عملها -> اختبار الاسكربت للتعرف علي المشاكل التي قد تواجه مستخدمة ثم عمل حلول لها

Bakenam
04-02-2009, 05:32 PM
السلام عليكم

دورة html
جديدة من الصفر للاحتراف


هنا (http://www.no-exploit.com/forum/forumdisplay.php?f=88)

Bakenam
04-02-2009, 05:35 PM
السلام عليكم ورحمة الله وبركاته.
هنشرح النهاردة إزاي نعمل فورم بسيط لإرسال إيميل
مع الشرح خطوة بخطوة
وكود بكود..
هنسمي الملف أي إسم ..
بس أنا هسميه form_to_email.php
ماشي ؟؟
نبدأ ..
هنبدأ الأول طبعا بوضع

رمز PHP:

<?php
?>

اللي بينهم طبعا هنحط الكود
هنحط ..:

رمز PHP:

if($submit){


طبعا للــتأكد إن الزائر ضغط submit (زر الإرسال اللي هنعمله بعدين)
وبعدين نحط

رمز PHP:

$to="***master@localhost";

$subject="رسالة للإدارة .";


طبعا نغير الإيميل من اللي مكتوب للإيميل الصحيح بتاعنا ...
و غير إسم الموضوع زي ماتحب أنا سميتها رسالة للإدارة .. أوك؟
وبعدين نكتب

رمز PHP:

$time=date("d/m/Y");


عشان ينكتب التاريخ مظبوط عشان تاريخ الرسالة
ممكن تستغني عنه بس هو للفايدة http://traidnt.net/vb/images/smilies/bigsmile.gif ماشي؟؟
الكود ده هنشرحه براحه بعد كوباية شاي ملياانة

رمز PHP:

$mail_from="من:$email n";
$mail_from.="Content-Type: ****/html; charset=utf-8 n";
$message="
الرسالة في : $time<br>
إسم المرسل : $name<br>
البريد : $email<br>
التعليق : $comment
";


براحه كده الشرح
..

رمز PHP:

الرسالة في : $time<br>


رمز PHP:

$_time


ده الوقت اللي إتبعتت فيه الرسالة .. توضيح أكتر مش إحنا فوق عملنا كود خليناه يستورد الوقت من السرفر هفكركم بيه تاني وتالت

رمز PHP:

$time=date("d/m/Y");


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

رمز PHP:

إسم المرسل : $name<br>


رمز PHP:

$name


ماشي ..
ده عشان يجيب إسم المرسل اللي إحنا لسة هنكتب كوده تحت ..
يلا نكمل ..
بقية الأكواد

رمز PHP:

$email


دي بقى عشان تجيب إيميل المرسل ... برضه لسة هنكتبه تحت..
ثم الكود الأخير

رمز PHP:

$comment


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

رمز PHP:

mail($to,$subject,$message,$mail_from);
echo "تم الإرسال";
}else{
echo "هناك خطأ";


أظن مش محتاج شرح ...
بس هشرحه
لو الرسالة صح وتم الإرسال
هيظهر تم الإرسال ..
لو في خطأ ولا حاجة
هيظهر هناك خطأ
يلا نكمل ..

رمز PHP:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="****/html; charset=utf-8" />
</head>
<body>
<form action="<? echo $PHP_SELF; ?>" method="post" name="form" id="form">
<table>
<tr>
<td align="right">إسمك: </td>
<td><input name="name" type="****" id="name" /></td>
</tr>
<tr>
<td align="right">بريدك: </td>
<td><input name="email" type="****" id="email" /></td>
</tr>
<tr>
<td align="right" valign="top">التعليق: </td>
<td><****area name="comment" cols="60" rows="5" id="comment"></****area></td>
</tr>
</table>
<input type="submit" name="Submit" value="أرسل" />
</form>
</body>
</html>

دي بقى الأكواد بتاعة الإرسال والنظام ده
هي ده الفورمات اللي إدينا أوامر الإرسال بتاعتها فوق ..
والسلام عليكووو ..
ويارب تكونوا فهمتم
أنا مجرب الكود
وأرسلت والرسالة وصلت
لو لم يعمل معك
راجع مرة وإتنين وتلاتة
وأتمنى أشوف التطبيقات

Bakenam
04-02-2009, 05:36 PM
بسم الله الرحمن الرحيم

اخواني الكرام

اليكم درس تفعيل موضوع او مشاركة تم اضافتها عن عضو او زائر للموقع
ولنفرض ان لديك سجل زوار وما تحب ان تظهر التواقيع في سجل الزوار الا بعد موافقتك انت

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


رمز Code:
CREATE TABLE `post` ( `id` int(11) NOT NULL auto_increment, `title` varchar(255) NOT NULL default '', `****` varchar(255) NOT NULL default '', `name` varchar(255) NOT NULL default '', `email` varchar(65) NOT NULL default '', `status` int(11) NOT NULL default '0', PRIMARY KEY (`id`)) TYPE=MyISAM AUTO_INCREMENT=46 ;
وما يهمنا هنا هو حقل status وهو من نوع int يعني حقل رقمي والقيمة الافتراضية له 0 صفر وهنا مربط الفرس

ففي كل مره يتم اضافة مدخلات على جدول post يتم تخزين المعلومات ويكون وضع تلك المشاركة والقيمة لها صفر يعني مخفيه

السؤال الآن كيف نخليها مخفيه ؟

انا اقولك !!!


اثناء الاستعلام نحط الامر


رمز PHP:

select * from post where status = 1 order by ID DESC


والترجمه لتلك السطر كالتالي :

اختر select >>>> من from >>>> الجدول post >>>> اين where >>>> الحالة status >>>> يساوي = >>>> 1 >>>>>

اعتقد الآن اصبحت واضحه وضوح الشمس


وبأذن الله راح اكمل الدرس كيف نفعل تلك المواضيع من لوحة التحكم

مثال للكسربت توني مبرمجه

Bakenam
04-02-2009, 05:38 PM
السلام عليكم


ماهو الـ RSS ؟

خدمة RSSهي عبارة عن وسيلة سهلة تمكنك من الحصول على آخر الأخبار فور ورودها على مواقعك
المفضلة على شبكة الإنترنت. فبدلاً من فتح صفحات المواقع والبحث عن المواضيع الجديدة ، فإن خدمة RSS تخبرك بالجديد من أخبار ومواضيع على تلك المواقع فور نشرها.

-------------------------
الدرس

طريقه كود ال rss

شكل الكود


رمز PHP:

<?xml version="1.0" encoding="كود اللغه"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>عنوان الموقع</title>
<de******ion>وصف الموقع</de******ion>
<link>الرابط</link>
<language>رمز اللغه</language>
<lastBuildDate>تاريخ انشاء الموقع</lastBuildDate>
<copyright>الحقوق</copyright>
<docs>موقع الحقوق</docs>
<ttl>عنوان الحقوق</ttl>
<image>
<title>عنوان</title>
<url>رابط الصوره</url>
<link>رابط الموقع</link>
</image>
<item>
<title>عوان</title>
<de******ion><![CDATA[المحتوى]]></de******ion>
<link>الرابط</link>
<pubDate>تاريخ</pubDate>
</item>
</channel>
</rss>

في حال عمل صفحة php يجب تحويلها الى xml عن طريق المود ريدر

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

ارجو ان اكون اوصلت الفكره وطريقه عملها

Bakenam
04-02-2009, 05:40 PM
السلام عليكم ورحمة الله وبركاته .,.
هندرس شرح مفصل لكيفية برمجة موقع كامل ..
يلا ..
متطلبات الدورة الأول كده :-
Apache:
mysql
php
لتحميل الأباتشي:-
سيرفر الجمل :
www.camel.com (http://www.camel.com/)
وبعدين ..
Progammer's Notepad
or
Php Designer 2008
www.mpsoftware.dk/phpdesigner.php (http://www.mpsoftware.dk/phpdesigner.php)
or
www.pnotepad.org/ (http://www.pnotepad.org/)
خلصنا كده مية مية ..
الأدوات بتاعتنا موجودة
...\
الحلقة دي هنعمل الشكل الخارجي وكده يعني ..
نبدأ نفتح البرنامج ..
ونكتب الكود كما في الصور
http://upload.traidnt.net/upfiles/ToY56404.gif (http://upload.traidnt.net/)
ركزت يابني ..؟
طيب مية مية ..
في الصورة نسيت أكمل الكود ..
حطه كده:


رمز PHP:


include './system,./style.css'




مية مية ..
وهنبدأ عمل جديد هيكون سي إس إس ..
هنكتب فيه :
http://upload.traidnt.net/upfiles/S8C57236.gif (http://www.b7st.com/vb)


حلو كده الإستايل رصاصي عسل ..
في خط أسمر تاهوما.
يتبع والشرح الجاي ..
عمل ملف تسجيل دخول وتظبيط ملف سيستم..
و عمل ملف تسجيل خروج ..
و عمل ملف تسجيل

Bakenam
04-02-2009, 05:48 PM
السلام عليكم ...

حقيقه فكره راودتني ... فكره كنت اتمنى انها فعلا تحقق ...

وهي برمجة منتديات مثل الفي بي بس تكون عربيه ومن برمجة عرب ... يعني يجتمع المبرمجون يحاولن يسوونها عشان نستغني عن جون ونسخه ..

لازم نعمل شي احنا العرب ...
يكون مجاااني ..
نرتاح من التراخيص والهم ذا ...

فى هذا الدرس يتم شرح كيفية برمجة منتدى مصغر و هذا الشرح مفيد جدا بإذن الله لحديثى العهد بلغة PHP و من أهم فوائد الدرس شرح كيفية التعامل مع قواعد البيانات و ربط النماذج بالبرمجة و كيفية الدمج بين التصميم والبرمجة
الدرس منقول من http://www.phpeasystep.com (http://www.phpeasystep.com/) و اضافة بعض التفصيلات من عندى لتعم الفائدة على الجميع كما قمت بالاستعانة ببعض افكار الاخ ميدو

نبدأ ... بسم الله

أولا تحديد الملفات التى سوف يتم كتابتها :

create_topic.php
add_topic.php
main_forum.php
view_topic.php
add_answer.php

ثانيا قاعدة البيانات و بنائها :
فى هذا الدرس سنحتاج فقط إلى جدولين و هما forum_question و forum_answer

و يكون بناءهم بهذا الشكل

http://www.phpeasystep.com/imgs/forum_db.gif


رمز PHP:

CREATE TABLE `forum_question` (
`id` int(4) NOT NULL auto_increment,
`topic` varchar(255) NOT NULL default '',
`detail` long**** NOT NULL,
`name` varchar(65) NOT NULL default '',
`email` varchar(65) NOT NULL default '',
`datetime` varchar(25) NOT NULL default '',
`view` int(4) NOT NULL default '0',
`reply` int(4) NOT NULL default '0',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

CREATE TABLE `forum_answer` (
`question_id` int(4) NOT NULL default '0',
`a_id` int(4) NOT NULL default '0',
`a_name` varchar(65) NOT NULL default '',
`a_email` varchar(65) NOT NULL default '',
`a_answer` long**** NOT NULL,
`a_datetime` varchar(25) NOT NULL default '',
KEY `a_id` (`a_id`)
) TYPE=MyISAM;


بهذا نكون انتهينا من بناء جداول قاعدة البيانات التى سيتم تسجيل المواضيع و الردود بها

Bakenam
04-02-2009, 05:50 PM
السلام عليكم هذه دروس php فيديو والله اعجبتني ورتبتها هي للاخ رامي دبدوب بسوالف سوفت واستاذنت منه دروس فيديو وصوت من البدايه الى الاحتراف

www.alm7ben.com/php (http://www.alm7ben.com/php)

لاتنسونا من صالح دعائكم

Bakenam
04-02-2009, 05:51 PM
بسم الله الرحمن الرحيم

السادة الأعضاء اليوم أقدم لكم كيفية عمل سكريبت من برمجتك
يمكنك أستقبال ملفات من زائر الموقع عن طريق أسكريبت من برمجتك
وقد تتنازل عن وضع منتديات فى موقعك , لأن هناك من قاموا بعمل منتديات بغرض رفع ملفات وأشياء أخرى عديدة
نبدأ العمل
يمكنك أستخدام أكواد PHP أتاحة الفرصة لزائر الموقع برفع ملفات الى موقعك,
ويكون ذلك عن طريق أضافة حقل الى نموزج HTML يسمى file يستخدم فى تصفح جهاز زائر الموقع ورفع ملف منة الى موقعك وتستخدم أكواد PHP فى التعامل مع هذة الملفات وفى هذة الحالة لابد أن يحتوى نموزج HTML المستخدم فى رفع الملفات من زائر الموقع على حقل مخفى لكى يحدد الحد الأقصى لحجم الملفات التى يستطيع زائر الموقع أرسالها أليك من خلال النموزج حتى لايقوم زائر الموقع برفع ملفات كبيرة الحجم الى الموقع مما يؤدى الى أهدار المساحة التى يشغلها موقعك على السيرفر حتى تستطيع من خلال هذا الحقل تحديد الحجم الأقصى للملف التى يستطيع زائر الموقع أرسالة أليك وتحديد القيمة الأفتراضية لهذا الحجم ب2ميجا بايت أذا لم تقم أنت بتحديدها , ويتم السماح لزائر الموقع برفع الملفات الى موقعك والتعامل معها كما هو موضح فى المثال التالى
<html>
<head>
<title>رفع الملفات الى الموقع</title>
</head>
<body>
<form enctype="multipart/form-data"acton="<?print$PHP_SELF?>method="post">
<input type="hidden"name="MAX_FILE_AIZE"value="51200">
<input type="file"name="fupload"><br>
<input type="submit"value="أرسال";
</form>
</body>
</html>
وبحفظ الأسكريبت السابق فى ملف السيرفر كصفحة php وأستعراضة فى متصفح الأنترنيت
أخى الزميل عليك بالتطبيق نفس الأسكريبت وأحفظوا ثم شاهد الفرق وأنا موجود أن شاء الله ولكن للعلم لابد ان تعرف كيفية أنشاء أسكريبت ليوفر معلومات عن الملفات التى قام بها زائر الموقع برفعها مثل أسم الملف والمسار الية وحجمة ونوعة وهذا ماسوف يتم اللقاء القادم أن شاء الله وأتمنى الا أكون قد ضيعت وقتكم أخوكم فى الله سالم عزب

Bakenam
04-02-2009, 05:55 PM
http://members.lycos.co.uk/medo22/traidnt/logo.jpg
السلام عليكم ورحمه الله وبركاته ..

نبتدى دورات الوعد للخدمات البرمجية والتصميم فى برمجة PHP
وتقدم الشركة هذه الدورات مجانية 100% ...
المتطلبات ..
برنامج PHPexpert editor ويفضل اصدار 4.3
برنامج الفرونت بيج ويفضل 2003
برنامج appserv الأبتشى
نبتدى على بكرة الله ...
اولا..
نبتدى مع برنامج phpexpert editor 4.3
نبتدى بتعلم دروس insert و Select
اولأ هذه تعامل مع قواعد البينات ..
يعنى مثلأ insert والمعنى هو وضع البينات المطلوب من الأدمن او من اليوزرز فى قواعد البينات حسب الجداول..
يعنى مثلأ
عندك الجداول فى قواعد البينات ..
name
adress
phone
هذا مثأل بسيط ..
عايز انا مثلأ اخلى اليوزر الى يخش يكتب البينات دية طبعأ هتقول هتتخزن فين ..
ودة استخدام قواعد البينات لتسجيلها
الكود

رمز PHP:

CREATE TABLE `test` (
`id` int(4) NOT NULL auto_increment,
`name` varchar(65) NOT NULL default '',
`adress` varchar(65) NOT NULL default '',
`phone` varchar(65) NOT NULL default '',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=0 ;


شرح الكود ..
وهنا احنا بنأمر قواعد البينات من نوع mysql بأن تكريت تيبل بأسم test
ووضع الجداول الى احنا قولنا عليها فى الاول name,adress,phone
طيب انت مش سألتنى منين انا هحط البينات المطلوبة فى فى قواعد البينات ..
ودة ما يسمى بأمر insert
ومعنى كدا انك هتحتاج فورم والفورم هنستخدم فية لو انت مبتدأ يفضل استخدامك للفرونت بيج ..
ولكن لو محترف html مو هتحتاج الفرونت بيج فى شىء ..
طيب نكتب كود html علشان يعمل insert فى قواعد البينات .
ودة الكود.

رمز PHP:

<table width="300" border="0" align="center" cellpadding="0" cellspacing="1">
<tr>
<td><form name="newfrom" method="post" action="creat.php">
<table width="100%" border="0" cellspacing="1" cellpadding="3">
<tr>
<td colspan="3"><strong>Lesson 1 from elw3dinc.com </strong></td>
</tr>
<tr>
<td width="71">Name</td>
<td width="6">:</td>
<td width="301"><input name="name" type="****" id="name"></td>
</tr>
<tr>
<td>adress</td>
<td>:</td>
<td><input name="adress" type="****" id="adress"></td>
</tr>
<tr>
<td>phone</td>
<td>:</td>
<td><input name="phone" type="****" id="phone"></td>
</tr>
<tr>
<td colspan="3" align="center"><input type="submit" name="Submit" value="add"></td>
</tr>
</table>
</form>
</td>
</tr>
</table>


شرح الكود .. وهو بسيط جدأ
اولأ قمنا بعمل الجدول فى html وهو الكود دة

رمز PHP:

<table width="300" border="0" align="center" cellpadding="0" cellspacing="1">


وبعد كدا عملنا أمر الأرسال وهو عن طريق POST

رمز PHP:

<td colspan="3" align="center"><input type="submit" name="Submit" value="add"></td


وقمنا بوضع باقى البينات المطلوبة للأضافة فى قواعد البينات ووضعنا المسار CREAT.php
طيب انت مش سألتنى طيب هيجيب معلومات قواعد البينات ازاى اقولك انا .
اولأ..
هنعمل ملف واكيد معروف فى جميع الأسكربتات وهو كونكت لقواعد البينات. واسمه config.php
ودة الكود الى هيكون فية..

رمز PHP:

$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="test"; // Data**** name

mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");


وطبعأ البينات هتكون معروفه.. وهيه اليوزر نيم والباصورد لقاعده البينات والأسم
نيجى بقى لكود creat.php
وهو لوضع البينات الى اتكتبت فى الفورم فى قاعده البينات وحفظها..

رمز PHP:

include ("config.php");
$name=$_POST['name'];
$adress=$_POST['adress'];
$phone=$_POST['phone'];



$sql="INSERT INTO test(name, adress, phone)VALUES('$name', '$adress', '$phone')";
$result=mysql_query($sql);


if($result){
echo "تمت الاضافة بنجاح";
echo "<BR>";

}

else {
echo "خطأ فى الأرسال الى قاعده البينات";
}


شرح الكود..
اولأ قمنا بأستدعاء بينات قاعده البينات من ملف config.php
الكود: include("config.php");
قمنا بأستدعاء الأنفورميشن المطلوبة من الفورم..

رمز PHP:

$name=$_POST['name'];
$adress=$_POST['adress'];
$phone=$_POST['phone'];


وقمنا بأمر insert لوضعها فى قاعده البينات بلمتغيرات الى اخذنها من الفورم ودة الكود

رمز PHP:

$sql="INSERT INTO test(name, adress, phone)VALUES('$name', '$adress', '$phone')";
$result=mysql_query($sql);


وقمنا بوضع داله if ومعناها (اذا)
وهيه اذا نجح فى الأرسال يقولك تمت الأضافة بنجاح
Else وهيه اذا ما نجح يقول لك خطأ فى الأرسال ..
نكمل الشرح فى وقت اخر لأنى مسافر الحين ..
اتمنى تكونو استمتعوا بلدرس واتمنى ان تكونو فهمته جيدأ

Bakenam
04-02-2009, 05:56 PM
السلام عليكم

كما وعدتكم

في البداية سأتناول قائمة المسجلين في الدورة و لا مانع من طرح أي استفسار للذين لم يحالفهم الحظ

و لكن سيتم التجاوب مع المسجلين بشكل أوضح

القائمة :
1 - Dr.Support
2 - anas_loveless
3 - RbFox
4 - The Matrix
5 - alshakicom
6 - محمد عمارة


و تم إضافة الأخ محمد عمارة لأنه أتوا الأخوان كلهم في نفس الأوقات

على العموم نذهب إلى صلب الموضوع و مقدمة عن لغة CSS

اختصار لكلمة : Cascading Style Sheets

أسلوب عمل لغة CSS

كان موجود منذ سنة 1970مـ

و مع نمو لغة HTML أصبح من الصعب على المتصفحات التعامل مع اللغة لأنهاا تحتوي على الكثير من الأكواد

كمثال لعمل 100 سطر كل سطر يحتوي على كلمة ترايدنت

سيتم عمل كل سطر كالتالي : رمز PHP:

<p><font color="#FF0000"></font></p>


و سيتم تكرار هذه الجملة مائة مرة

و هذه جملة مبسطة فقط لكتاية كلمة ترايدنت باللون الأحمر

فما بالك إذا كان الخط عريض أو مائل أو نوع الخط إلخ..

و إذا قررت التعديل أو اكتشفت أنك غلطت سيتم إعادة كتابة جميع الأكواد مرة أخرى

هذه اللغة توفر عليك العناء فبدلا من تغيير اللون على 100 جملة

تغير على كود CSS و يتغير لون كل الجمل

و ميزة لغة CSS أنهاا تتوافق مع المعايير القياسية W3C

و بإختصار W3C هي منظمة انشرت مؤخرا بصورة كبيرة و هي لعمل جميع صفحات الأنترنت تتوافق مع جميع المتصفحات حيث أن بعض المنتديات على سبيل المثال عندما تدخلها في متصفح الفاير فوكس تجد أن صور الإستايل غير مركبة على بعضها فبذلك صاحب المنتدى لم يطبق المعايير القياسية العالمية

إنتهيت من النبذة و أتمنى إني أفدتكم بالنبذة عن لغة CSS

الآن لرؤية مثال على كود في لغة CSS تستطيعون فتح سورس أي منتدى VB حيث تعتمد منتديات VB على لغة CSS في تصاميمها و بعد فتح الورس ستجدون كود لملف CSS و لمن لا يعرف فتح السورس عن طريق Right Click ثم View Source

بعد أن فتحت سورس ترايدنت ستجد بين وسمي HEAD

هذه الجملة : رمز PHP:

<link rel="stylesheet" type="****/css" href="client******/vbulletin_important.css?v=374" />


و هذا ملف CSS من أصل ملفات CSS في منتديات VB

و مسار هذا الملف في ترايدنت (( كاملا )) لتحميله هو : http://www.traidnt.net/vb/clientscri...tant.css?v=374 (http://www.traidnt.net/vb/client******/vbulletin_important.css?v=374)

بعد الفتح تستطيع رؤوية كود CSS

الآن انتهيت من المقدمة و الدرس الأول و أتمنى إني كفيت و وفيت

و في الدرس القادم سأبدأ في شرح أساسيات CSS

Bakenam
04-02-2009, 05:57 PM
السلام عليكم ورحمة الله وبركاته

تم بحمد الله الانتهاء من الدرس الخامس

الدوال function

وهو عباره عن جزئين

الجزء الاول
http://www.4shared.com/file/73641507..._function.html (http://www.4shared.com/file/73641507/691de401/5_intro_to_function.html)

الجزء الثاني

http://www.4shared.com/file/73642023...function2.html (http://www.4shared.com/file/73642023/48382f9f/5_sql_function2.html)


واتمني التوفيق للجميع باذن الله

ولا اريد منكم غير الدعاء

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

Bakenam
04-02-2009, 05:59 PM
بسم اله الرحمن الرحيم

استكمالا للدرس الاول (http://www.traidnt.net/vb/showthread.php?t=628729)

اليوم الدرس الثاني لتعديل الـcss من خال برنامج الدريم ويفر

http://img209.imageshack.us/img209/9210/47622058mf8.jpg

بعد تطبيق الصوره الموجوده بالدرس الاول

ثوف نتوجه إلي القائمه css و سوف تجدها بهذا الشكل

http://www.3elmdgn.com/dw4ar/dw-2.jpg

اضغط على كلمة body لتغير خطوط الرئيسية ولون خلفية للصفحة و تغير اشياء اخري

http://www.3elmdgn.com/dw4ar/dw-4.jpg

سوف تقم بالتعديل بالشكل الاتي

1 - background = لون الخفيه
2 - color = لون الخط
3 - font = نوع الخط
4 - ****-align = محذات الخط

الان قد انتهينا من تعدي الشكل الخارجي للموقع

لتعديل الهيدر سوف تجد بنفس قائمة الـcss بالموقع كلمة header و الكلمه header h1و سوف نتبع نفس الطريقه السابقه

و لتعدي افوتر ابحث بنفس القائمه عن كلمة footer و كلمة footer p و نفز الامر نفسه حسب رغبتك

لتعديل الكونتنت الاوسط ابحث عن كلمة mine content و نفز نفس الامر

اما الكونتنت الايمن او الايسر فسوف تجده يحمل الاسم sidebar1 و و نغز ما تريد بها

و بالتاكيد في حالة رغبتك بإضافة اي شئ جديد بعض منها سوف تقم بإضافة قوالب css خاصه بها و تقم بالتعديل عليها بنفس الطريقه

ارجو ان يكون الشرح موفق و ان اكون نجحت بإضاح طريقة التعديل علي ملفات الـcss بطريقه اخري من دون الحاجه إلي كتابة الاكواد و في الدرس القادم سوف اضع شرح لطريقة كتابة الاكواد بداخل المف و التعديل عليها في اي وقت

Bakenam
04-02-2009, 06:02 PM
بسم الله الرحمن الرحيم

نبداالدرس الاول و هو تصميم شكل الموقع بإستخدام لغة css

و سيتم الشرح بإستخدام برنامج Adobe Dreamweaver CS3

اولا افتح البرنامج و اختار من القائمه file اختار منها new

ثم تابع الشرح بالصور

http://img209.imageshack.us/img209/9210/47622058mf8.jpg

1 - اختار لغة البرمجه التي ترغب في العمل بها .
2 - اختار من القائمه شكل الصفحه حسب رغبتك .
3 - إختار إذا كنت تحب ان يكون ملف الـcss جزء من الصفحه ام ان يكون صفحه مستقله ( يفضل ان يكون صفحه مستقله )

و ده هيكون شكل الصفحه بعد إختيار شكل الموقع نه يتكون من هيدر + فوتر + كونتنت شمال

http://img89.imageshack.us/img89/3807/26978071ef5.jpg

للتعديل علي اللوان الاساسيه لها طريقتين الاولي كليك يمين ثم page properties

http://img212.imageshack.us/img212/2856/38547658ih4.jpg

1- اختار مجموعة الخطوط و حجم الخط
2- اختار لون الخلفيه و لوك الكتابه
3- في حالة الرغبه بعمل صوره للخلفيه
4- اقي الإختيرات لتعديل ملف الـcss

http://img250.imageshack.us/img250/306/50501564zx4.jpg

1- اختار مجموعة الخطوط التي يكتب بها اللنكات .
2- لاختيار لون كتابة اللنكات .
3- لاختيار شكل كتابة اللنكات و عرضها .

http://img249.imageshack.us/img249/930/24480054ep3.jpg

1- اختيار مجموعة الخط .
2- اختيار حجم و لون المجموعات .

ام الخانه title\encoding لكتابة اسم الموقع بالتايتل بار و اختيار لغة الترميز للصفحه

و بكده يكون انتهي الدرس الاول بتعديلات لغة الـcss للمبتدئين و سوف اطرح بالدرس القدم طرق التعديل علي الملفات بشكل إحترافي بإستخدام الاكواد و في إنتظار التطبيقات

Bakenam
04-02-2009, 06:04 PM
الدخول الى عالم البرمجة وخصوصا المبتدئين
نسأل الله ان يجزيه كل خير عنا و عن جميع المسلمين
الموقع الرسمي

http://www.jeemlang.com/ (http://www.jeemlang.com/)

المنتدى

http://www.jeemlang.com/forum/ (http://www.jeemlang.com/forum/)

كتاب تعريف اللغة

http://www.jeemlang.com/download.php...c27fd3cbea9c71 (http://www.jeemlang.com/download.php?file=e307ef450f92030fcebac5854fc27fd3 cbea9c71)

برنامج الخوارزمي

http://www.jeemlang.com/download.php...e4f37012da9243 (http://www.jeemlang.com/download.php?file=faf56e69df169498643d38538ce4f370 12da9243)

حزمة تحتوي البرنامج وكتاب التعريف والعديد من الامثلة الغير موجودة في الموقع


الرابط الاول

http://www.megaupload.com/?d=10A1REFF (http://www.megaupload.com/?d=10A1REFF)

الرابط الثاني

http://www.2shared.com/file/2537000/36cdfdd4/jeem.html (http://www.2shared.com/file/2537000/36cdfdd4/jeem.html)

الرابط الثالث

http://rapidshare.com/files/72215137/jeem.rar.html (http://rapidshare.com/files/72215137/jeem.rar.html)

Bakenam
04-02-2009, 06:05 PM
السلام عليكم ورحمة الله وبركاته

الكل يعرف محرر zend studio والمكتبة القوية الخاصة بالبي اتش بي

تفضلوا رابط التحميل

http://downloads.zend.com/studio/5.5...dio-5_5_0a.exe (http://downloads.zend.com/studio/5.5.0a/ZendStudio-5_5_0a.exe)


الكيجن
http://upload2.net/page/download/5iV...tudio.rar.html (http://upload2.net/page/download/5iV0Oz8dNVixulB/ZendStudio.rar.html)

Bakenam
04-02-2009, 06:07 PM
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
لقد كان درسنا السابق هو مبادئ الجافا سكربت
ودرسنا اليوم هو أسس الجافا سكربت

الدرس ينقسم إلى عدة أجزاء وهي:
1- الجمل اللغويةSTATEMENT
2- الاعلان عن المتغيرات Declaring Variables
3- تسمية المتغيرات Naming Variables

------|||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||------

1- الجمل اللغويةSTATEMENT

الجمل اللغويةSTATEMENT :حيث يجب إنهاء الجملة بـ( ؛ ) SEMICOLON والذي يشير إلى انتهاء الجملة .
http://www.mbd3wn.com/abdullah/****/lesson2/1.gif

عندما توجد علامة المغلق ({ }) braces فالسطور التي يحتويها المغلق تؤلف مجموعة

http://www.mbd3wn.com/abdullah/****/lesson2/2.gif

------|||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||------

2- الاعلان عن المتغيرات Declaring Variables
http://www.mbd3wn.com/abdullah/****/lesson2/3.gif
يتم الاعلان عن المتغيرات باستعمال الجملة :
1- VAR متغيرة جملية : var mim = " A man, a plan";
http://www.mbd3wn.com/abdullah/****/lesson2/4.gif

2- متغيرة رقمية : var ror = 3;
http://www.mbd3wn.com/abdullah/****/lesson2/5.gif

3- متغيرة منطقية : var nen = true;
http://www.mbd3wn.com/abdullah/****/lesson2/6.gif

------|||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||------

3- تسمية المتغيرات Naming Variables
إن التسمية بلغة J****** حساسة لشكل الحروف CASE-SENSITIVE لذلك فالمتغيرة myCounter تختلف عن المتغيرة MYCounter .
http://www.mbd3wn.com/abdullah/****/lesson2/7.gif

قانون التسمية للمتغيرات : الحرف الأول من التسمية يمكن أن يكون : حرفا . الإشارة $ . الإشارة _(UNDERSCORE).
http://www.mbd3wn.com/abdullah/****/lesson2/8.gif

بإمكانك الاعلان عن المتغيرات بطريقة ضمنية IMPLICITY وذلك بإلغاء الأمرة VAR : A = "";لكن لا يمكن بتاتا عدم الاعلان عن المتغيرات : المثال التالي سيعطي خطأ لأنك لم تعلن عن X أو Y.Var A = X + Y;
http://www.mbd3wn.com/abdullah/****/lesson2/9.gif

كما وعدناكم الدرس راح يكون بالصوت والصورة
وهذا رابط تحيل الدرس
http://www.mbd3wn.com/abdullah/****/lesson2/d.gif (http://www.mbd3wn.com/abdullah/****/lesson2/lesson2.zip)

الحجم : 1.92 م.ب

Bakenam
04-02-2009, 11:03 PM
السلام عليكم ورحمة الله وبركاته


أرجو عدم نقل الدرس بدون ذكر المصدر ورابط الدرس بطريقة واضحة
http://www.montadaphp.net/showthread.php?t=1249 (http://www.montadaphp.net/showthread.php?t=1249)


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

في البداية يلزمنا برمجة ملفين:
1- db.php وهو ملف الاتصال بقاعدة البيانات.
2- repair.php وهو الملف المسئول عن اصلاح جميع جداول قاعدة البيانات.


وسوف أقوم هنا بمناقشة الملفين بالتفصيل
ونبدأ بسم الله

الملف الأول: db.php
كود الملف:

رمز PHP:


<?
/////////////////////////////////////////////////////////////////////////////////
// سكريبت تحسين جداول قواعد البيانات
// برمجة coder@montadaphp.net
// 12/2/2007
// برجاء عدم ازالة الحقوق مع حرية استخدام الأكواد في اي اعمال مجانية او مدفوعة
/////////////////////////////////////////////////////////////////////////////////

// قم بتغيير اعدادات قاعدة البيانات كما تريد
$dbname = "db";
$dbusername = "root";
$dbpassword = "";
$dbserver = "localhost";
// لا تقم بالتعديل بعد هذا السطر

mysql_connect($dbserver, $dbusername, $dbpassword);
mysql_select_db($dbname);
/////////////////////////////////////////////////////////////////////////////////
// سكريبت تحسين جداول قواعد البيانات
// برمجة coder@montadaphp.net
// 12/2/2007
// برجاء عدم ازالة الحقوق مع حرية استخدام الأكواد في اي اعمال مجانية او مدفوعة
/////////////////////////////////////////////////////////////////////////////////
?>

ونأتي لشرح الملف:
في السطور الأول والثاني والثالث والرابع للكود، قمنا بتحديد بيانات قاعدة البيانات، وهي اسم قاعدة البيانات واسم المستخدم للاتصال بها وكلمة المرور واسم سيرفر MySQL على التوالي
في السطر الخامس قمنا باجراء الاتصال بسيرفر قاعدة البيانات عن طريق الدالة mysql_connect() (http://www.montadaphp.net/showthread.php?t=312)
في السطر السادس قمنا باختيار قاعدة البيانات التي سنتعامل معها عن طريق الدالة mysql_select_db() (http://www.montadaphp.net/showthread.php?t=314)
بهذا ينتهي الملف الأول وهو الخاص بالاتصال بقاعدة البيانات


الملف الثاني: repair.php
كود الملف:


رمز PHP:

<?
/////////////////////////////////////////////////////////////////////////////////
// سكريبت تحسين جداول قواعد البيانات
// برمجة coder@montadaphp.net
// 12/2/2007
// برجاء عدم ازالة الحقوق مع حرية استخدام الأكواد في اي اعمال مجانية او مدفوعة
/////////////////////////////////////////////////////////////////////////////////
require('db.php');
?>
<html dir="rtl">
<head>
<meta http-equiv="Content-Type" content="****/html; charset=windows-1256" />
<****** language="**********">
function checkAll(form){
for (var i = 0; i < form.elements.length; i++){
eval("form.elements[" + i + "].checked = form.elements[0].checked");
}
}
</******>
</head>
<body>
<?
function redir($msg, $url)
{
echo "<p align=\"center\">";
echo "<table width=\"70%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">";
echo "<tr><td>&nbsp;</td></tr>";
echo "<tr><td>$msg</td></tr>";
echo "<tr><td>&nbsp;</td></tr>";
echo "<meta http-equiv=\"*******\" content=\"1;url=$url\">";
echo "</p>";
}

if(!isset($_POST['submit']))
{
$tables = mysql_query("SHOW TABLE STATUS");
echo "<form name=\"form1\" method=\"post\" action=\"repair.php\"/><table width=\"80%\" cellpadding=\"5px\" border=\"1\" style=\"border-collapse: collapse\" bordercolor=\"#0B4250\">";
echo "<tr><td colspan=\"5\">تحسين الجداول</td></tr>";
echo "<tr><td colspan=\"5\" style=\"font-size:8pt;\">اختر الجداول التي تريد تصليحها وتحسينها ثم اضغط تحسين</td></tr>";
echo "<tr><td>الجدول</td><td class=\"table_sub\">المساحة</td>
<td>الحالة</td>
<td>
<input type=\"checkbox\" name=\"check_all\" checked=\"checked\" onClick=\"checkAll(this.form)\"/></td></tr>";
while($table = mysql_fetch_array($tables))
{
$size = round($table['Data_length']/1024, 2);
$status = mysql_fetch_array(mysql_query("ANALYZE TABLE `$table[Name]`"));
echo "<tr><td width=\"20%\">$table[Name]</td><td width=\"40%\">$size كيلوبايت</td><td width=\"25%\">$status[Msg_****]</td><td width=\"5%\"><input type=\"checkbox\" name=\"check[]\" value=\"$table[Name]\" checked=\"checked\" /></td></tr>";
}
echo "<tr><td colspan=\"5\"><center><input type=\"submit\" name=\"submit\" value=\"تحسين\" /></center></td></tr>";
echo "</table></form>";
}
else
{
if(!$_POST['check'])
{
redir("من فضلك اختر جدول واحد على الأقل ليتم تحسينه..", "index.php?com=repair&do=optimize");
exit;
}
$tables = $_POST['check'];
echo "<table width=\"80%\" cellpadding=\"5px\" border=\"1\" style=\"border-collapse: collapse\" bordercolor=\"#0B4250\">";
echo "<tr><td colspan=\"5\">تحسين الجداول</td></tr>";
foreach($tables as $table)
{
$query = mysql_query("REPAIR TABLE `". $table . "`");
$que = mysql_fetch_array($query);
echo "<tr><td width=\"20%\">";
echo "تم تصليح الجدول \"" . $que['Table'] . "\" بنجاح";
echo "</td></tr>";
}
echo "<tr><td colspan=\"5\" style=\"height:5px\"></td></tr>";
echo "</table>";
redir("تم تحسين الجداول بنجاح..", "repair.php");
}
?>
</body>
</html>
<?
/////////////////////////////////////////////////////////////////////////////////
// سكريبت تحسين جداول قواعد البيانات
// برمجة coder@montadaphp.net
// 12/2/2007
// برجاء عدم ازالة الحقوق مع حرية استخدام الأكواد في اي اعمال مجانية او مدفوعة
/////////////////////////////////////////////////////////////////////////////////
?>

ونأتي لشرح الكود:


رمز PHP:

require('db.php');


كود ادراج ملف الاتصال بقاعدة البيانات عن طريق الدالة require() (http://www.montadaphp.net/showthread.php?t=38)



رمز PHP:

<****** language="**********">
function checkAll(form){
for (var i = 0; i < form.elements.length; i++){
eval("form.elements[" + i + "].checked = form.elements[0].checked");
}
}
</******>


هذه الدالة بلغة جافاسكريبت ********** وهي تقوم باختيار /الغاء اختيار جميع الجداول، حيث تقوم باختيار جميع صناديق الاختيار المقابلة لجميع الجداول بدلا من اختيارها واحدا تلو الآخر



رمز PHP:

function redir($msg, $url)
{
echo "<p align=\"center\">";
echo "<table width=\"70%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">";
echo "<tr><td>&nbsp;</td></tr>";
echo "<tr><td>$msg</td></tr>";
echo "<tr><td>&nbsp;</td></tr>";
echo "<meta http-equiv=\"*******\" content=\"1;url=$url\">";
echo "</p>";
}


هذه الدالة بتحويل المتصفح الى صفحة أخرى مع عرض رسالة ما لمدة ثانية قبل التحويل، وتصلح للاستخدام لعرض نتيجة حدث معين يقوم به المستخدم ثم الانتقال الى صفحة أخرى...



رمز PHP:

$tables = mysql_query("SHOW TABLE STATUS");


الاستعلام عن جميع الجداول الموجودة في قاعدة البيانات


رمز PHP:

while($table = mysql_fetch_array($tables))


استعراض نتائج الاستعلام عن طريق حلقة تكرار while


رمز PHP:

$size = round($table['Data_length']/1024, 2);


جلب حجم الجدول بالكيلوبايت وتقريبه الى رقمين عشريين بعد الفاصلة عن طريق الدالة round


رمز PHP:

$status = mysql_fetch_array(mysql_query("ANALYZE TABLE `$table[Name]`"));


الاستعلام عن حالة الجدول الحالي، وتكون نتيجة الاستعلام:
Table is already up to date
أو OK في حالة عدم وجود مشاكل بالجدول
أو رسالة الخطأ في حالة وجود خطأ بالجدول


رمز PHP:

$query = mysql_query("REPAIR TABLE `". $table . "`");


استعلام اصلاح وتحسين الجدول


رمز PHP:

redir("تم تحسين الجداول بنجاح..", "repair.php");


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

بهذا نكون قد انتهينا من مناقشة الكود
والملفين كاملين بالمرفقات
repair.php (http://www.montadaphp.net/attachment.php?attachmentid=359&d=1195439642) | db.php (http://www.montadaphp.net/attachment.php?attachmentid=360&d=1195439653)


أرجو عدم نقل الدرس بدون ذكر المصدر ورابط الدرس بطريقة واضحة
http://www.montadaphp.net/showthread.php?t=1249 (http://www.montadaphp.net/showthread.php?t=1249)

Bakenam
04-02-2009, 11:05 PM
السلام عليكم و رحمة الله وبركاته

اخواني اضعاء هذا المنتدى كيف حالكم

اليوم بدي اخر مساعدة ان شاء الله حتى انتهي من السكربت بشكل كامل واضعه للأعضاء

ليستفيدو منه ول يضعو ملاحظاتهم عليه

لكن لقي عليي شغلتني

الأولى :

هي اني اريد طريقة تمكنني بالتحكم بالقوائم يعني اضيف قوائم جديدة يعني مثل نظام البلوكات في المجلات (ماك بورتال - نيوك و غيرها ) .

الثانية :

انا تصميم بسيط مؤلف مني هيدر و فوتر اريد احد من الخبراء يساعدني بوضع تظام تعديل القوالب فقط اريد التعديل على ( الهيدر و الفوتر ) و اريد التعديل على اسم الموقع فقط لا غير .

ارجو من الخبراء إفادتي لكي انتهي من عملي هذا

وانا اقولها للجميع لول هذا الصرح الكبير لما استطع انجاز قسم كبير من السكربت مع انه بسيط ولكن كبداية جيد جداً

اتمنى ان يساعدني احدكم ارجو ذلك و لكم جزيل الشكر .

Bakenam
04-02-2009, 11:08 PM
بسم الله الرحمن الرحيم

درس اليوم هو switch

تعد ال switch شبيهه ل IF
اذا كانت تريد خيار واحد فقط من عدد خيارات تستخدمها
فهي تغنيك عن سلسله طويله من if...elseif...else
تكتب ال switch بهذه الصيغه

رمز Code:

switch ($a){case 1: echo "الرقم هو 1"; break;case 2: echo "الرقم هو 2"; break;default: echo "الرقم ليس 1 او 2";}



ضيغه الطلب تكون بالشكل التالي
رمز Code:
http://www.3by1.com?a=1a: switchهو متغير موجود في ال?: الاعلام بان الذي بعدها هو متغير
تم تعريفها ب
رمز Code:
switch ($a)
ثم يفتح لها قوس
ال switch تحمل متغير واحد وهو $a (تستطيع تسميته ما تريد) ويتم استقباله من الرابط
في حال تم وجود ما يوافق المتغير في case يتم اخذه ويتم التوقف بهذا الكود break;وهو كود القطع
في هذه الحاله يتم الذهاب الى نهاية ال switch اي بعد القوس ويتم قرائه ما بعده بشكل طبيعي
عدم وضع break له نتايج سيئه جدا
لو افترضنا انه لدينا switch بعدد 200 خيار وجميعها بدون break ماذا سوف يحدث
الذي سوف يحدث هو
في حال كان الخيار هو رقم 4 جميع الخيارات التي بعده سوف تنفذ ولن يعطي الcase اي اعتبار
وذلك لانة يبحث عن break فهي مرادف ل case
يعني اختر توقف بشكل منطقي (انت تختار بين مجموعه من الملابس فحين تجد ما تريد تتوقف عن البحث )

بعض الاشخاص يقوم بكتابه switch بهذه الطريقه
رمز Code:

switch ($a)
{
case "1":
{
echo "الرقم هو 1";
break;
}
case "2":
{
echo "الرقم هو 2";
break;
}
default:
echo "الرقم ليس 1 او 2";
}

الاقواس التي باللون الاحمر
او علامات التنصيص باللون الاخضر
لن اقول ان البرنامج لن يعمل لكن ليس هناك حاجه لها غير زياده طول الكود

والله الموفق

المصدر http://www.3by1.com (http://www.3by1.com/vb)

Bakenam
04-02-2009, 11:09 PM
كثير منا لا يعلم الكثير عن لغات التصميم مثل php & asp و ايضن كثير ما نسمع عن التصميم بإستخدام css بدلا من افوتو شب او ابرامج الاخره

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

و سوف يكون شرح مدعم بالصور و سيشمل : ( css & mysql & php & asp )

و كل ما ارجوه هو تجاوب الاعضاء معي و تطبيق الامثله كي اواظب علي إضافة الدروس .

و سوف ابدء اول الدروس غدا 22/11/2007 بعد ان اتعرف علي مدي تجاوب الاعضاء معي

Bakenam
04-02-2009, 11:11 PM
السلام عليكم ورحمة الله وبركاتة

كيفكم حبايبي صدق وحشتوني

انتهينا بالوحدة الماضية من التعرف على لغة البرمجة PHP وتعلمنا كيفية استخدامها وتعلمنا الكثير والكثير

والان حان الوقت لجعل موقعنا اكثر دايناميكية واظهار القوى الحقيقية في هذه اللغة , فأذا كانت لديك

بعض الخبرة في قواعد البيانات او لم تكن لديك اي خبرة بها فستتعرف على ماهية ال MySql

وكيف يمكن استخدامها في PHP فهنا ستتعلم كيف تجعل حياتك اسهل مع هذه اللغة
(بأمكانك شكري في وقت لاحق) http://www.traidnt.net/vb/images/smilies/bleh.gif

حسنا سنأخذ في هذه الوحدة :

1- فهم قواعد البيانات Mysql
2- عرض البيانات بأستخدام Mysql
3- ربط قواعد البيانات من موقعك الشخصي
4- وضع البيانات في قاعدة البيانات من خلال موقعك الشخصي
5- والكثير الكثير http://www.traidnt.net/vb/images/smilies/cupidarrow.gif

لنأخذ خلفية بسيطة عن قواعد البيانات وطريقة كتابة اكوادها وبنية قواعد البيانات:

MySql هي نظام علاقات قواعد البيانات, أي ان المعنى الاساسي انها تمكنك من تخزين
قطاعات من البيانات في مساحات منفصلة عن بعضها البعض وربط هذه المساحات ببعضها البعض.
وبأمكانك تخزين اي شيء تريد في قواعد البيانات مثل دفتر مواعيد كامل والكثير الكثير.

أوامر الـMySql : يمكنك كتابتها بالعديد من الطرق ومنها Prompt اي من خلال الـDos .

بنية الـMySql البنية الاساسية لقواعد البيانات تكون على شكل :
* Tables : جداول
* Fields :حقول

لأن الـMySql نظام علاقات بين قواعد البيانات فأنها تسمح لك بوضع المعلومات بداخل الجداول
او مساحات متصله بشكل وثيق لتخزين المعلومات بها,على سبيل المثال الحقل الاول نضع به الاسم الاول
وحقل اخر نضع به الاسم الاخير والحقول يمكنها تخزين انواع متعددة من البيانات مثلا نصوص او ارقام والكثير

ومثال اخر تخيل بأن لديك جدول وهذا الجدول يحتوي على اسم وعنوان ورقم لمستهلك وجدول اخر يخزن به
رقم المستهلك ويوجد به قائمه من الطلبات لهذا المستخدم في هذا النظام الذي يدعى one:many
وهذا يعني ان لدينا مستخدم واحد لدية الكثير من الطلبات فنأخذ رقم هذا المستخدم من الجدول
الذي قمنا بوضع معلوماته به ونضع هذا الرقم امام كل طلب تم شراءه من خلال هذا المستخدم.

لنتعرف الان على انواع تخزين المعلومات في قواعد البيانات:
الانواع الرقميه :

TINYINT يحتوي على 255 رقم وليس خانة (-128 الى 127)

SMALLINT يحتوي على 65535 رقم وليس خانة (-32768 الى 32767)

MEDUIMINT
(-838608 الى 838607)


INT الرقم كبير جدا

INTEGER

BIGINT الرقم كبير جدا

الانواع العشريه :

FLOAT

DOUBLE

REAL

DECIMAL

NUMERIC

الوقت والتاريخ :

DATE
YYYY-MM-DD

TIME
HH-MM-SS

DATETIME

TIMESTAMP

YEAR

النصوص العاديه :

CHAR وهو لحجز 255 حرف يبدا من 0 وينتهي بـ 255

VARCHAR خاصيتها تقوم بحجز الاحرف التي يقوم بأستهلاكها المستخدم وتتسع لـ 255 حرف ايضا

الكتابات و ( BLOB ) :

TINYBLOB

TINY****

BLOB مثل ال**** ولكنه حساس لحالة الاحرف

**** يمكنه استيعاب ما يقارب 65535 حرف

MEDUIMBLOB

MEDUIM**** يمكنه استيعاب ما يقارب16.777.216 حرف

LONGBLOB

LONG**** يمكنه استيعاب ما يقارب 4.294.967.295 حرف

الخيارات والتعدديه:

ENUM
حالة من قيمتين مثل الجمل الشرطية جوابها TRUE او FALES

رمز PHP:

enum('male','female')


SET

الان لننتقل الى كيف يمكننا استخدام هذه الانواع وكيف نختار نوع الحقل الصحيح:

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

لنقم الان بالتعرف على صفات الحقول في قواعد البيانات ونبدأ بـ

1-نوع البيانات المدخلة للحقل

1- هل الحقل سيحتوي على احرف وارقام ؟
الجواب : اذا كان الجواب نعم,سنحتاج الى احد الانواع التالية:
char,varchar,****,tiny****,medium****,long****,
blob,tinyblob,mediumblob,longblob

2- كم عدد الاحرف التي نحتاجها؟
- 0-255 : استخدم varchar اذا كنت تريد ان تحذف المسافات بين الاحرف او وضع قيمة افتراضية
استخدم tiny**** اذا كنت لاتهتم الى المسافات او القيم الافتراضية او ان النص التي تريده
لا يتحسس الى حالة الاحرف اذا كانت كبيرة او صغيره.
استخدم tinyblob اذا كنت لا تهتم في المسافات او القيم الافتراضية او حالة الاحرف.

- 256-65536 : استخدم **** اذا كان النص لا يهتم الى حالة الاحرف
استخدم blob اذا كان يهتم بحالة الاحرف

- 65537-1677215 : استخدم meduim**** حالة الاحرف غير مهمه
استخدم mediumblob حالة الاحرف مهمه

اكبر من ذلك استخدم long**** او longblob

واذا كان الجواب على سؤالك الاول بـ لأ
- اذا كنت تريد تخزين الوقت و / او التاريخ استخدم timestamp
- اذا كنت تريد تخزين الوقت فقط استخدم time
- اذا كنت تريد تخزين التاريخ فقط استخدم date
- اذا كنت تريد تخزين السنة فقط استخدم year

واذا كان جوابك هو لا ولكنك تريد تخزين الارقام استخدم احد التالية :

- tinyint
(-127 الى 127 )
-smallint
(-32768 الى 32767)
-mediumint
(-8388608 الى 8388607)
اذا كان العدد اكبر من ذلك استخدم int او bigint

والباقي تستخدم بنفس الاستخدام وسنأتي لهم لاحقا واحده واحده..

لنكمل مسيرتنا في التعرف على انواع الحقول ولنذهب الى ..

2- null/not null فارغ او غير فارغ

السيرفر الخاص بـMySql يحتاج الى معرفة هل هذا الحقل الذي ستضع به المعلومات هل سيكون فارغا ام لا.
وبامكانه تعريفة ذلك عن طريق كلمة null او كلمة not null
وعليك معرفة بأن القيمة صفر تختلف عن null وذلك يعني انه اذا وضعت القيمة صفر انه لا يساوي القيمة null

اذا كان الحقل قد تم تعريفة على انه not null ولم يقم المستخدم بوضع اي قيمة به فستقوم MySql
بوضع القيمة صفر بداخلة وذلك تافديا لأي خطأ ممكن ان يحدث .

لنقم الان بالانتقال لشيء جديد وهو الادلة او الفهارس هل تذكر بالمصفوفات شيء يسمى الفهرس او المفاتيح..

Indexes : تستخدم الادلة او الفهارس لتسريع البحث عن المعلومات في الاعمدة المخصصة بها.
كيفية استخدامها وتتم على النحو التالي:
تخيل بأن لديك غرفة بها اكوام والعديد من الاكوام من الايصالات التي تحفظ بها معلومات الشراء
الذي قمت بها في حياتك كاملة .
وانك تريد البحث عن وصل بداخل هذه الاكوام المكومة يعود تاريخة الى سنة 2000
ستريد الى العديد من الايام للبحث عن هذا الوصل حتى تستطيع ايجاده.
حسنا لماذا لا نقوم بترتيب هذه الوصولات حسب السنوات فكل مجموعه من الوصولات ترتب حسب السنة
مثلا سنة 2000 لوحدها وسنة 2001 لوحدها حسنا لنرى الان اذا كنا نستطيع ترتيب الوصلات حسب المحلات
فهذا سيجعل عثورك على الوصل المراد سهلا جدا في المره القادمة اليس ذلك صحيحا ؟..

حسنا تصور الان بان كل هذه المعلومات تم تخزينها في درجك الخاص حسب السنوات وحسب المحلات
وحسب الارقام الموجوده على الوصولات وتريد ان تقوم بأخذ هذه الوصولات ماذا لو كان لديك 10000 وصل
وتريد ان تبحث عنه بينهم حسنا اجلس على الكرسي واخلع حذائك لأنها ستكون عبارة تكرار ^^

بأستخدام MySql يمكننا البحث عن ما نريده بسرعه عالية وهذا هو استخدام الفهارس indexes او المفاتيح

في المثال السابق قمت بترتيب الوصولات حسب السنة لو قمت بتخزينها في قاعدة البيانات الـ indexes سيكون
year والمفتاح الاخر الذي هو خاص بالمحلات سيكون مثلا category .

MySql يتطلب على الاقل index واحد في كل جدول وعادتا ما نستخدم الPrimary Key او Unique
(انتظر لا تتفاجأ من هذه المصطلحات فهي سهلة للغاية) وهذا سيساعد على ابقاء المعلومات منفصلة
وهذا الحقل يجب ان يكون not null وunique (معناها فريد اي لايوجد منه سوا واحد) على سبيل المثال
(رقم الزبون ID ) لأبقاء كل زبائننا منفصلة عن الزبائن الاخرى وايضا مثل الارقام الجامعية.
مثلا لو كان لدينا شخصين بأسم محمد فالذي سيجعلهما مختلفين هو الرقم الخاص بهم .

في الMySql خاصية تسمح لك بأضافة واحد على رقم الحقل مثلا كان لديك تعداد لحقول معينة
او لأسماء الزبائن اخر عدد وصل له التعداد هو 90 وقمت بأضافة زبون جديد فسيكون رقمه 91
ويحدث ذلك بمساعدة طريقة تسمى auto_increment اي التعداد الاوتوماتيكي او الآلي.

لنتعرف الى
Unique : معناها بالعربي (فريد من نوعة) وعند اختيار هذه الخاصية لأحد الحقول فتأكد بأنه لن يكون هناك
اي تشابه مطلقا حتى لو كان هنالك حقل اخر يشابه هذا الحقل مثل رقم الزبون

Auto Increment : لنقل بأن لديك حقل وتريده ان يتزايد بشكل تلقائي عندما تقوم بوضع قيمه جديده به
مثل رقم الزبون ايضا فهذه الخاصية تقوم بأضافة واحد الى اخر رقم وصل اليه العد
او مثلا ارقام عضويات الاعضاء في المنتديات فكل عضو يحمل رقم يختلف عن العضو الاخر ^^

يكفي الى هذا الحد من الكلام المطول عن قواعد البيانات وماهيتها واستخداماتها وانواع الحقول بها

انتهى درسنا لهذا اليوم وكن واثقا انه اذا فهمت هذا الدرس جيدا ستسهل عليك امور كثيره جدا

حاول قرائته وفهمه الكثير من المرات وحاول ان تقوم بقراءة مواضيع اخرى عن قواعد البيانات
فهي بحر واسع جدا

اتمنى لكم الفائدة وانتظروني في الدرس القادم فهو تطبيق عملي وسيتطلب فهم هذا الدرس جيدا قبل البدء به

والسلام عليكم ^^

ملاحظة: للأستفسارات ضعها هنا في هذا الموضوع ...

Bakenam
04-02-2009, 11:26 PM
السلام عليكم ورحمة الله وبركاتة

كيف الحال حبايبي ان شاء الله تكونوا بخير

اخذنا في الدرس السابق ما يسمى بالArray او المصفوفات

وتعلمنا طريقة كتابتها وطريقة طباعة بعض منها

وسنتعلم في هذا الدرس بعض من دوال المصفوفات وبعض من طرق طباعتها

لنقل بسم الله ولنبدأ الدرس

عنوان درسنا لهذا اليوم:



دوال المصفوفات



اولا لنقم بتعلم طريقة طباعة المصفوفة

لنقم ببناء مصفوفة بسيطة مثلا هذه


رمز PHP:

<?php
$table1=array("husband"=>array("firstname"=>"opaida","lastname"=>"younis","age"=>"22"),
"wife"=>array("firstname"=>"mai","lastname"=>"hakem","age"=>"20"));

?>

لنقل بأننا نريد طباعتها فما هي الطريقة

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


رمز PHP:

print_r (array);


سنقوم بوضع المتغير الذي انشأنا به المصفوفة وهو

$table1

بدلا من كلمة array

ليصبح الكود بهذا الشكل


رمز PHP:

<?php
$table1=array("husband"=>array("firstname"=>"opaida","lastname"=>"younis","age"=>"22"),
"wife"=>array("firstname"=>"mai","lastname"=>"hakem","age"=>"20"));
print_r ($table1);
?>

ستلاحظ عند تشغيل الكود في المتصفح بأن هذا الذي سيظهر لك


رمز PHP:

Array ( [husband] => Array ( [firstname] => opaida [lastname] => younis [age] => 22 ) [wife] => Array ( [firstname] => mai [lastname] => hakem [age] => 20 ) )


هل تريد ان يظهر الكود بصورة ارتب حسنا

سنستخدم هنا الكود <pre> وهو احد اكواد الhtml لننظر الى كيفية عملة

قم بكتابة الكود التالي في محرر الاكواد

http://www.3baer.com/php-les/les8/1.jpg


هل رأيت كيف قام بترتيب الاكواد بصورة جميلة وهذه هي المصفوفات متعددة الابعاد ...

انتهينا من طريقة الطباعة والان لننتقل الى الدوال وسأقوم بوضع بعض الدوال وليست كاملة

لأنها كثيرة جدا ويمكنكم ان تبحثوا بصفحات الانترنت فهناك الكثير منها هنا www.php.net (http://www.php.net/)



دوال المصفوفات



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

واول دالة هي :
1-sort :
*استخدامها : تستخدم لترتيب المصفوفة.

*طريقة كتابتها :

رمز PHP:

sort(array);


*مثال عليها :

http://www.3baer.com/php-les/les8/2.jpg

قم بكتابة الكود بالصورة السابقة وانظر الى الية عمل هذه الدالة

*دوال اخرى مثلها:
1-

رمز PHP:

arsort(array);


2-

رمز PHP:

rsort(array);


3-

رمز PHP:

asort(array);


جرب هذه الدوال واقم بالتعرف على الية عملها بنفسك ^^

وهذه مصفوفة لتقم بالتجربه عليها ..


رمز PHP:

$table1=array("husband" => array("firstname"=>"Albert",
"lastname"=>"Einstein",
"age"=>"35"),
"wife" => array ("firstname"=>"Mileva",
"lastname"=>"Einstein",
"age"=>"30"));


ثاني الدوال هي:

2-دالة shuffle

*استخدامها : تستخدم في ترتيب العناصر بالمصفوفة عشوائيا

*طريقة كتابتها

رمز PHP:

shuffle(array)


*مثال عليها :


رمز PHP:

<?php

$arr2 = array(12,5,30,14,100);

shuffle($arr2);
foreach ($arr2 as $x){
echo $x;
echo "<br>";
}

?>

لوقمت بطلب هذا الكود في المتصفح وقمت بتحديث الصفحة ففي كل مره تحدث الصفحة سيتغير مكان الارقام..

3- دالة array_push

*استخدامها : عند حاجتك لأضافة عنصر جديد للمصفوفة تستطيع ذلك عن طريق هذه الدالة

*طريقة كتابتها :

رمز PHP:

array_push (array,العنصر);


*مثال :

رمز PHP:

array_push ($arr2,10);
sort($arr2);
for ($i=0 ; $i<6; $i++ ){
echo $arr2[$i];
echo "<br>";
}


4- الدالة array_count_values() :

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

*طريقة كتابتها ومثال عليها :

http://www.3baer.com/php-les/les8/3.jpg


5- الدالة array_walk :

* استخدامها : تستخدم اذا كان لديك مصفوفة رقمية وتريد زيادة مثلا العدد 1 الى الارقام الموجوده بالمصفوفة
فيتم ذلك عن طريق هذه الدالة لنى الارن طريقة عملها ..

* مثال :

http://www.3baer.com/php-les/les8/4.jpg


افتح الملف بالمتصفح وقم بالنظر الى ما قام بفعله ..


6- الدالة array_sum :

استخدامها : تستخدم عند حاجتنا لجمع ما بداخل المصفوفة

وتكتب

رمز PHP:

array_sum(array);


مثال بسيط


رمز PHP:

<?php

$arr2 = array(12,5,30,14,100,1,12,30,30);

echo array_sum($arr2);

?>

6- الدالة array_search

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


رمز PHP:

<?php


$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');

echo $key = array_search('green', $array);

echo "<br>";

echo $key = array_search('blue', $array);


?>

قم بتجربة الكود في المتصفح وانظر لألية عملة..

7- array_flip:

ومن اسمها ستعرف بأنها تقوم بقلب العناصر الى مفاتيح والمفاتيح الى عناصر

انظر لهذا المثال هنا ..


رمز PHP:

<?php
$name = array('Stu1'=>'hashem','Stu2'=>'mohammed',
'Stu3'=>'mohammed',
'Stu4'=>'Islam', 'Stu5'=>'emad',
'Stu6'=>'Waled','Stu7'=>'Alaa');


print_r(array_flip($name));
?>

8- الدالة array_intersect_assoc:
تستخدم هذه الدالة بوضع مصفوفتين داخلها وتقوم بالتأكد من مطابقة المفتاح والعنصر بأنهما متطابقان تماما
وعند طباعتها تقوم بأظهار المفاتيح والعناصر المتطابقة تماما انظر للمثال...


رمز PHP:

<?php
$name = array('Stu1'=>'hashem',
'Stu2'=>'mohammed',
'Stu3'=>'mohammed',
'Stu4'=>'Islam',
'Stu5'=>'emad',
'Stu6'=>'Waled',
'Stu7'=>'Alaa');

$name1 = array('Stu0'=>'hashem',
'Stu2'=>'Mohammed',
'Stu3'=>'Mohammed',
'Stu4'=>'Islam',
'Stu5'=>'emad',
'Stu6'=>'Waled',
'Stu7'=>'Alaa',
'Stu8'=>'Amjad');


print_r(array_intersect_assoc($name,$name1));
?>

قمت بعرض بعض الدوال في هذا الدرس وهناك الكثير منها ايضا للنظر اليها ولطريقة عملها يمكنكم

زيارة هذا الموقع فهناك الكثير منها http://www.php.net/manual/en/ref.array.php (http://www.php.net/manual/en/ref.array.php)

انتهينا تقريبا من دوال المصفوفات ومن معرفة طريقة عملها

اتمنى ان اكون قد وفقت في الشرح وان تكونوا قد استوعبتم كيفية عمل الدوال

وفي مشاركتي القادمة سنكمل ما بدأنا به بتطبيق عملي على المصفوفات وللأنتقال الى قواعد البيانات

والسلام مسك الختام ^^

Bakenam
04-02-2009, 11:28 PM
السلام عليكم ورحمة الله وبركاتة

كيفكم حبايبي ان شاء الله تكونون بألف خير

درسنا اليوم بيكون عن المصفوفات او Arrays

اذا عنوان الدرس هو :



المصفوفات (Arrays)



اول شيء سيهمنا التحدث في هذا الدرس هو :

ما هي المصفوفات ؟

لقد تعلمنا سابقا عن ماهية المتغيرات وكيفية استخدامها ولكن ماذا لو احتجت لتعيين اكثر من قيمة
لهذا المتغير ؟ وهذه هي المصفوفات يا صديقي بكلمات بسيطة هي مجموعة من المعلومات
يكون لكل معلومة مفتاح (keys) خاص بها ويتم ترتيبها بداخل متغير واحد فقط.

لنقل بأنك لم تفهمها بعد فالنذهب الى عالمنا خارج هذه الشاشة ولننظر لهذا المثال:

على سبيل المثال كنت جالسا في احد المطاعم وقد رايت احد الاشخاص يجلس على طاولة وهذا الشخص
من المؤكد انه لديه العديد من المعلومات الخاصة به مثلا اسمه الاول واسمه الثاني وعمره فالنقل بأنك تريد
وضع هذه المعلومات في متغيرات فستحتاج الى ثلاثة متغيرات صحيح مثلا:

رمز PHP:

$firstname
$lastname
$age


الان انت ترى بأن زوجته جالسة بجواره على نفس الطاولة ولديها ايضا نفس المعلومات اسمها الاول واسمها الثاني وعمرها حسنا لو اردنا ان نضعها داخل متغيرات بهذا اصبح لدينا كم هائل من المتغيرات

ومن هنا اتت فكرة المصفوفات..

فأذا وضعنا المعلومات السابقة بداخل جدول سيكون شكلة كالتالي مثلا :

http://www.3baer.com/php-les/les7/1.jpg

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

الان لنتعلم انواع المصفوفات وهي تقسم الى نوعان المصفوفات الرقمية والمصفوفات الحرفية
والمصفوفات الرقمية تعتبر الاساس ولكن الاثنتين يؤدين نفس الغرض منهن..

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

لنتعلم الان طريقة كتابتها >>

http://www.3baer.com/php-les/les7/2.jpg

سهلة جدا اليس كذلك ^^

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

http://www.3baer.com/php-les/les7/3.jpg

سهلة جدا ولكن تحتاج الى القليل من التركيز والمتابعة ^^

والان ماذا لو اردنا تعبئة المصفوفة بمجموعة ارقام مكونه من 1 الى 10 مثلا؟؟

سيكون صعبا ان تقوم بكتابة كود المصفوفة 10 مرات ولكن ماذا لو استخدمت احدى عبارات التكرار^^

http://www.3baer.com/php-les/les7/4.jpg

جميل^^

لحظة ماذا لو اردنا تغيير احد عناصر المصفوفة الى عنصر اخر

http://www.3baer.com/php-les/les7/5.jpg

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

حاول ان تقوم بطباعة جميع القيم التي خصصناها في المصفوفة من المفتاح رقم صفر الى المفتاح رقم 9

وانظر ماذا ستطبع ..

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

سأجيب عن هذا السؤال لتنظر الى الكود التالي وسأشرحه بعد النظر اليه..

http://www.3baer.com/php-les/les7/6.jpg

لنقم بشرح الان ما سبق

اولا قمنا بتعيين القيم من واحد الى 11 في المصفوفة y ومن ثم قمنا بطلب عدد القيم الموجوده في
المصفوفة عن طريق الدالة count وقمنا بطباعتها ومن ثم قمنا بوضع القيم
في عبارة تكرار لتقوم بطباعتها واحده بعد الاخرى ^^

المصفوفات الحرفية

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

لنعد الى مثالنا السابق وهو مثال الزوج والزوجة فماذا لو اردنا ان نضع مثلا الاسم الاول هو albert

وهكذا على كل المصفوفة سيكون من الصعب فعل ذلك بالمصفوفات الرقمية ولكنه اسهل في المصفوفات الحرفية

لنقم بعمل مثال يبين ذلك ^^

http://www.3baer.com/php-les/les7/7.jpg

ملاحظة (1):نلاحظ بأنني قمت بكتابة firstname عوضا عن المفتاح رقم صفر في المصفوفة الرقمية
وانني قمت بوضع <= هذه الاشارة لتبين بأن الfirstname القيمة المخصصة له هو Albert
وانهيت الصف الاول بالفاصلة ,
ملاحظة (2): عندما اردت طباعة اي عنصر من المصفوفة قمت بطباعته مثل المصفوفة الرقمية ولكن الفرق
هو وضع المفتاح بشكل نص وهو firstname عوضا عن الرقم صفر .

وطريقة تغير ما بداخل المصفوفة الحرفية بنفس اسلوب المصفوفة الرقمية وهو التالي :

http://www.3baer.com/php-les/les7/8.jpg

هل لاحظت لا يوجد اي فرق ^^

لنقل الان بأننا نريد طباعة المصفوفة كاملة ( هناك طريقة لطباعة هذه المصفوفة وتسمى foreach)

وطريقة كتابتها كالتالي =>

http://www.3baer.com/php-les/les7/9.jpg

سأشرح ما سبق بعدة كلمات :

$array = المتغير الذي قمنا بتعيينة للمصفوفة او الذي وصعنا القيم به $husband
$key = المفتاح او الفهرس الذي قمنا بتعيينة وفي مثالنا السابق سيكون firstname
$value =القيمة التي قمنا بتعيينها تحت هذا المفتاح وسيكون Albert

لنقم الان بتطبيق المثال مع هذه العبارة ^^

http://www.3baer.com/php-les/les7/10.jpg

قم بفتح الملف في المتصفح وانظر مالذي حصل ^^
مممممممم ما رايك جميل وبسيط وسهل ايضا ^^

هناك نوع من المصفوفات ويسمى المصفوفات ثنائية الابعاد وهي تتكون من مصفوفتين بداخل بعضهما البعض..

فتذكر بأنه لهذا الرجل زوجة تجلس بجانبة على هذه الطاولة ويوجد طاولة اخرى بهذا المطعم
يجلس عليها زوج وزوجة لننظر كيف يتم التعامل مع هذه الحالة فهي سهلة حقا ..

http://www.3baer.com/php-les/les7/11.jpg

هل لاحظ قمنا بتعريف متغير بأسم table1 ووضعنا به مصفوفتين الاولى للزوج ومعلوماته
والثانية للزوجة ومعلوماتها

تأكد بأنك قد كتبت الكود بالشكل الصحيح ولا سيظهر لديك خطأ

لنقم الان بطباعة هذه المصفوفات ولنقل بأننا نريد ان نطبع الاسم الاول من الزوج والزوجة^^

http://www.3baer.com/php-les/les7/12.jpg

انظر كيف قمنا بطلب اسم المصفوفة الاولى وهو husband وطلبنا منها الفهرس firstname وقام بطباعة الاسم الاول للزوج..

بهذا نكون قد انتهينا من درس المصفوفات

وسنتكلم في الدرس القادم عن بعض الدوال للمصفوفات مثل ترتيب المصفوفات ابجديا او عشوائيا
اتمنى من الله ان اكون قد وفقت في الشرح

والسلام عليكم

Bakenam
04-02-2009, 11:30 PM
السلام عليكم ورحمة الله وبركاتة

كيف الحال حبايبي ان شاء الله تكونوا بألف

سنكمل معكم اليوم مشاورنا في تعلم الـphp وسيكون عنوان درسنا لهذا اليوم هو



عبارات التكرار والعبارة الشرطية SWITCH



يتضح من العنوان ان هناك عدة عبارات للتكرار وسأقوم بشرحها واحدة تلو الاخرى بخصائصها وطريقة كتابتها

اولا: عبارة التكرار WHILE

كما يدل اسم هذه العبارة التكرار فأنه من الواضح اننا نقوم من خلالها بتكرار شيء معين مرارا وتكرارا

فالنتخيل بأن لدينا كود معين ونريد ان نكررة العديد من المرات ونكتبه العديد من المرات لنصل الى شيء معين

فلماذا لا نوفر على نفسنا هذا العناء ونجعل الكود يقوم بتكرار نفسه لوحده الى ان يصل الى هذا الشيء

ويتم تعيينة من قبلك ولكن هذا لا يعني ان هذا الكود يسهل كتابته وتتم كتابتة في لحظات فعليك التفكير

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

فالنفترض بأنك تجهز لرحلة الى مكان معين وهناك العديد من الاشخاص الذين سيشتركون بهذه الرحلة

اليس من المفترض حساب عددهم الكلي قبل الخروج لهذه الرحلة وستقوم بحساب عددهم على النحو التالي:
المشترك الاول + المشترك الثاني + الثالث الى ان تصل الى العدد الكلي ...

لنقم الان بالتعرف على طريقة كتابة عبارة التكرار هذه ...

http://www.3baer.com/php-les/les6/1.jpg

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

http://www.3baer.com/php-les/les6/2.jpg

هل لاحظت عدد الاسطر التي استخدمتها..

فتخيل لو اردت طباعة اسمك مثلا 50 مره كم عدد الاسطر التي ستحتاجها؟؟

وهنا تأتي فائدة العبارة WHILE فهي تسهل عليك كتابة اسمك 50 مره في عدد بسيط من الاسطر

لننظر كيفية عملها ^^

http://www.3baer.com/php-les/les6/3.jpg

كم سطرا كتبنا ؟؟ القليل بكثير صحيح
لنحلل ما الذي قمنا بفعله بالكود السابق
قمنا بتعيين متغير توجد به القيمة 1 واسمه num وبعد ذلك نقوم بكتابة دالة التكرار وشرطها ان يكون المتغير num اقل من او يساوي 5 , ثم نقوم بطباغة المتغير الموجود لدينا , ونطبع سطر جديد, واخيرا نقوم بزيادة المتغير بواحد ونرجع الى الاعلى لنرى هل الشرط صحيح ام لا , اذا كان صحيحا يقوم بالطباعه مره اخرى واذا لم يكن صحيحا يقوم بالخروج من البرنامج.

هل فهمت الية العمل ^^

لنقم بتحريرة بطريقة اخرى حتى تتفهم اكثر
قمنا بتعين متغير وعينا له القيمة 1 ومن ثم ادخلناه في جملة التكرار التي تساوي او تقل عن العدد 5
وبعدها قمنا بطباعته وقمنا بأضافة سطر جديد ومن ثم قمنا بأضافة واحد للمتغير ليصبح 2 ثم رجعنا الى
الشرط وسألنا هل يساوي او يقل عن العدد خمسه فكان الجواب صحيح اذا سيكمل الكود ويقوم بطباعة المتغير
الذي هو 2 ثم ينزل سطر جديد ثم يقوم بزيادة الرقم 2 واحد اخر ليصبح 3 ويرجع الى الشرط ليتحقق
وعلى هذه الحلقه الى ان يصل المتغير الى القيمة 6 فعندها يسال هل يساوي او اقل من 5 فيكون الجواب لا خاطئ
عندها سيقوم بالخروج من البرنامج ^^

سهلة صح ^^

اليك هذا السؤال البسيط واجب عليه لوحدك ..

ما هو ناتج الاعداد من 1 الى 100؟
فماذا لو اردنا ان نقوم بفصل الاعداد الزوجية عن الاعداد الفردية ^^

بسيط الحل هو بأضافة الجملة الشرطية if فكر فيها حلها بسيط جدا ..

ملاحظة: يمكنك اضافة عبارات التكرار بداخل بعضها بالعدد الذي تريد مثل العبارات الشرطية..

لننتقل الان الى النوع الاخر وهو الاكثر استخداما وهي جملة التكرار For


2-عبارة التكرار For

هي عبارة تكرار اخرى وتستخدم غالبا اكثر من العبارة while والسبب ان ديناميكيتها اكبر
ولكن الناتج واحد ولا اختلاف في الناتج عن الwhile

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

http://www.3baer.com/php-les/les6/4.jpg

وهذا شرح ما جاء به ومع بعض الامثلة ستفهمون اكثر

variable assignment : وتعني وضع قيمة للمتغير مثلا

رمز PHP:

$x=1;


test expression : وتعني جملة التحقق مثلا

رمز PHP:

$x<=10


variable increament: وهذة تعني زيادة في المتغير مثلا

رمز PHP:

$x++


ملاحظة : يجب وضع الفاصلة المنقوطة بين الاكواد الثلاث السابقة.

اي ان الكود سيصبح بهذا الشكل على سبيل المثال


رمز PHP:

<?php

for ($x=1 ; $x>=10 ; $x++ ){

do this code;
}
?>

لنقم الان بعمل المثال الذي قمنا بالعد به من الرقم واحد الى الرقم 100 ولكن بهذه العباره ^^

http://www.3baer.com/php-les/les6/5.jpg

لننتقل الان الى الجزء الاخير من عبارات التكرار وهي

3- عبارة do..while

وهي لا تختلف كثيرا عن سابقاتها والفرق الوحيد الذي يجعلها تختلف هو انها تقوم
بتنفيذ الكود المطلوب ومن ثم تقوم بتكراراه اي انك في ذلك تضمن اذا كان الشرط غير صحيح
بأن تقوم بتنفيذ الكود لمره واحده ^^

وسنقوم بالتطرق اليها حين حاجتنا لها ان شاء الله في دروس قادمة وسترى كيفية عملها ^^

ولا تنسى انه يمكنك عمل عبارة بداخل عبارة اخرى وهذا سيكون تطبيقنا بعد الانتهاء من درسنا ^^

الان لننتقل الى القسم الاخير من درسنا وهو


3-الدالة الشرطية SWITCH


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

انها تقوم بعمل شرط واحد فقط ولكن IF تقوم بعمل عدة شروط

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

http://www.3baer.com/php-les/les6/6.jpg

بداية كود الدالة يكون بالعبارة switch كما بالصورة

ومن ثم نضع الشرط مثلا

رمز PHP:

$x<=10


وكلمة case هي لتحديد الخيار المراد التحقق منه فمثلا case 10 يعني انه الشرط قد تحقق

ولاحظ بانه يجب وضع كلمة break; في نهاية كل case وذلك لأنهاء العملية اذا تحقق الشرط

وايضا لاحظ وجود كلمة default وهي تعني انه اذا لم يتحقق اي شرط من السابق قم بتنفيذ شيء معين

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

لنرا الان مثالا بسيطا على ذلك ^^

http://www.3baer.com/php-les/les6/7.jpg

قم الان تغيير قيمة المتغير x الى الارقم 1 او 3 او 8 وانظر الى التغير في الجملة بعد كل مره تفتح بها

الملف بالمتصفح ...

ممممممممممم سؤال وسأجيب عليه في شرح بسيط ليسهل عليك حل التطبيق لهذا الدرس..

هل تريد ان تقوم بتصميم جدول على طريقت لغة ال php ؟

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

تدريب:

اذا لنرى هذا المثال البسيط ...
اولا ادخل الى الفرونت بيج وقم بتصميم جدول يتكون من عمودين وخمسة صفوف

http://www.3baer.com/php-les/les6/8.jpg

ادخل على الكود البرمجي وسترى ما هو الكود الذي قام ببناء هذا الجدول مثل الصورة السابقه

حسنا ركز الان بهذا الكود اين ترى التكرار او ما الذي تكرر في الكود لأكثر من مره ؟

<tr> و <td> صحيح ؟؟

لنحول هذه الكودات الان لتكرار بلغة الphp (حولها لوحدك)
ثم لنقوم بعد عدد الاعمدة قما قلنا هم 2 وعدد الصفوف 5 صحيح اذا ما هو الشرط الذي سنبني به
عبارة التكرار ؟؟

حسنا لنصنع من هذا الجدول (جدول الضرب) مثل الذي بالمدارس , ما هي العملية التي سنحتاجها؟؟

اجب عن جميع هذه الاسئلة لتجد الجواب قم بكتابة الاسئله على ورقة ومن ثم قم بتحويلها على الورقة
الى اكواد واصنع منها العبارات التي ستحتاجها , ومن ثم حول هذا الجدول ليقوم بأيجاد
المضروب من 1 الى 10 اي 1*1 و 1*2 و 1*3 الى ان تصل الى 10*10 , ثم لنجعل الجدول
يكتب كلمة (مضروب بـ ) في الخانة الاولى من الجدول اي انه بدل ان يضرب 1×1 يكتب كلمة (مضروب بـ).

ليظهر الجدول بهذا الشكل...

http://www.3baer.com/php-les/les6/9.jpg

تلميح ليساعدك في بناء الكود ..
ستحتاج الى عبارة FOR وبداخلها عبارة FOR اخرى وبداخل العبارة الثانية يوجد الدالة IF ومعها ELSE

ليس بالسهل وليس بالصعب جربو الى ان تصلو الى الحل ...

وبهذا نكون قد انهينا هذا الدرس المفيد والممتع اتمنى ان اكون قد اوصلت المعلومة بالشكل الصحيح

والله يوفقكم جميعا

السلام عليكم ^^

Bakenam
04-02-2009, 11:40 PM
السلام عليكم ورحمة الله وبركاته

اخواني الكرام
الدرس جداً سهل , فقط تروى في تطبيق الدرس وبأذن الله سوف تخرج بمفاهيم جديدة بلغة الــ PHP

بسم الله نبدء

المطلوب عمله :

1- انشأ ملف داخل ملف السيرفر المحلي WW وسمه guestbook
2- انشاء قاعدة بيانات جديدة وراح نسميها test وهنا الطريقة

والآن سوف نتعلم كيف ننشأ قاعدة بيانات عن طريق phpMyAdmin
وهنا رابط البرنامج للسيرفر المحلي
http://localhost/phpMyAdmin (http://localhost/phpMyAdmin)
وهنا رابط البرنامج على سيرفر موقعك
http://www.phpeasystep.com/imgs/phpmyadmin_view.gif
وفي هذا المربع الصغير نكتب اسم القاعدة اللي راح ننشأها واسمها test
http://www.phpeasystep.com/imgs/mysql_create_db.gif

3- وبعد انشاء قاعدة البيانات ارزع هذا الكود بالضغط على زر SQL
http://www.phpeasystep.com/imgs/create_sql.gif
وفي المربع الصق الكود التالي

رمز PHP:

CREATE TABLE `guestbook` (
`id` int(4) NOT NULL auto_increment,
`name` varchar(65) NOT NULL default '',
`email` varchar(65) NOT NULL default '',
`comment` long**** NOT NULL,
`datetime` varchar(65) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


وبزرع هذا الكود سوف يتم انشاء table (جدول) واسمه guestbook ويحتوي على الــ id + name + eamil + comment + datetime

ولمزيد من التوضيح انشأنا جدول واسميناه guestbook
ويتفرع من هذا الجدول كلاً من
id وعمله تخرين الترقيم كــ 1 . 2 . 3 الخ الخ
name وسوف يتم فيه اسماء الاشخاص اللي وضعوا توقيعهم بسجل الزوار
email تخرين ايميلات الاشخاص اللي وضعوا توقيعهم بسجل الزوار
comment تخزين تعليقات او توقيع زوار السجل
datetime تخزين وقت وضع التوقيع

والآن خلصنا من قاعدة البيانات وتعالوا نتعلم نكمل صفحات السكربت وهنا المطلوب
2. انشاء ملف وراح نسمية guestbook.php
3. انشاء ملف وراح نسمية addguestbook. php
4. انشاء ملف وراح نسمية viewguestbook.php

بسم نبدء مع الملف الاول وهو guestbook.php

http://www.geocities.com/saloh123/sjel.jpg

وهنا الكود


رمز Code:

<html dir="rtl">

<head>

<title>سجل الزوار</title>
<meta http-equiv="Content-Type" content="****/html; charset=windows-1256">
</head>

<table width="400" border="0" align="center" cellpadding="3" cellspacing="0">
<tr>
<td><div align="center"><strong><span lang="ar-sa">سجل الزوار</span></strong></div></td>
</tr>
</table>
<table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<form id="form1" name="form1" method="post" action="addguestbook.php">
<td>
<table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td width="117">
<p align="center"><span lang="ar-sa">الاسم </span></td>
<td width="14">:</td>
<td width="357"><input name="name" type="****" id="name" size="40" /></td>
</tr>
<tr>
<td>
<p align="center"><span lang="ar-sa">البريد</span></td>
<td>:</td>
<td><input name="email" type="****" id="email" size="40" /></td>
</tr>
<tr>
<td><span lang="ar-sa">التعليق</span></td>
<td>:</td>
<td><****area name="comment" cols="40" rows="3" id="comment"></****area></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><input type="submit" name="Submit" value="ارسل" />
<input type="reset" name="Submit2" value="امسح" /></td>
</tr>
</table>
</td>
</form>
</tr>
</table>
<table width="400" border="0" align="center" cellpadding="3" cellspacing="0">
<tr>
<td><strong><a href="viewguestbook.php"><span lang="ar-sa">شاهد سجل الزوار</span></a> </strong></td>
</tr>
</table>

</html>

والآن سوف ننشأ addguestbook.php


رمز PHP:

<?php
$host="localhost"; // المستضيف
$username="root"; // اسم المستخدم
$password=""; // باسورد المستخدم
$db_name="test"; // اسم قاعدة البيانات
$tbl_name="guestbook"; // اسم الجدول

// هنا خطوة الاتصال بالسيرفر والقاعدة
mysql_connect("$host", "$username", "$password")or die("cannot connect server ");
mysql_select_db("$db_name")or die("cannot select DB");

$datetime=date("y-m-d h:i:s"); //date time

// هنا سوف يتم اداخال البيانات وهي الاسم والايميل و و و
$sql="INSERT INTO $tbl_name(name, email, comment, datetime)VALUES('$name', '$email', '$comment', '$datetime')";
$result=mysql_query($sql);

//check if query successful
if($result){
echo "Successful";
echo "<BR>";
echo "<a href='viewguestbook.php'>شاهد السجل</a>"; // للذهاب الى الصفحة الرئيسية
}

else {
echo "ERROR";
}

mysql_close();
?>

<?php
$host="localhost"; // المستضيف
$username="root"; // اسم المستخدم
$password=""; // باسورد المستخدم
$db_name="test"; // اسم قاعدة البيانات
$tbl_name="guestbook"; // اسم الجدول

// هنا خطوة الاتصال بالسيرفر والقاعدة
mysql_connect("$host", "$username", "$password")or die("cannot connect server ");
mysql_select_db("$db_name")or die("cannot select DB");

$datetime=date("y-m-d h:i:s"); //date time

// هنا سوف يتم اداخال البيانات وهي الاسم والايميل و و و
$sql="INSERT INTO $tbl_name(name, email, comment, datetime)VALUES('$name', '$email', '$comment', '$datetime')";
$result=mysql_query($sql);

//check if query successful
if($result){
echo "Successful";
echo "<BR>";
echo "<a href='viewguestbook.php'>شاهد السجل</a>"; // للذهاب الى الصفحة الرئيسية
}

else {
echo "ERROR";
}

mysql_close();
?>




رمز PHP:


<html dir="rtl">

<tr>
<td><div align="center"><strong>&Oacute;&Igrave;&aacute; &Ccedil;&aacute;&Ograve;&aelig;&Ccedil;&Ntilde; | <a href="guestbook.php">&Atilde;&Ouml;&Yacute; &Ecirc;&aelig;&THORN;&iacute;&Uacute;&szlig;</a>
</strong></div></td>
</tr>
</table>
<br>

<?php
/////////////////////////////////////
// شرح بوصالح جرافيكس //
// abosaleh.com //
/////////////////////////////////////
$host="localhost"; // المستضيف المحلي
$username="root"; //اسم مستخدم قاعدة البيانات
$password=""; // الباسورد لمستخدم قاعدة البيانات
$db_name="test"; // اسم قاعدة البيانات
$tbl_name="guestbook"; // اسم الجدول

// للأتصال بالسيرفر وقاعدة البيانات نستخدم هذا السياق
mysql_connect("$host", "$username", "$password")or die("cannot connect server ");
mysql_select_db("$db_name")or die("cannot select DB");

$sql="SELECT * FROM $tbl_name";
$result=mysql_query($sql);

while($rows=mysql_fetch_array($result)){
?>
<table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td><table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td>&nbsp;</td>
<td>:</td>
<td><? echo $rows['id']; ?></td>
</tr>
<tr>
<td width="117" align="center">الأسم</td>
<td width="14">:</td>
<td width="357"><? echo $rows['name']; ?></td>
</tr>
<tr>
<td align="center">الايميل</td>
<td>:</td>
<td><? echo $rows['email']; ?></td>
</tr>
<tr>
<td valign="top" align="center">التعليق</td>
<td valign="top">:</td>
<td><? echo $rows['comment']; ?></td>
</tr>
<tr>
<td valign="top" align="center">والوقت والتاريخ</td>
<td valign="top">:</td>
<td><? echo $rows['datetime']; ?></td>
</tr>
</table></td>
</tr>
</table>
<BR>
<?
}
mysql_close(); //خلاص انتهينا قفل
?>

وهنا صورة توضيحيه لكم بالنسبة لعمل الكود السابق
http://www.phpeasystep.com/imgs/gustbook_di.gif

وهنا بعد التجربة
اضغط للتجربة من جهازك
http://localhost/guestbook/guestbook.php (http://localhost/guestbook/guestbook.php)

http://www.geocities.com/saloh123/sjel_01.jpg
http://www.geocities.com/saloh123/sjel_02.jpg
http://www.geocities.com/saloh123/sjel_03.jpg

والحمد لله رب العالمين والصلاة والسلام على أشرف الانبياء والرسلين

Bakenam
04-02-2009, 11:42 PM
بسم الله الرحمن الرحيم
الحمد لله رب العالمين
والصلاة السلام على أشرف المرسلين
سيدنا محمد عليه أفضل الصلوات والتسليم

السلام عليكم ورحمة الله وبركاته
تحية غالية لرواد القسم الجميل

اليوم إن شاء الله سوف نبدأ في الدرس الخامس من دروس تعليم لغة PHP والخاص بكيفية تركيب ملف PHP وتنفيذ صفحات PHP

بسم الله نبدأ ::


تركيب ملف PHP ::::


الملف الذي يحتوي على كود بلغة PHP هو مجرد ملف نصي عادي جداً يمكن إنشاؤه عن طريق برنامج NotPad البسيط أو البرامج المختلفة الأخرى مثل Dreamweaver هذا بجانب العديد من برامج تحرير لغة PHP المجانية التي يمكن الوصول أليها عن طريق الموقع www.download.com (http://www.download.com/)




إذا قمت بفتح صفحة مكتوبة بلغة PHP ستجد أنها تتكون من جزئين ، جزء به لغة HTML القياسية والآخر بلغة PHP ، وحتى يمكن كتابة كود بهذه اللغة يجب إخبار المترجم أولاً ، ويتم ذلك بحصر كود PHP بين علامتين خاصتين ، وفيما يلي أهم هذه العلامات ::::






كما نرى في المثال التالي أنه يمكن وضع الكود بين العلامتين ?> و <? كما يلي ::

رمز Code:

<?echo "Traidnt"?>


إذا قمت بتنفيذ هذه الصفحة ستجد عبارة "Traidnt" تم طبعها في الصفحة الرئيسية للمستعرض
يمكن أيضاً إستخدام عبارة التعريف القياسية php كما في المثال التالي ::

رمز Code:

<?phpecho "Traidnt"?>

يمكنك أيضاً إستخدام عبارة تحديد اللغة ****** language كما في المثال التالي ::

رمز Code:

<****** language = "php">echo "Traidnt"/******>

كما يمكن أيضاً إستخدام علامة السكربت القياسية %> وهي تستخدم أيضاً مع كل من لغة VB****** ولغة ********** لصفحات ASP كما في المثال التالي ::



رمز Code:

<%echo "Traidnt"%>




كيف يتم تنفيذ صفحات PHP ؟



هناك طريقتين لتنفيذ هذه الصفحات
:


الطريقة الأولى : هي نسخ الصفحات المراد إستعراضها تحت الدليل c:\inetpub\wwwroot وفي هذه الحالة يتم الوصول إلى الصفحات المراد إستعراضها عن طريق الوصلة التالية ::


http://localhost/page1.php (http://localhost/page1.php)

حيث page1.php هي الصفحة المراد تنفيذها

الطريقة الثانية : هي إنشاء دليل تخيلي للدليل الذ يوجد به صفحات PHP المراد إستعراضها ، ويتم ذلك عن طريق الخطوات التالية ::



قم بفتح برنامج IIS وأضغط RClik على Default *** Site وإختار NEW I Virtual Directory سيظهر المرشد الخاص بإنشاء الدليل .

إضغط Next حتى تنتقل إلى الصفحة التالية وقم بكتابة Alias وهو الإسم التخيلي للدليل وليكن "myphp" .

إضغط Next حتى تنتقل إلى الصفحة التالية وأختار الدليل الفعلي الذي توجد به صفحات PHP ، وليكن "e:\php\page1" ثم أضغط Next .

ستظهر صفحة بها الصلاحيات التي تريد منحها للموقع مثل القراءة فقط أو تنفيذ برامج CGI ، قم بقبول الإختيارات الإفتراضية وأضغط Next ثم Finish .

لكي تقوم بإستعراض الصفحة يجب كتابة العنوان التالي ::



http://localhost/myphp/page1.php (http://localhost/myphp/page1.php)

مثال ::

يمكنك التفريق بين مخرجات لغة HTML ولغة PHP من الكود التالي ::


رمز Code:

<p> This is html </p><?echo "This line is php"?>

سيتم عرض الصفحة كما بالشكل التالي ::


http://tinypic.com/i3ie6q.gif

ولرؤية مثال حي على الموقع وليس على السيرفر المحلي ، أضغط عل الرابط التالي ::


http://www.eltayer.net/lesson/page1.php (http://www.eltayer.net/lesson/page1.php)

وسأقوم فيما بعد بشرح قواعد لغة PHP

ملحوظة :: إذا أردت إظهار نص باللغة العربية يجب إستخدام العروة dir الخاصة بلغة HTML لإظهار اللغة من اليمين إلى اليسار ، وفيما يلي كود يؤدي ذلك ::


رمز Code:

<html dir="rtl"><p>بسم الله الرحمن الرحيم</p><?echo "معهد ترايدنت التطويري"?>

فتكون النتيجة كما بالشكل التالي ::


http://tinypic.com/i3ie8l.gif

أو لرؤية مثال حي قم بزيارة الرابط التالي ::


http://www.eltayer.net/lesson/page2.php (http://www.eltayer.net/lesson/page2.php)

لاحظ1 : تحرك شريط التمرير الأيمن إلى اليسار ليناسب الإعداد الجديد .

لاحظ2 : عند كتابة العنوان في سطر العنوان الخاص ببرنامج IE يتم تنفيذ عملية تسمى Request أو طلب من السيرفر ويقوم IIS بتنظيم ذلك والإستجابة للطلب حتى يتم عرض الصفحة للمستخدم بعملية تسمى Response والفرق بين الوقتين هو وقت الإستجابة ويتوقف عليه عوامل كثيرة جداً مثل سرعة السيرفر وعدد المواقع به ولكن العامل الوحيد الذي نستطيع التحكم به لتقليل هذا الوقت هو حجم الصفحة من رسومات أو أفلام متحركة ، فيجب مراعاة عامل سرعة عرض الصفحة بحيث لا تأخذ عملية تحميل الصفحة لمستخدم النت عن طريق Dial-up إلى أكثر من 30 ثانية وإلا سيمل الزائر ويتجه إلى موقع آخر ، وفي هذه العملية يتم ترجمة أي سكربت قمت بكتابته إلى صفحة صالحة للعرض ، فإذا حاولت أن تشاهد مثلاً الكود الخاص بك من صفحة موجودة على النت لن تشاهد إلا نتيجة هذه المعالجة وكود HTML فقط .



يتم أثناء هذه العملية إستخدام بروتوكولات خاصة حتى يتم تبادل المعلومات بين السيرفر والمتصفح

وإن شاء الله في الدرس القادم سوف أقوم بشرح هذه البروتوكولات

أسأل الله أن لا أكون أطلت عليكم الحديث

والدرس دسم اليوم لكنه سوف يفتح مداركنا إلى نقاط هامة في تعلم هذه اللغة ، وإن شاء الله تعم الفائدة علينا جميعاً

إلى اللقاء مع الدرس القادم إن شاء الله

Bakenam
04-02-2009, 11:47 PM
السلام عليكم ورحمه الله وبركاته..
نبدى الدرس اولأ قول (الله اما كان صعبأ إلا ما جعلته سهلأ يا رب)..

اولأ نبدى بقاعده البينات


رمز PHP:

CREATE TABLE `members` (
`id` int(4) NOT NULL auto_increment,
`name` varchar(65) NOT NULL default '',
`lastname` varchar(65) NOT NULL default '',
`email` varchar(65) NOT NULL default '',
`password` varchar(65) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
--
-- Dumping data for table `test_mysql`
--

INSERT INTO `members` VALUES (1, 'محمد', 'فتحى', 'php@am4host.com', '789789');



وشرح هذى القاعده
وهيه امر وضع محمد فتحى وايميل والباصورد
يعنى طبعأ بعد ادخال قاعده البينات فى القاعده
ثانيأ نأتى الى الفورم


رمز PHP:

<SPAN class=Arial>&lt;table width="380" border="0" cellpadding="3" cellspacing="1"
&gt;<BR>&lt;tr&gt;<BR>&lt;td width="33%"&gt;&lt;strong&gt;<span lang="ar-sa">اسم
إيميلك</span> :
&lt;/strong&gt;&lt;/td&gt;<BR>&lt;td width="67%"&gt;</SPAN><SPAN
class=form>&lt;form name="form1" method="post"
action="sendpassword.php"&gt;<BR>&lt;input name="email_to" type="****"
id="mail_to" size="25"&gt;<BR>&lt;input type="submit" name="<span lang="ar-sa">إرسل</span>"
value="<span lang="ar-sa">إرسل</span>"&gt;<BR>&lt;/form&gt;</SPAN><SPAN
class=Arial><BR>&lt;/td&gt;<BR>&lt;/tr&gt;<BR>&lt;/table&gt;</SPAN>


الفروم سهل جدأ وهو عبارة عن مكان لوضع اسم الإيميل
نأتى الى الملف الأهم وهو sendpassword.php


رمز PHP:

<?php
include ("config.php");
$email_to=$_POST['email_to'];

$tbl_name=members;

$sql="SELECT password FROM $tbl_name WHERE email='$email_to'";
$result=mysql_query($sql);

$count=mysql_num_rows($result);

if($count==1){

$rows=mysql_fetch_array($result);

$your_password=$rows['password'];


$to=$email_to;

$subject="Your password here";

$header="from: your name <your email>";

$messages= "Your password for login to our ***site \r\n";
$messages.="Your password is $your_password \r\n";
$messages.="more message... \r\n";


$sentmail = mail($to,$subject,$messages,$header);

}


else {
echo "Not found your email in our data****";
}


if($sentmail){
echo "Your Password Has Been Sent To Your Email Address.";
}
else {
echo "Cannot send password to your e-mail address";
}


?>

وهو عبارة عن اتصال بقاعده البينات
واخرج البينات منها والتأكد منها جيدأ قبل ارسال الباصورد
نأتى الى الإتصال بقاعده البينات وهو config.php


رمز PHP:

<?php
$host="localhost"; // اسم السيرفر
$username=""; // اليوزر
$password=""; // الباصورد
$db_name=""; //اسم القاعده



mysql_connect("$host", "$username", "$password")or die("cannot connect to server");
mysql_select_db("$db_name")or die("cannot select DB");
?>

وهذا عبارة عن كونفج للأتصال بقاعده وملف sendpassword.php
للقراءة من الملف وقد قمنا بوضع

رمز PHP:

include ("config.php"(;


للقراءة قاعده البينات
ارجو ان اكون افادكم فى هذا الدرسhttp://www.traidnt.net/vb/images/smilies/shiny01.gif

Bakenam
04-02-2009, 11:50 PM
السلام عليكم والرحمه

خير الكلام ما قل ودل




لمشاهده الدرس من هنا (http://www.kuwaite25.com/lesson/show.php?lessid=121)


تحياتي

Bakenam
04-02-2009, 11:53 PM
بسم الله الرحمن الرحيم

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

المشكلة : عدم القدره علي التعامل مع المتغيرات التي يتم إرسالها عن طريق FORM فيه select multiple
يعني لو الشخص إختار اكثر من إختيار فالي راح تستطيع التعامل معه اول إختيار فقط إختاره فقط :(

طيب والعمل ؟؟

فكرتي تعتمد علي جعل المتغيرات في قائمة الـSELECT عباره عن ARRAY وذلك بإستبدال الكود العادي في الـhtml بالكود التالي :

رمز Code:
<select name='servertype[]' multiple>
طبعا server type ده إسم المتغير الي راح نستلمه في الصفحة الي نرسل لها بإستخدام

رمز PHP:

$_POST['servertype']


لو حاولنا الان نقوم بكتابة المتغير والذي إسمه

رمز PHP:

$_POST['servertype']


في الصفحة الثانيه
سنلاحظ خروجه كالتالي :
Array

طيب كيف نستطيع التعامل مع محتويات هذه المصفوفه ؟؟
الأول خلينا نقوم بفك محتويات هذه المصفوفه ونستعرضها ويمكننا إستخدام دالة implode لذلك فمثلا لو نريد نحصل علي محتويات المصفوفه بحيث يفصل بين كل عنصر والأخر بالرمز :

نقوم بإستخدام الكود التالي :

رمز PHP:

$test = implode(":", $servertype);


دعونا نجرب عرض محتوي المتغير $test

سنلاحظ الناتج كالتالي :
element1,element2,element3,element4

علي اساس ان الـelement هو الإختيارات المتاحه في الـform select

طيب الان نيجي نقسم هالمتغير إلي عدة أجزاء بحيث يحمل كل جزء عنصر معين بإستخدام الدالة split وبطعا التقسيم راح يكون علي اساس الرمز :
الداله split تقوم بإرجاع مصفوفه دائما وابدا ^_^
بحيث يمكنك إستلامها في مصفوفه والتحكم بكل عنصر لحاله عن طريق كود مشابه للكود التالي :

رمز PHP:

$array = split(':',$test);


الان المتغير $array هو مصفوفه بها الإختيارات التي تم إختيارها باقي وضعها في متغيرات ليتم إستخدامها يمكننا إستخدام الكود التالي لذلك :

رمز PHP:

for ($i = 0 ; $i<5 ; $i++ )
{
switch ($array[$i])
{
case 'tickets':
$tickets = $array[$i];
break;
case 'mobile':
$mobile = $array[$i];
break;
case 'msn':
$msn = $array[$i];
break;
case 'office':
$office = $array[$i];
break;
case 'mail':
$mail = $array[$i];;
break;
}
}


أتمني اكون قدرت افيدكم ويكون الكود سهل ^_^ والشرح اسهل وراح احط لكم مثال أستخدمته انا في سكريبت المستضيف الان

Bakenam
04-02-2009, 11:55 PM
بسم الله الرحمن الرحيم

انا كنت شغال من شويه علي سكريبت وحصل مشاكل كثيره بالنسبه لي بسبب إستخدام دالة include لإنه لا يستطيع التعرف علي مسار تركيب السكريبت يعني يتم البرمجة علي اساس ان مسار السكريبت ثابت ولو اي شخص غير المسار تحتاس :( ويخرب كل الإنكلود ^_^

طيب ايه الحل ؟

الإنكلود من داخل نفس المجلد سهل

بس لو حبيت تخرج من مجلد وتدخل مجلد ثاني وتعمل إنكلود له هتعمل ايه ؟؟

فيه دالة لتغيير مكان المجلد الي إنت تعمل عليه وممكن تستخدمها ولكن مع كثرة إستخدام الإنكلود راح تتوه في الأخر http://www.traidnt.net/vb/images/smilies/shiny01.gif

انا فكرت في فكرة

وهي إننا نعمل ملف إسمه path.php نحط فيه مسار التركيب ^_^

والملف ده يبقي علي الموقع في المجلد الرئيسي

وبالتالي يبقي سهل نعمله إنكلود وناخد منه قيمة المتغير الي يحتوي علي مسار التركيب وإليكم الكود التالي لشرح الطريقة :
ضع الكود التالي في اي ملف سوف تستخدم فيه الإنكلود:

رمز PHP:

$times = substr_count($_SERVER['PHP_SELF'],"/");
$rootaccess = "";
$i = 1;

while ($i < $times) {
$rootaccess .= "../";
$i++;
}
include($rootaccess.'path.php');
$******_path= ******_path;


إستخدم الكود التالي في الإنكلود :

رمز PHP:

include($rootaccess . $mostadef . 'includes/get_g_values.php');


مع إستبدال الـincludes/get_g_values.php بمسار الملف المراد إستدعائه من داخل مسار التركيب

وطبعا لا ننسي كلنا وضع ملف path.php في المجلد الرئيسي للموقع بالمحتوي التالي :

رمز PHP:

<?
define( "******_path", "/******/");
?>

مستبدلا ****** بمسار التركيب المناسب http://www.traidnt.net/vb/images/smilies/cupidarrow.gif بدون وضع إسم الموقع وإنما بوضع المسار فقط

أتمني تكون الفكرة واضحه

وانا مجربها وشغاله 100% الحمد لله

Bakenam
04-02-2009, 11:57 PM
بسم الله الرحمن الرحيم
الموضوع مرفق في المرفقات لإحتوائه علي كلمات تعارض الرولز الخاصه بالمود سيكورتي الخاص بترايدنت وبالتالي لا يسمح لي بإعتماد الموضوع

السلام عليكم

Bakenam
04-02-2009, 11:58 PM
بسم الله الرحمن الرحيم

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

هذا كتاب رائع لتعلم لغة الـphp


الكتاب قديم لاكن مفيد جداً الصراحه أنا أستفدت كثير من هالكتاب
وحبيت اطرحه لكم لكي تستفيدون

رابط تحميل الكتاب :

http://www.j-arabia.net/1/php.zip (http://www.j-arabia.net/1/php.zip)

Bakenam
04-03-2009, 12:07 AM
السلام عليكم ورحمة الله وبركاتة

من خلال بحثي بالنت وجدت طريقة رائعة لعرض الصور

واحببت ان انقلها لكم حتى تستخدمونها لما لها اثر كبير

على زوار مواقعكم

لنبدأ بسم الله

اولا عليك تحميل الملفات التالية

اضغط هنا للتحميل (http://www.traidnt.net/vb/attachment.php?attachmentid=174058&stc=1&d=1189608175)

ستجد داخل الملف المضغوط خمسة ملفات

الاول سيكون thickbox.css قم برفعة الى مجلد موقعك الرئيسي او اذا احببت

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

والملف الثاني والثالث سيكونون ملفات بأمتداد JS

وملفان للصور ضعها في مجلد الصور

قم بفتح الملف thickbox-compressed.js

وابحث عن هذا المتغير tb_pathToImage

وتأكد بأن امتدادة يؤدي الى هذه الصورة macFFBgHack.png

ثم قم بتحرير صفحة الـ HTML

وضع في الهيدر هذا الكود


رمز PHP:

<****** type="****/**********" src="****/jquery-latest.pack.js"></******>
<****** type="****/**********" src="****/thickbox-compressed.js"></******>


ولكن تاكد من امتداد الملفات بأنها صحيحة ****/jquery-latest.pack.js هذا واحد

والاخر ****/thickbox-compressed.js هذا

وقم ايضا بوضع هذا الكود اسفل منهما


رمز PHP:

<style type="****/css" media="all">@import "thickbox.css";</style>


وتأكد من مكان وجود الملف thickbox.css

نأتي الان للقسم الاخير وهو

فالنفرض بأن لديك صور وتريد عرضها اولا عليك عمل من كل صورة تريد عرضها صورة مصغره

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

الان سأقم بشرح طريقة عملها بعد النظر الى الكود بالاسفل


رمز PHP:

<td class="style11">
<a href="siteimage/imgC1.jpg" class="thickbox">
<img alt="" src="siteimage/imgC.jpg" class="style12" ></a></td>
<td class="style11" class="thickbox">
<a href="siteimage/imgD1.jpg" class="thickbox">
<img alt="" src="siteimage/imgD.jpg" class="style12" ></a></td>


تلاحظ وجود كود لرابط الكتروني وكود لصورة

الرابط الالكتروني سيكون للصورة الكبيرة وكود الصورة سيكون للصورة المصغره

ولكن لابد عند قيامك بوضع رابط ان تضع بالاتريبيوت

رمز PHP:

class="thickbox"


واذهب الان للصفحة التي اردت تضع بها هذه الخاصية وانظر للذي سيحدث عند الضغط على الصورة

اتمنى ما اكون اخطأت بأي شيء بالدرس

ولأي استفسار او سؤال تفضلوا واسألو وانا جاهز للرد عليكم

بالتوفيق للجميع ^^

Bakenam
04-03-2009, 12:09 AM
بسم الله الرحمـن الرحيم

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

كيف حال الشباب اليوم ؟ . إن شاء الله بخير ..

جبتلكم اليوم

[مجموعـة دروس] جميلة لتعليم لغة [PHP]

وإن شاءالله يعجبكم ..

== .,,. == .,,. == .,,. == .,,. == .,,. ==

معلومات عن البرنامج

.:::. | الوصف | .:::.

.::. | مجموعة من الدروس المتعلقة بلغة [PHP] http://www.traidnt.net/vb/images/smilies/nosweat.gif | .::.

.:::. | الحجم | .:::.

3.55 ميغا بايت فقط !

== .,,. == .,,. == .,,. == .,,. == .,,. ==

وللتحميل المباشر طبعا ً

.::. اضغط هنـا وسيتم التحميل تلقائيا ً (http://www.magtrb.com/Books/index.php?act=download&id=2) .::.

== .,,. == .,,. == .,,. == .,,. == .,,. ==

ورتبتلكم الموضوع زي ما بتحبوا

وأنا عادتي هيك http://www.traidnt.net/vb/images/smilies/nosweat.gif إن شاء الله أعجبكم

بس بدي ردود مش خد وإطلع

== .,,. == .,,. == .,,. == .,,. == .,,. ==

.::.تحيتي للجميع.::.

Bakenam
04-03-2009, 12:14 AM
بسم الله الرحمـن الرحيم


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


كيف حال الشباب اليوم ؟ . إن شاء الله بخير ..


جبتلكم اليوم


[موسوعة] جميلة لتعليم لغة [PHP] سهلة جداً


وإن شاءالله يعجبكم ..


== .,,. == .,,. == .,,. == .,,. == .,,. ==


معلومات عن البرنامج


.:::. | الوصف | .:::.


.::. | الموسوعة العربية للكتب الالكترونية.. يحتوي على العديد من المشاريع والاكواد الجاهزة | .::.


.:::. | الحجم | .:::.


1.48 ميغا بايت فقط !


== .,,. == .,,. == .,,. == .,,. == .,,. ==


وللتحميل المباشر طبعا ً


.::. اضغط هنـا وسيتم التحميل تلقائيا ً (http://www.magtrb.com/Books/index.php?act=download&id=32) .::.



وللي صعبة معاه الحكاية في التحميل


بالمرفقات النسخة كاملة لهـذه الموسوعـة الجميل


== .,,. == .,,. == .,,. == .,,. == .,,. ==


ورتبتلكم الموضوع زي ما بتحبوا


وأنا عادتي هيك http://www.traidnt.net/vb/images/smilies/nosweat.gif إن شاء الله أعجبكم


بس بدي ردود مش خد وإطلع


== .,,. == .,,. == .,,. == .,,. == .,,. ==




والسـلآم خير ختآم ..


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

Bakenam
04-03-2009, 12:17 AM
بسم الله الرحمـن الرحيم

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

كيف حال الشباب اليوم ؟ . إن شاء الله بخير ..

جبتلكم اليوم

[كتاب] جميل لتعليم لغة [PHP] و [قواعد البيانات]

وإن شاءالله يعجبكم ..

== .,,. == .,,. == .,,. == .,,. == .,,. ==

معلومات عن البرنامج

.:::. | الوصف | .:::.

.::. | يعتبر هذا الكتاب أول كتاب عربي عن لغة [PHP] و [قواعد البيانات] ، ويعتبر أيضا هو أول كتاب يتم نشره آلياً في المكتبة العربية ، وهذا الكتاب بصيغة أكروبات ريدر و يقع في 160 صفحة ويحتوي على العديد من الصور التوضيحية ، وهذا الكتاب جيد جداً للمبتدئين والمتوسطين بلغة بي أتش بي | .::.

.:::. | الحجم | .:::.

3.30 ميغا بايت فقط !

== .,,. == .,,. == .,,. == .,,. == .,,. ==

وللتحميل المباشر طبعا ً

.::. اضغط هنـا وسيتم التحميل تلقائيا ً (http://www.magtrb.com/Books/index.php?act=download&id=38) .::.

== .,,. == .,,. == .,,. == .,,. == .,,. ==

ورتبتلكم الموضوع زي ما بتحبوا

وأنا عادتي هيك http://www.traidnt.net/vb/images/smilies/nosweat.gif إن شاء الله أعجبكم

بس بدي ردود مش خد وإطلع

== .,,. == .,,. == .,,. == .,,. == .,,. ==


والسـلآم خير ختآم ..

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

Bakenam
04-03-2009, 12:20 AM
السـلام عليكم ورحمـة الله وبركاته

أنا اليوم جايبلكم [كتاب] صغير يشرح الRSS بالتفصيل.

رهيب جدا رغم صغره .. وغن شاء الله تستفيدو منه

::؟؟..::؟؟..::؟؟..::؟؟..::؟؟..::::؟؟..::؟؟..::؟؟.. ::؟؟..::؟؟..::

معلومـات عن الكـتاب

::؟؟..::؟؟..::؟؟..::؟؟..::؟؟..::

العنوان : جولة مع الRSS

المستوى : للمبتدئين الصغار في لغة الRSS

نبذه عنه : الكتاب صغير يشرح الRSS بالتفصيل.

نوع ملف الكتاب : pdf

حجم الملف : 0.8 ميجا بايت

للتحميل :: http://www.kutub.info/library/images/pdf.gif << اضغط هنا >> (http://www.kutub.info/library/download.php?filename=04220707_rss.pdf&cid=2&password=6b9d53b8644dea7687826c139a0865c0)

::؟؟..::؟؟..::؟؟..::؟؟..::؟؟..::::؟؟..::؟؟..::؟؟.. ::؟؟..::؟؟..::


وللي بيواجه مشكلة مع التحميل

ولا أظن ذلك لأن رابط التحميل رابط مباشر

لا تبخلوا علينا بردودكم

في المرفقات نسخة عن هـذا الكتاب

Bakenam
04-03-2009, 12:24 AM
السلام عليكم ورحمة الله وبركاته


أرجو عدم نقل الدرس بدون ذكر المصدر ورابط الدرس بطريقة واضحة
http://www.montadaphp.net/showthread.php?t=1249 (http://www.montadaphp.net/showthread.php?t=1249)


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

في البداية يلزمنا برمجة ملفين:
1- db.php وهو ملف الاتصال بقاعدة البيانات.
2- repair.php وهو الملف المسئول عن اصلاح جميع جداول قاعدة البيانات.


وسوف أقوم هنا بمناقشة الملفين بالتفصيل
ونبدأ بسم الله

الملف الأول: db.php
كود الملف:

رمز PHP:



<?
/////////////////////////////////////////////////////////////////////////////////
// سكريبت تحسين جداول قواعد البيانات
// برمجة coder@montadaphp.net
// 12/2/2007
// برجاء عدم ازالة الحقوق مع حرية استخدام الأكواد في اي اعمال مجانية او مدفوعة
/////////////////////////////////////////////////////////////////////////////////

// قم بتغيير اعدادات قاعدة البيانات كما تريد
$dbname = "db";
$dbusername = "root";
$dbpassword = "";
$dbserver = "localhost";
// لا تقم بالتعديل بعد هذا السطر

mysql_connect($dbserver, $dbusername, $dbpassword);
mysql_select_db($dbname);
/////////////////////////////////////////////////////////////////////////////////
// سكريبت تحسين جداول قواعد البيانات
// برمجة coder@montadaphp.net
// 12/2/2007
// برجاء عدم ازالة الحقوق مع حرية استخدام الأكواد في اي اعمال مجانية او مدفوعة
/////////////////////////////////////////////////////////////////////////////////
?>

ونأتي لشرح الملف:
في السطور الأول والثاني والثالث والرابع للكود، قمنا بتحديد بيانات قاعدة البيانات، وهي اسم قاعدة البيانات واسم المستخدم للاتصال بها وكلمة المرور واسم سيرفر MySQL على التوالي
في السطر الخامس قمنا باجراء الاتصال بسيرفر قاعدة البيانات عن طريق الدالة mysql_connect() (http://www.montadaphp.net/showthread.php?t=312)
في السطر السادس قمنا باختيار قاعدة البيانات التي سنتعامل معها عن طريق الدالة mysql_select_db() (http://www.montadaphp.net/showthread.php?t=314)
بهذا ينتهي الملف الأول وهو الخاص بالاتصال بقاعدة البيانات


الملف الثاني: repair.php
كود الملف:


رمز PHP:

<?
/////////////////////////////////////////////////////////////////////////////////
// سكريبت تحسين جداول قواعد البيانات
// برمجة coder@montadaphp.net
// 12/2/2007
// برجاء عدم ازالة الحقوق مع حرية استخدام الأكواد في اي اعمال مجانية او مدفوعة
/////////////////////////////////////////////////////////////////////////////////
require('db.php');
?>
<html dir="rtl">
<head>
<meta http-equiv="Content-Type" content="****/html; charset=windows-1256" />
<****** language="**********">
function checkAll(form){
for (var i = 0; i < form.elements.length; i++){
eval("form.elements[" + i + "].checked = form.elements[0].checked");
}
}
</******>
</head>
<body>
<?
function redir($msg, $url)
{
echo "<p align=\"center\">";
echo "<table width=\"70%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">";
echo "<tr><td>&nbsp;</td></tr>";
echo "<tr><td>$msg</td></tr>";
echo "<tr><td>&nbsp;</td></tr>";
echo "<meta http-equiv=\"*******\" content=\"1;url=$url\">";
echo "</p>";
}

if(!isset($_POST['submit']))
{
$tables = mysql_query("SHOW TABLE STATUS");
echo "<form name=\"form1\" method=\"post\" action=\"repair.php\"/><table width=\"80%\" cellpadding=\"5px\" border=\"1\" style=\"border-collapse: collapse\" bordercolor=\"#0B4250\">";
echo "<tr><td colspan=\"5\">تحسين الجداول</td></tr>";
echo "<tr><td colspan=\"5\" style=\"font-size:8pt;\">اختر الجداول التي تريد تصليحها وتحسينها ثم اضغط تحسين</td></tr>";
echo "<tr><td>الجدول</td><td class=\"table_sub\">المساحة</td>
<td>الحالة</td>
<td>
<input type=\"checkbox\" name=\"check_all\" checked=\"checked\" onClick=\"checkAll(this.form)\"/></td></tr>";
while($table = mysql_fetch_array($tables))
{
$size = round($table['Data_length']/1024, 2);
$status = mysql_fetch_array(mysql_query("ANALYZE TABLE `$table[Name]`"));
echo "<tr><td width=\"20%\">$table[Name]</td><td width=\"40%\">$size كيلوبايت</td><td width=\"25%\">$status[Msg_****]</td><td width=\"5%\"><input type=\"checkbox\" name=\"check[]\" value=\"$table[Name]\" checked=\"checked\" /></td></tr>";
}
echo "<tr><td colspan=\"5\"><center><input type=\"submit\" name=\"submit\" value=\"تحسين\" /></center></td></tr>";
echo "</table></form>";
}
else
{
if(!$_POST['check'])
{
redir("من فضلك اختر جدول واحد على الأقل ليتم تحسينه..", "index.php?com=repair&do=optimize");
exit;
}
$tables = $_POST['check'];
echo "<table width=\"80%\" cellpadding=\"5px\" border=\"1\" style=\"border-collapse: collapse\" bordercolor=\"#0B4250\">";
echo "<tr><td colspan=\"5\">تحسين الجداول</td></tr>";
foreach($tables as $table)
{
$query = mysql_query("REPAIR TABLE `". $table . "`");
$que = mysql_fetch_array($query);
echo "<tr><td width=\"20%\">";
echo "تم تصليح الجدول \"" . $que['Table'] . "\" بنجاح";
echo "</td></tr>";
}
echo "<tr><td colspan=\"5\" style=\"height:5px\"></td></tr>";
echo "</table>";
redir("تم تحسين الجداول بنجاح..", "repair.php");
}
?>
</body>
</html>
<?
/////////////////////////////////////////////////////////////////////////////////
// سكريبت تحسين جداول قواعد البيانات
// برمجة coder@montadaphp.net
// 12/2/2007
// برجاء عدم ازالة الحقوق مع حرية استخدام الأكواد في اي اعمال مجانية او مدفوعة
/////////////////////////////////////////////////////////////////////////////////
?>

ونأتي لشرح الكود:


رمز PHP:

require('db.php');


كود ادراج ملف الاتصال بقاعدة البيانات عن طريق الدالة require() (http://www.montadaphp.net/showthread.php?t=38)



رمز PHP:

<****** language="**********">
function checkAll(form){
for (var i = 0; i < form.elements.length; i++){
eval("form.elements[" + i + "].checked = form.elements[0].checked");
}
}
</******>


هذه الدالة بلغة جافاسكريبت ********** وهي تقوم باختيار /الغاء اختيار جميع الجداول، حيث تقوم باختيار جميع صناديق الاختيار المقابلة لجميع الجداول بدلا من اختيارها واحدا تلو الآخر



رمز PHP:

function redir($msg, $url)
{
echo "<p align=\"center\">";
echo "<table width=\"70%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">";
echo "<tr><td>&nbsp;</td></tr>";
echo "<tr><td>$msg</td></tr>";
echo "<tr><td>&nbsp;</td></tr>";
echo "<meta http-equiv=\"*******\" content=\"1;url=$url\">";
echo "</p>";
}


هذه الدالة بتحويل المتصفح الى صفحة أخرى مع عرض رسالة ما لمدة ثانية قبل التحويل، وتصلح للاستخدام لعرض نتيجة حدث معين يقوم به المستخدم ثم الانتقال الى صفحة أخرى...



رمز PHP:

$tables = mysql_query("SHOW TABLE STATUS");


الاستعلام عن جميع الجداول الموجودة في قاعدة البيانات


رمز PHP:

while($table = mysql_fetch_array($tables))


استعراض نتائج الاستعلام عن طريق حلقة تكرار while


رمز PHP:

$size = round($table['Data_length']/1024, 2);


جلب حجم الجدول بالكيلوبايت وتقريبه الى رقمين عشريين بعد الفاصلة عن طريق الدالة round


رمز PHP:

$status = mysql_fetch_array(mysql_query("ANALYZE TABLE `$table[Name]`"));


الاستعلام عن حالة الجدول الحالي، وتكون نتيجة الاستعلام:
Table is already up to date
أو OK في حالة عدم وجود مشاكل بالجدول
أو رسالة الخطأ في حالة وجود خطأ بالجدول


رمز PHP:

$query = mysql_query("REPAIR TABLE `". $table . "`");


استعلام اصلاح وتحسين الجدول


رمز PHP:

redir("تم تحسين الجداول بنجاح..", "repair.php");


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

بهذا نكون قد انتهينا من مناقشة الكود
والملفين كاملين بالمرفقات
repair.php (http://www.montadaphp.net/attachment.php?attachmentid=359&d=1195439642) | db.php (http://www.montadaphp.net/attachment.php?attachmentid=360&d=1195439653)


أرجو عدم نقل الدرس بدون ذكر المصدر ورابط الدرس بطريقة واضحة
http://www.montadaphp.net/showthread.php?t=1249 (http://www.montadaphp.net/showthread.php?t=1249)

Bakenam
04-03-2009, 12:26 AM
السـلام عليكم ورحمـة الله وبركاته

جبتلكم كتاب حلو . html . وإن شاء الله يعجبكم

ما بدي أطول عليكم

في المرفقات ..

إن شاء الله يفيدكم

مع التحية ,

Bakenam
04-03-2009, 12:28 AM
الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته

لمن لا يعرف لغة هتمل هذا المحرر العربي



http://www.pl2004.com/G-html/index.php (http://www.pl2004.com/G-html/index.php)

Bakenam
04-03-2009, 12:29 AM
موضوعى اليوم حاب اسأل واستفسر فيه عن انظمة القوالب ونبى اجوبة لا هنتم

اولا

ما هيا افضل انواع القوالب فى نظركم من هذه القوالب

smarty
easy
template power
وغيرها
ايهم تفضل :
استخدام القوالب من قاعدة البيانات؟
ام استخدام القوالب من ملفات ؟

ما هيا مميزاتها وعيوبها :
ما هيا اهم المميزات فى استخدام هذه الانظمة سواء من قاعدة البيانات
او من ملفات عادية
وما اهم النقاط اللى لاذم نحرص عليها
وما اغلب المشاكل اللى ممكن تواجهنا وقت استخدامها

سؤالى هنا :

هل فى حالة استخدام القوالب يمكن عمل حلقة التكرار من داخل ملف البى اتش بى زاتة ؟

وفقط يعرض التكرار حسب الجدول الخاص بالقالب (كمثال فقط ؟)



سؤال اخر :

لماذا لا يوجد شروحات وافية لكيفية العمل على انظمة القوالب المختلفة كشرح تفصيلى مع بعض الامثلة <<طبعا ادرى انه فى دروس تتكلم وتشرح انظمة القوالب (فقط لسمارتى ) لكن لا تستعجل

سؤال اخر :

لماذا فى المواقع الرسمية للقالب (مثل القالب السهل )
يضع لك فقط مفاهيم عمل البرنامج

كطريقة الاستعمال
بعض المتغيرات والدوال وكيفية استخدامها
بمعنى افضل واصح (يعاملك على انك محترف والك خبرة كبيرة فى الشىء هذا )

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

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

طيب حلو

ليش كل الدروس اللى شفتها يشرحلك فقط طبيعة عمل القالب والدوال وما الا ذلك
حتى الان ما شفت درس يقولك امثلة مختلفة

مثلا كحلقة التكرار فى سمارتى مع mysql

يقولك

طبعاً لو راح تعمل اي سكربت كبير راح تستخدم mysql
تعال نشوف كيف طريقة الأستعامل مع smarty

.. تفرض انه عندك سكربت أخبار و قاعدة الأخبار تحتوي على التالي

id = رقم الخبر

title = عنوان الخبر

**** = محتوى الخبر

لاحظ الكود الى في صفحة php


رمز PHP:

<?
$query = mysql_query("SELECT * FROM news ORDER BY id DESC");
while ($row = mysql_fetch_array($query)) {
$news[] = $row
$Smarty->assign("news",$news);
}
?>





الأن كود html

راح يكون كذا

رمز PHP:

{section name=idx loop=$news}
<tr>
<td width="340" height="1">
<p align="center"><a href="news.php?show=1&id={$news[idx].id}"><font size="2">{$news[idx].title}</font></a></td>
</tr>
{/section}




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

عندنا عنوان الخبر
اسم صاحب الخبر
الخبر
تمام ؟

تعال الحين قولى كيف بنسوى حلقة التكرار مع سمارتى لما نتبع هذا الشرح ؟
المشكلة بالشرح انه شرح على تكرار متغير واحد
لكن الحين ابى اعرض اكثر من متغير مع بعض فى جدول والجدول نفسة كامل يتكرر

قولى بالله فهمت شىء من اللى قولتة ؟

قدر انا فهمت وقدرت اكرر مثل ما قولت لك الحين

فى غيرى ما قدر يفهم وحاول مرار وتكرارا لين وصل لمرحلة التعقيد

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

كيف فينا نخلى الجدول كامل يتكرر مع متغيراتة

مثلا

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

الاسم
البلد
رقم الهاتف


فى جدول واحد
ولكل عضو جدول مثلة تمام

نبى نكرر الجدول كامل كيف فينا نسويها والشرح جاء على تكرار متغير واحد فقط

نلاحظ انه ما اكثر شروحات ودروس البى اتش بى وغيرها من لغات البرمجة

وما اقل شروحات ودروس التعامل مع انظمة القوالب مع ان لها دور كبير جدا جدا فى اى برنامج كبير

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

فى الختام اتمنى يكون وصل بالفعل مضمون كتابتى لهذا الموضوع

طبعا بعد ما مليت من شىء اسمة بحث وفى الاخير الشرح واحد لا يتغير ويمكن نفس الكود ونفس صيغة الكلام (بالعربى منقول )


يا اخوانا نبى شروحات مفيدة اكثر من هيك

وهذولى الدرسين اللى شوفتهم لشرح التعامل مع سمارتى


http://www.montadaphp.net/showthread.php?t=550 (http://www.montadaphp.net/showthread.php?t=550)

http://www.swalif.net/softs/swalif45/softs170615/ (http://www.swalif.net/softs/swalif45/softs170615/)


والباقى كله مكرر وتقريبا نفس الدروس

Bakenam
04-03-2009, 12:30 AM
السلام عليكم ورحمة الله وبركاته
أتناء تصفحي النت وجدت هدا الموقع الأكتر من راااائع الدي يقدم دروسا حول php صوتا وصورة وحبيت أفيدكم بيه
االموقع : http://www.freeforarab.com/ (http://www.freeforarab.com/)
تمنع مواضيع طلب التقييم

Bakenam
04-03-2009, 12:32 AM
بسم الله الرحمن الرحيم

في الجزء الاول تكلمنا في اساسيات استخدام الخاصيه في تحويل رابط واحد فقط

http://www.traidnt.net/vb/showthread.php?t=453522 (http://www.traidnt.net/vb/showthread.php?t=453522)

في هذا الجزء ستنطرق في كيفية تحويل روابط صفحه متعددة الصفحات مثلاً مثل هذه الصفحه


index?action=cat&id=17
فهذه الصفحه بطبيعة الحل متعددة الصفحات حيث ال id يمثل قيمة كل صفحه سيتم إستدعائها

أولاً افتح ملف htaccess.

و قوم بتعريف الاساسيات كما فعلنا في الجزء الاول من الدرس


رمز PHP:


RewriteEngine on

RewriteRule ^index(.*).htm$ index.php?action=cat&id=$1


أولاً قمنا الرابط الجديد و هو index(.*).htm بعمل الاتي و هو الجديد في الدرس

بوضع (.*)حيث سيتم تضمين ما يسويه الرابط التاتي هنا بوضع هذه العلامه في الرابط الثاني

index.php?action=cat&id=$1

فقد قمنا بكتابة رقم واحد و علامة $ حيث رقم واحد يدل علي (.*) الاولي

فلو كان مثلاً الرابط القديم

index.php?action=cat&id=84

سيكون الجديد

index84.html

طيب ماذا إذا كانت الصفحه تضمن اكتر من رقم كرقم القسم و رقم تصويت عليه مثلاً

cat.php?catid=4&vote=7

سيكون التحويل كالاتي



رمز PHP:


RewriteEngine on

RewriteRule ^cat(.*)-(.*).htm$ cat.php?catid=$1&vote=$2


حيث كان أضافنا

(.*)
لتعبر عن الرقم الثاني

و اضفنا في الرابط القديم

$2

ليعبر عنا

ليصبح الرابط القديم

cat.php?catid=4&vote=7

و الجديد

cat4-7.htm


و بالتوفيق إخواني الاعزاء

Bakenam
04-03-2009, 12:33 AM
السلام عليكم ورحمة الله وبركاته



ويعلـم الله أنه عندي اشغال ضرورية منعتني من أن اضع الشرح هنـا ..

ولكنني جئت لكـم برابط موضوع من سوالف سوفت بعنوان : اصنع واجهة CSS بكل بساطة وبدون جداول !


لزيارة الدرس من هنا (http://www.swalif.net/softs/swalif44/softs207213/)

والسلام عليكم

Bakenam
04-03-2009, 12:37 AM
السلام عليكم ورحمة الله وبركاتة

كما عودتكم في دروسي سأقوم بشرح شيء جديد هذه المرة

وستكون حذف البيانات من قاعدة البيانات

هذه خاصية سهلة جدا بالتعامل معها

ولكن لديك شيء عليك الاهتمام به وهو انه عندما تقوم بتجريب الحذف في قواعد البيانات

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

البيانات من القاعدة فلن تعود ابدا الا اذا قمت بادخالها من جديد

حسنا يكفي كلاما ولنذهب للتطبيق البسيط

مثال (1) :
قم بفتح ملف جديد وسمية delete.php

وقم بكتابة الكود التالي بداخلة


رمز PHP:

<?php
$link = mysql_connect("localhost", "root", "")
or die("Could not connect: " . mysql_error());
mysql_select_db('moviesite', $link)
or die ( mysql_error());

if (!isset($_GET['do']) || $_GET['do'] != 1) {
?>
<p align="center" style="color:#FF0000">
Are you sure you want to delete this <?php
echo $_GET['type']; ?>?<br>
<a href="<?php echo $_SERVER['REQUEST_URI']; ?>&do=1">yes</a>
or <a href="index.php">Index</a>
</p>
<?php
} else {
if ($_GET['type'] == "people") {

$actor = "UPDATE movie
SET movie_leadactor = '0'
WHERE movie_leadactor = '" . $_GET['id'] . "'";
$result = mysql_query($actor)
or die("Invalid query: " . mysql_error());


$diractor = "UPDATE movie
SET movie_diractor = '0'
WHERE movie_diractor = '" . $_GET['id'] . "'";
$result = mysql_query($diractor)
or die("Invalid query: " . mysql_error());
}

$sql = "DELETE FROM " . $_GET['type'] . "
WHERE " . $_GET['type'] . "_id = '" . $_GET['id'] . "'
LIMIT 1";

echo "<!--" . $sql . "-->";
$result = mysql_query($sql)
or die("Invalid query: " . mysql_error());
?>
<p align="center" style="color:#FF0000">
Your <?php echo $_GET['type']; ?> has been deleted.
<a href="index.php">Index</a>
</p>
<?php
}
?>

طبعا الي حاب يستفيد ويفهم شو كتبنا بالكود بيقدر يكتب الكود مره ثانية بدون مينسخه

الان افتح ملف Index.php وحاول انك تحذف اي شيء موجود في جدول movie

وشاهد النتيجة

طيب رح اشرح كم شي مهم في هالكود

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


رمز PHP:

$actor = "UPDATE movie
SET movie_leadactor = '0'
WHERE movie_leadactor = '" . $_GET['id'] . "'";
$result = mysql_query($actor)
or die("Invalid query: " . mysql_error());


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

اما في هذا القسم فقد قمنا بالتالي


رمز PHP:

$sql = "DELETE FROM " . $_GET['type'] . "
WHERE " . $_GET['type'] . "_id = '" . $_GET['id'] . "'
LIMIT 1";

echo "<!--" . $sql . "-->";
$result = mysql_query($sql)
or die("Invalid query: " . mysql_error());


لاحظ اننه يطلب منه حذف المدخل من النوع type الموجود في رقم اي دي معين والحذف بيتم
لمره واحده فقط

طيب نشوف الحين كيف بدنا نعمل تحرير للبيانات
متذكرين الملف الي اسميناه movie.php
افتحوه واعملو التعديلا الي رح تظهر عندكم


رمز PHP:

<?php
$link = mysql_connect("localhost", "root", "")
or die("Could not connect: " . mysql_error());
mysql_select_db('moviesite', $link)
or die ( mysql_error());
$peoplesql = "SELECT * FROM people";

$result = mysql_query($peoplesql)
or die("Invalid query: " . mysql_error());
while ($row = mysql_fetch_array($result)) {
$people[$row['people_id']] = $row['people_fullname'];
}

switch ($_GET['action']) {
case "edit":
$moviesql = "SELECT * FROM movie
WHERE movie_id = '" . $_GET['id'] . "'";
$result = mysql_query($moviesql)
or die("Invalid query: " . mysql_error());
$row = mysql_fetch_array($result);
$movie_name = $row['movie_name'];
$movie_type = $row['movie_type'];
$movie_year = $row['movie_year'];
$movie_leadactor = $row['movie_leadactor'];
$movie_diractor = $row['movie_diractor'];
break;

default:
$movie_name = "";
$movie_type = "";
$movie_year = "";
$movie_leadactor = "";
$movie_diractor = "";
break;
}
?>
<html>
<head>
<title><?php echo $_GET['action']; ?> movie</title>
<style type="****/css">
TD{color:#353535;font-family:verdana}
TH{color:#FFFFFF;font-family:verdana;background-color:#336699}
</style>
</head>
<body>
<form action="commit.php?action=<?php
echo $_GET['action']; ?>&type=movie&id=<?php
echo $_GET['id']; ?>" method="post">
<table border="0" width="750" cellspacing="1" cellpadding="3"
bgcolor="#353535" align="center">
<tr>
<td bgcolor="#FFFFFF" width="30%">Movie Name</td>
<td bgcolor="#FFFFFF" width="70%">
<input type="****" name="movie_name"
value="<?php echo $movie_name; ?>">
</td>
</tr>
<tr>
<td bgcolor="#FFFFFF">Movie Type</td>
<td bgcolor="#FFFFFF">
<select id="game" name="movie_type" style="width:150px">
<?php
$sql = "SELECT movietype_id, movietype_label " .
"FROM movietype ORDER BY movietype_label";
$result = mysql_query($sql)
or die("<font color=\"#FF0000\">Query Error</font>" .
mysql_error());
while ($row = mysql_fetch_array($result)) {
if ($row['movietype_id'] == $movie_type) {
$selected = " selected";
} else {
$selected = "";
}
echo '<option value="' . $row['movietype_id'] . '"' .
$selected.'>' . $row['movietype_label'] . '</option>' .
"\r\n";
}
?>
</select>
</td>
</tr>
<tr>
<td bgcolor="#FFFFFF">Movie Year</td>
<td bgcolor="#FFFFFF">
<select name="movie_year">
<option value="" selected>Select a year...</option>
<?php
for ($year = date("Y"); $year >= 1970; $year--) {
if ($year == $movie_year) {
$selected = " selected";
} else {
$selected = "";
}
?>
<option value="<?php echo $year; ?>"<?php
echo $selected; ?>><?php echo $year; ?></option>
<?php
}
?>
</select>
</td>
</tr>
<tr>
<td bgcolor="#FFFFFF">Lead Actor</td>
<td bgcolor="#FFFFFF">
<select name="movie_leadactor">
<option value="" selected>Select an actor...</option>
<?php
foreach ($people as $people_id => $people_fullname) {
if ($people_id == $movie_leadactor) {
$selected = " selected";
} else {
$selected = "";
}
?>
<option value="<?php echo $people_id; ?>"<?php
echo $selected; ?>><?php echo $people_fullname; ?></option>
<?php
}
?>
</select>
</td>
</tr>
<tr>
<td bgcolor="#FFFFFF">diractor</td>
<td bgcolor="#FFFFFF">
<select name="movie_diractor">
<option value="" selected>Select a diractor...</option>
<?php
foreach ($people as $people_id => $people_fullname) {
if ($people_id == $movie_diractor) {
$selected = " selected";
} else {
$selected = "";
}
?>
<option value="<?php echo $people_id; ?>"<?php
echo $selected; ?>><?php echo $people_fullname; ?></option>
<?php
}
?>
</select>
</td>
</tr>
<tr>
<td bgcolor="#FFFFFF" colspan="2" align="center">
<input type="submit" name="SUBMIT" value="<?php
echo $_GET['action']; ?>">
</td>
</tr>
</table>
</form>
</body>
</html>

وافتحو ايضا الملف commit.php

وقوموا بعمل التعديلات التالية


رمز PHP:

<?php
// COMMIT ADD AND EDITS
$link = mysql_connect("localhost", "root", "")
or die("Could not connect: " . mysql_error());
mysql_select_db('moviesite', $link)
or die ( mysql_error());
switch ($_GET['action']) {
case "edit":
switch ($_GET['type']) {
case "movie":
$sql = "UPDATE movie SET
movie_name = '" . $_POST['movie_name'] . "',
movie_year = '" . $_POST['movie_year'] . "',
movie_type = '" . $_POST['movie_type'] . "',
movie_leadactor = '" .$_POST['movie_leadactor']."',
movie_diractor = '" . $_POST['movie_diractor'] . "'
WHERE movie_id = '" . $_GET['id'] . "'";
break;
}
break;
case "add":
switch ($_GET['type']) {
case "movie":
$sql = "INSERT INTO movie
(movie_name,
movie_year,
movie_type,
movie_leadactor,
movie_diractor)
VALUES
('" . $_POST['movie_name'] . "',
'" . $_POST['movie_year'] . "',
'" . $_POST['movie_type'] . "',
'" . $_POST['movie_leadactor'] . "',
'" . $_POST['movie_diractor'] . "')";
break;
}
break;
}
if (isset($sql) && !empty($sql)) {
echo "<!--" . $sql . "-->";
$result = mysql_query($sql)
or die("Invalid query: " . mysql_error());
?>
<p align="center" style="color:#FF0000">
Done. <a href="index.php">Index</a>
</p>
<?php
}
?>


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

كل ما قمنا بتعلمة هو طريقة اضافة وحذف المدخلات وتعديلها اتمنى لكم الفائدة

تطبيق
قومو بعمل ما سبق على الجدول people واستخدمو ملف الموفي كمثال

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

مكتبة الصور في الـ php ومن خلالها رح نتعلم كيف نكتب على الصور وكيف نحررها
ونصغرها ونكبرها ونرفعها على الموقع اما بمجلد او بقاعدة البيانات
اتمنى لكم التوفيق ^^

Bakenam
04-03-2009, 12:39 AM
السلام عليكم ورحمة الله وبركاتة

ها انا اطل عليكم بدرس جديد

تكلمنا في الدرس السابق عن الفورم وطرق استخدامة وتعلمنا كيفية بناء الفورم ليساعدنا

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

ولكن ماذا لو اردنا ادخال البيانات في قاعدة البيانات في الموقع

وهذا ما سنتناولة في درسنا هذا وهي طريقة ادخال البيانات الى قاعدة البيانات بأستخدام الفورم

وهذا الدرس سيكون عبارة عن

- اضافة البيانات الى قاعدة البيانات

- حذف البيانات في قاعدة البيانات

- تعديل البيانات الموجوده في قاعدة البيانات

سيلزمنا في هذا الدرس وجود قاعدة بيانات رئيسية وهي ما قمنا بأستعمالها من خلال دروسنا السابقة

وهي ما سنحتاجها ولكن تذكر باننا قمنا بعمل تعديلات كثيره عليها والان سنقوم ببنائها من جديد

اول ما عليك فعلة هو الذهاب الى الرابط التالي في المتصفح

http://localhost/phpmyadmin (http://localhost/phpmyadmin)

ستظهر لك صفحة انظر بها الى

تكوين قاعدة بيانات جديدة ومن ثم قم بأختيار اسم لقاعدة البيانات الجديدة
وستكون moviesite واحذف القاعدة السابقة
وبعد ذلك قم بتحميل الملف المرفق سيكون هنالك ملف اسمه moviesite.sql
وبعد ان تقوم بتحميلة سترى في الصفحة التي بنينا بها قاعدة بياناتنا كلمة Import في الاعلى
ومن ثم ستنتقل الى صفحة جديدة اختر منها Browse واختر مكان الملف وقم بتحميلة بالضغط على تنفيذ

ستظهر لك النتيجة وهي Import has been successfully finished, 20 queries executed.

وبهذا نكون قد انشأنا قاعدة بياناتنا بنجاح

ومن ثم الان سنقوم بأنشاء مجلد جديد ونسمية ch5 وسنضع به ملفاتنا التي سنقوم بأنشائها من خلال الدرس
اول ما سنحتاجه هي صفحة البداية وسنقوم بتسميتها index.php
وسنضع بها الكود التالي :

http://www.3baer.com/php-les/les15/1.jpg

http://www.3baer.com/php-les/les15/2.jpg

ستلاحظ عند تشغيل الملف بأنه لن يعمل والسبب بسيط هو انك لم تقم بأنشاء الملفات المطلوبه منك بعد

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

تابعو الكود ولنرى مالذي سيحصل عند تشغيله قومو بأخذ هذا الكود واحفظو الملف بأسم movie.php


رمز PHP:

<?php
$link = mysql_connect("localhost", "root", "")
or die("لا يمكن الاتصال بقاعدة البيانات" . mysql_error());
mysql_select_db('moviesite', $link)
or die(mysql_error());

$peoplesql = "SELECT * FROM people"; // "People" سيقوم بأختيار كل الحقول بالجدول
$result = mysql_query($peoplesql)
or die(mysql_error());
while ($row = mysql_fetch_array($result)) {
$people[$row['people_id']] = $row['people_fullname'];
//سيقوم بأستخراج العناصر
//ووضعها في مصفوفة
}
?>
<html>
<head>
<title>ADD MOVIE</title>
<style type="****/css">
TD{color:#353535;font-family:vendara}
TH{color:#FFFFFF;font-family:vendara;background-color:#336699}
</style>
</head>
<body>
<form action="commit.php?action=add&type=movie" method="post">
<table border="0" width="750" cellspacing="1" cellpadding="3"
bgcolor="#353535" align="center">
<tr>
<td bgcolor="#FFFFFF" width="30%">Movie Name</td>
<td bgcolor="#FFFFFF" width="70%">
<input type="****" name="movie_name">
</td>
</tr>
<tr>
<td bgcolor="#FFFFFF" width="30%">Movie Type</td>
<td bgcolor="#FFFFFF" width="70%">
<select id="game" name="movie_type" style="width:150px">
<?php
$sql = "SELECT movietype_id, movietype_label " .
"FROM movietype ORDER BY movietype_label";
$result = mysql_query($sql)
or die(mysql_error());
while ($row = mysql_fetch_array($result)) {
echo '<option value="' . $row['movietype_id'] . '">' .
$row['movietype_label'] . '</option>' . "\r\n";
}
?>
</select>
</td>
</tr>
<tr>
<td bgcolor="#FFFFFF" >Movie Year</td>
<td bgcolor="#FFFFFF" >
<select name="movie_year">
<option value="" selected>Select a year...</option>
<?php
for ($year = date("Y"); $year >= 1970; $year-- ){
?>
<option value="<? echo $year; ?>"><?php echo $year; ?></option>
<?php
}
?>
</select>
</td>
</tr>
<tr>
<td bgcolor="#FFFFFF">Laed Actor</td>
<td bgcolor="#FFFFFF">
<select name="movie_leadactor">
<option value="" selected>Select an Actor...</option>
<?php
foreach ($people as $people_id => $people_fullname) {
?>
<option value="<?php echo $people_id; ?>" ><?php
echo $people_fullname; ?></oprion>
<?php
}
?>

</select>
</td>
</tr>
<tr>
<td bgcolor="#FFFFFF">Diractor</td>
<td bgcolor="#FFFFFF">
<select name="movie_diractor">
<option value="" selected>Select an Diractor...</option>
<?php
foreach ($people as $people_id => $people_fullname) {
?>
<option value="<?php echo $people_id; ?>" ><?php
echo $people_fullname; ?></oprion>
<?php
}
?>
</select>
</td>
</tr>
<tr>
<td bgcolor="FFFFFF" colspan="2" align="center">
<input type="submit" name="SUBMIT" value="Add">
</td>
</tr>
</table>
</form>
</body>
</html>

لم نقم بعمل اي شيء فقط سخرنا ما تعلمناه في الدرس الماضي ليفيدنا في هذا الدرس
واستخدمنا القليل من اوامر قواعد البيانات وادوات التكرار ارجوكم حاولو ان تقومو بالنظر الى الكود بتمعن

حسنا الان لدينا ملف آخر لنقم بفتح مدير ملفاتنا المفضل ولنفتح ملفا جديدا ونضع به الكود التالي
وسمية commit.php

http://www.3baer.com/php-les/les15/5.jpg

هذا الكود بسيط جدا وعملة هو اضافة الافلام الذي سنضعها الى قاعدة البيانات

قم الان بفتح الملف index.php
وقم بعمل ADD ستلاحظ ستلاحظ بوجود عدة خانات لملئها حاول تعبئتها
وبعد ان يتم العمل ستلاحظ اضافة ما قمت بأضافته في القائمة

ولكن عند عمل EDIT ستلاحظ بأنه يقوم بالاضافة فقط
وهذا ما سنقوم بتعلمة في الدرس القادم بأذن الله

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

والسلام عليكم

Bakenam
04-03-2009, 12:42 AM
السلام عليكم ورحمة الله وبركاتة

كيفكم حبايبي عساكم تكونوا بألف خير

اليوم لدينا درس جديد وسنتلكم به عن الـ Form

تكلمنا في دروس سبقت عن الـ Form ولكن درسنا هذا يعتبر مختلفا تماما عما سبق

ففي هذا الدرس سنقوم بدراسة الفورم بشكل اوسع واعمق

فستتضمن هذه الوحدة ما يلي :

- انشاء الفورم بأستخدام الازرار وصناديق النص والاختيار المتعدد والقوائم ...

- انشاء سكريبت php وليقوم بالعمليات على html فورم

- سنتعلم كيفية استخدام $_POST و $_GET بشكل مفصل

- ارسال البيانات بشكل مخفي عن طريق الفورم والروابط

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

Your First Form

في هذا المثال ستقوم بعمل سكريبت بسيط يقوم فقط بأدخال كلمة في مربع النص
1- قم بأنشاء مجلد جديد وقم بتسميتة مثلا ch4 او الوحدة الرابعة
2- قم بأنشاء ملف جديد وقم بتسميته form1.html
3- قم بكتابة الاكواد التالية داخلة..

http://www.3baer.com/php-les/les14/1.jpg
4- قم بأنشاء ملف جديد وسمه formprocess1.php واكتب به الكود التالي:

http://www.3baer.com/php-les/les14/2.jpg


قم الان بفتح الملف form1.html واكتب به اسمك مثلا وانظر للناتج

في هذا المثال البسيط جدا قمنا بحمل الاسم الذي ادخلناه ووضعناه داخل المصفوفة $_POST وعرضناه على المتصفح .

لنجعل الان اليوزر يقوم بعدة خيارات ...

ابدأ اولا بتحضير ملف جديد وسمية form2.html

واكتب به الكود التالي

http://www.3baer.com/php-les/les14/3.jpg


قم الان بفتح ملف جديد واسمة formprocess2.php

واكتب به التالي :

http://www.3baer.com/php-les/les14/4.jpg


افتح الملف بالمتصفح وانظر للناتج

لننتقل الان لكودات اكثر غزارة واكثر كثافة

افتح ملف جديد واسمة form3.php واكتب الكود التالي بداخلة

http://www.3baer.com/php-les/les14/5.jpg
http://www.3baer.com/php-les/les14/6.jpg

الان قم بفتح ملف جديد وقم بتسميته formprocess3.php

وقم بكتابة الكود التالي بداخلة

http://www.3baer.com/php-les/les14/7.jpg

حسنا سنشرح بعض الاكواد التي قمنا باضافتها

لقد قمنا بكتابة فورم بسيط جدا مع وجود بعض الاحتمالات في الملف الاول قمنا بكتابة
زرين للأختيار و اختيار متعدد وقائمة اختيار
وفي الملف الثاني قمنا ببعض الحيل البرامجية وكانت على النحو التالي :

1-

رمز PHP:

header("Location:form3.php");


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

رمز PHP:

$_POST['MovieType']


كان فارغا فأن الصفحة سيعاد تحمليها
ولن تنتقل الى صفحة اخرى (سيتم شرح هذه الدالة بمفهوم اكبر في درس قادم)

2-

رمز PHP:

$name = $_POST['Name'];
$name[0] = strtoupper($name[0]);


من خلال هذا الكود قمنا بتحويل اول حرف من الحروف الذي سيكتبها الزائر داخل صندوق النص
الى كابيتال اي سيصبح حرف كبير .

3-

رمز PHP:

if ($_POST['type'] == "Movie") {
$foo = $_POST['MovieType'] . " " . $_POST['type'];
}else{
$foo = $_POST['type'];
}


ومن خلال هذه الدالة اذا كان اختيار الزائر لـmovie من قائمة الاختيار radio سيتم
وضع نوع الفيلم الذي اختاره وغير ذلك سيتم اختيار فقط نوع الاختيار اذا كان movie او actor او...

ومن ثم قمنا بترتيب ما قام بأختياره الزائر وترتيبه في جمله في الصفحة التي تليها...

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

في هذا المثال سنقوم بأنشاء بضعة ملفات لتساعد المستخدم لاَضافة بعض البيانات الى قاعدة البيانات

اولا قم بأنشاء ملف جديد وسمية form4.php
قم بكتابة الكود التالي بداخلة..

http://www.3baer.com/php-les/les14/8.jpg
http://www.3baer.com/php-les/les14/9.jpg

قم الان بفتح ملف جديد وسمية بأسم startform.php

http://www.3baer.com/php-les/les14/10.jpg
http://www.3baer.com/php-les/les14/11.jpg

في هذين الملفين قمنا بالتالي :
1- عن طريق هذه الدالة

رمز PHP:

if (!isset($_GET['step'])) {
require('startform.php');


بالتأكد من عدم وجود اي شيء مرسل عن طريق الرابط من خلال المصفوفة $_GET
ولاحظ كلمة عدم وهي بوجود الاشارة ! اي انها اذا لم تحمل المصفوفة اي متغيرات سينتقل الى الصفحة
startform.php وبعدها انتقلنا للعمل وهي else فبعد هذه الدالة قمنا بتعريف عبارة switch


رمز PHP:

switch ($_GET['step']){


وكان شرطها وجود متغيرات بداخل المصفوفة get
ومن ثم طلبنا منها عمل التالي :

رمز PHP:

case "1":


فهنا اذا كان المرسل عن طريق الرابط هو الرقم واحد سيقوم بعمل التالي:
$type = explode(":", $_POST['type']);
بهذه الدالة سيقوم بفصل النوع الذي سيحضرة الرابط الى قسمين ويضعهما في مصفوفة
فأذا كان

رمز PHP:

if ($_POST['Submit'] == "Add"){
require($_POST['Submit'] . $type[0] . '.php');


المطلوب هو Add سيقوم بأحضار الsubmit ويربطه في الفهرس الاول من المصفوفة
وغير ذلك عن طريق else

رمز PHP:

}else{
if($_POST['type'] == "Movie:Movie" &&
$_POST['MovieType'] == ""){
header("Location:form4.php");
}


سيتأكد اولا من ان movie:movie و movietype فارغة بعدها سيعيدنا الى صفحة form4.php
ثم سيقوم بعرض النتيجة
وسيكمل الدالة switch ولكن لاحظ هنا بأنه يوجد دالة switch اخرى وهي لتقوم بالتأكد
من المحتوى فأذا طلبنا منه اضافة فيلم سيطلب منا كتابة بعض الكلمات عن هذا الفيلم وسيقوم بالتأكد
من خلو هذه الدالة من الاخطاء عن طريق الدالة

رمز PHP:

<?php echo nl2br(stripslashes($_POST['Bio'])); ?>

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

قم الان بفتح ملف جديد وسمية بأسم AddMovie.php

http://www.3baer.com/php-les/les14/12.jpg
http://www.3baer.com/php-les/les14/13.jpg
http://www.3baer.com/php-les/les14/14.jpg

قم الان بفتح ملف جديد وسمية AddPerson.php

http://www.3baer.com/php-les/les14/15.jpg
http://www.3baer.com/php-les/les14/16.jpg

وفي هذين الملفين قمنا بتجهيز الصفحات التي ستظهر للمستخدم بعد البحث او الاضافة التي قام بطلبها
عن طريق صفحة form4.php

وهذا شرح بسيط بالصورة التي بالاسفل عن ما قمنا بعملة في الملفات السابقة

http://www.3baer.com/php-les/les14/17.jpg

قم بفتح الملفات بعد كتابتها وسترى ما الذي قمت بعمله ولكن تأكد بأنك قمت بكتابة الاكواد
مرات ومرات حتى تستطيع استيعابها بالشكل الصحيح

ادري انكم مللتم من كتابة الاكواد ولكن عند النظر لنتيجة عملكم اتمنى ان تكونوا قد بهربتم بما كتبتم

لانكم لأول مره ترون شيء مختلف في هذه الدروس

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

وفي هذا الدرس دمجناها جميعا لتظهر كما نريد وبالطريقة المناسبة لنا

وفي درسنا القادم سنقوم بشرح كيفية عمل admin او قسم الادمن للأضافة والتعديل
والحذف على الافلام الموجوده بداخل السكريبت بأذن الله

اتمنى لكم التوفيق


التطبيق :

قم بعمل الة حاسبة تأخذ رقمين وتقوم بجمعهما.

Bakenam
04-03-2009, 12:44 AM
السلام عليكم ورحمة الله وبركاتة

كيفكم حبايبي ان شاء الله تكونوا بألف خير

اليوم درسنا خفيف ولطيف وما فيه اي صعوبات

عنوانه هو :

دوال الــ Strings

وهي دوال خاصة بالنصوص التي تكتبها او يكتبها الزائر بالموقع لديك

لنقم الان بعمل بعض الامور التي سنستخدمها في درسنا هذا

قم اولا بفتح ملف جديد وضع به التالي:


رمز PHP:

<?php
echo "Welocome To our *** Page";
echo '<br>';
define ('email','m.n--@hotmail.com');
echo email;
echo '<div align=center>';
echo '<br>';

حسنا الكل يعرف ما الذي قمنا بفعله هنا لنرى الان بعض الدوال ونرى طريقة استخدامها

1-

رمز PHP:

echo '<br />'.strpos('www.yahoo.com','.');


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

2-

رمز PHP:

echo '<br />'.substr('user@yahoo.com',0,strpos('user@yahoo.com ','@'));


في هذه الدالة مثلا اردنا ان نستخرج الاسم فقط من قائمة ايميلات لدينا
يمكننا ذلك عن طريق استخدام هذه الدالة ففي هذه الدالة قمنا بالبدء من الفهرس صفر بتعداد الحروف
الى ان يصل الى اشارة @ فبعد ان يصل اليها سيحذف كل ما بعدها ويبقي على الاسم فقط

3-

رمز PHP:

echo trim(' Nabil ');


في هذه الدالة سنرى بعد تشغيل الكود بأن الكلمة التي ستكتب هي فقط Nabil اي ان الفراغات لن تظهر


رمز PHP:

echo ltrim(' Hello ');


لاحظ وجود حرف L قبل trim اختبرها وانظر ما الذي ستفعله

واختبر هذه ايضا


رمز PHP:

echo rtrim(' Hello ');


رمز PHP:

echo trim('....Nabil.....','.');
echo '<br>';
echo ltrim('..Hello..','.');
echo '<br>';
echo rtrim('...Hello...','.');


طيب تعالو نشوف شي جديد هلأ

خلونا نعرف متغير

رمز PHP:

$strvar = 'info@yahoo.com';


وبعدها نتعرف على دالة جديدة وهي str_replace من اسمها بنعرف انه استخدامها هو انه بتقوم بتبديل
شيء معين بشيء اخر طيب خذو هالكود وشوفوه بالمتصفح


رمز PHP:

$c=str_replace('yahoo.com','hotmail.com',$strvar);
echo '<br />'.$c;


حركة حلوة صح ^^

طيب نشوف شي جديد

مثلا حابين تكررو كلمة موجوده عندكم لعدد من المرات تعالو نشوف كيف


رمز PHP:

echo str_repeat('abcd <br />',5);


شفتو كم مره كرر كلمة abcd 5 مرات صح ؟؟

طيب تعالو نخربط احرف هالكلمة ^^


رمز PHP:

echo str_shuffle('Abu zaid');


طيب عنا الان عدد من الكلمات كيف بدنا نعرف عددهم


رمز PHP:

echo str_word_count('Mohammad hesham zaid');


شفتو هالدالة شو حلوه ^^


رمز PHP:

echo strstr('user@yahoo.com','o');


طيب هادي جديدة شفتو حرف الـ o هالدالة بتحذف كل شي قبل هالحرف وبتكتب بس الي بعده


رمز PHP:

$s= str_split('mohammad tahseen alkeswane',4);


وهالدالة بتقسم الجملة كل اربع احرف على حدى حاول تغير الرقم اربعه وشوف ايش بيطلع معك ^^

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


رمز PHP:

print_r (explode('.','192.100.111.255'));


افحصوها بالمتصفح وشوفو شو عملت بالارقام ^^

شوفو هالدالة وحاولو تفصلوها لوحدكم سهلة هي بس بدها شوية تركيز ^^


رمز PHP:

list($domain,$port)=(explode(':','www.hotmail.com: 8080'));
print $domain;
echo '<br>';
print $port ;


وبهيك بنكون خلصنا درسنا لليوم^^

درس سهل وبسيط وما بياخد وقت بالتنفيذ اكتر من نص ساعه^^

Bakenam
04-03-2009, 12:54 AM
السلام عليكم ورحمة الله وبركاتة

كيفكم حبايبي ان شاء الله بخير

اليوم حبايبي بنبدى بوحدة او فصل جديد وهو الفصل الثالث

عنوانة

Using Tables to Display Data

استخدام الجداول لأظهار البيانات

اعتقد بأنكم قادرون على تسخير الـphp مع MySQL لأنتاج صفحات داينميكية
ولكن ماذا لو كان لدينا العديد من الصفوف ونريد اظهارها؟ستحتاج الى القليل من آليات العمل
ليقدر زائرك على قراءة بيانات موقعك بسهولة وكذلك ستحتاج ان تكون جميلة ,عصرية,سهلة,مرتبة.
وستستطيع عمل ذلك كله بأستخدام الجداول.

بهذا الفصل سنتناول عدة امور منها:
* بناء الجداول لوضع البيانات بها
* انشاء الصفوف الرأسية اوتوماتيكيا
* تأهيل الجداول ووضع نتائج الـ MySQL query بها
* جعل المخرجات سهلة للزائر او المستخدم

لنبدأ على مشيئة الرحمن :

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

مثال1: تعريف رأس الجدول.
1- قم بفتح برنامج تحرير الملفات المفضل لديك واكتب به الكود التالي :

http://www.3baer.com/php-les/les12/1.jpg

2- احفظ الملف بأسم table1.php وقم بفتحه بالمتصفح.
ثم انظر الى النتيجة ^^

تذكر بأن ما قمت بعملة موجود بدروس سابقه ولن يتم شرحة حتى لا نضيع الوقت^^

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

* تأهيل الجدول:
مثال2:
1- قم بفتح ملف جديد وسمية table2.php وضع به الكودات التاليه:

http://www.3baer.com/php-les/les12/2.jpg
http://www.3baer.com/php-les/les12/3.jpg

قم بحفظ الملف وجربه بالمتصفح وانظر للذي قمنا به ^^

سأقم الان بشرح ما جاء بالمثال السابق وبعض النقاط المهمه ^^

* اولا قمنا بعمل اتصال بقاعدة البيانات وقمنا بعمل SELECT لثلاث حقول من جدول movie
* ثانيا عن طريق الدالة mysql_num_rows ووضع الـresult بداخلها احضرنا عدد الاعمدة
التي قمنا بحضارها.
* ثالثا عدلنا على راس الجدول واسميناه movie_header
* رابعا قمنا بتعريف متغير جديد واسميناه movie_details ومن ثم قمنا بعمل جملة تكرار
واحضرنا من خلالها بعض المتغيرات من قاعدة البيانات
* ومن ثم اضفنا على movie_details المتغيرات التي احضرناها من دالة التكرار
* نلاحظ بوجود movie_details .= <<<EOD لاحظ وجود نقطه بعد اشارة المساواة
ووظيفة هذه النقطة هي اكمل وضع البيانات داخل المتغير انظر بعد اغلاق دالة التكرار
قمنا بوضع

رمز PHP:

$movie_details .=<<<EOD
<tr>
<td>&nbsp;</td>
</tr>
<tr>
<td>Total :$num_movies Movies</td>
</tr>
EOD;


وهذا يعني اننا كلما اردنا وضع شيء مكمل لبيانات متغير ما نستطيع ذلك بوضع نقطه بعد اسم المتغير

* في دالة التكرار بالسطر الاول اخبرنا البرنامج بأن يضع القيم من الحقل movie_name بداخل
متغير اسميناه $movie_name وفي بقية الاسطر قامت بعمل نفس الشيء.
* ومن ثم قمنا بتعريف متغير اسميناه movie_footer واغلقنا به الجدول
* وبعدها قمنا بتعريف movie وادخلنا به قيم المتغيرات الثلاث التي انشأناها في الملف
* ومن ثم قمنا بطباعتها^^

سهلة جدا وكل امر من الاوامر التي مرت في هذا الملف نعرفها ونعرف كيفية استخدامها ^^

لكن لاحظ بعد انشاء الجدول بأن movie Director و
movie Leadactor قد ظهروا على شكل ارقام
وهذا ليس مستحسن فكيف سيعرف الزائر على ماذا تدل هذه الارقام
لنقم اذن بعمل التغيرات التالية على الملف table2.php ولنظهر اسماء المنتجين والممثلين ^^

مثال3: تطوير الجدول (Link the Tabled together)
http://www.3baer.com/php-les/les12/4.jpg
http://www.3baer.com/php-les/les12/5.jpg
http://www.3baer.com/php-les/les12/6.jpg

كما تلاحظون قمنا بأضافة دالتين واحده لأحضار leadactor والاخرى لأحضار diractor
وهذه الدوال تساعدنا على احضار ما نريد من قاعدة البيانات بدون تغير query الاصلية ^^

الا تلاحظون بأن الصفحة ثابته اعني ميته ما فيها حركة صح طيب شنو رايكم نضيفلها شوية حركات ^^

Who's the Master?
لنقم ببعض التعديلات على ما قمنا به في المثال السابق بوضع بعض الروابط لأسماء الافلام
وعرض صفحة مخصصه لكل فيلم ولنرى من هو الاب ومن هو الابن في هذه الصفحات ^^

مثال4: Adding Links to the Table (اضافة الروابط للجدول)
افتح ملف table2.php وقم بعمل التغيرات التالية على الملف (لن اقم بوضع الكود كامل
ولكن سأقم بوضع علامة تبين التغير الذي قمنا به في الملف )
تأكد بأن تقوم بحفظ الملف بأسم table3.php اي انك لم تقم بالتعديل على الملف table2.php
ولكن قمت بالتعديل عليه وحفظه بأسم أخر

http://www.3baer.com/php-les/les12/7.jpg
http://www.3baer.com/php-les/les12/8.jpg
http://www.3baer.com/php-les/les12/9.jpg

افتح الملف الان بالمتصفح (table3.php) ستلاحظ بانك قمت بأضافة روابط على اسماء الافلام
اول شيء قمنا به هو استدعاء movie_id ومن ثم قمنا بوضعه داخل عبارة التكرار
وبعد ذلك قمنا بعمل بعض التغيرات بلغة html لأضافة الرابط الى اسماء الافلام .^^ رائعه صح ^^
قم الان بتمرير الماوس على هذه اللنكات سترى بشريط الحالة بأنه قد تم انشاء رابط تلقائيا.
هذه الصفحة ستسمى بالصفحة الاب والصفحة التي سنذهب لها بعد الضغط على الرابط تسمى الابن ^^

قبل الذهاب لصنع الصفحة الابن علينا اولا بعمل تحديث لقاعدة بياناتنا واضافة بعض الامور مثل السعر مثلا..

مثال5: Adding Data to the Table (اضافة البيانات للجدول)
1- افتح محرر الملفات الذي تعمل عليه وقم بفتح ملف جديد وسمية alter_movie.php
وقم بوضع الاكواد التالية بداخلة ^^

http://www.3baer.com/php-les/les12/10.jpg
http://www.3baer.com/php-les/les12/11.jpg

قم الان بفتح الملف بالمتصفح وانظر للناتج ^^

اولا قمنا بعمل ALTER TABLE اي اننا قمنا بتعديل بسيط على صفوف الجدول movie
واضفنا له ثلاثة صفوف وهي
movie_running_time
movie_cost
movie_takingsومن ثم قمنا بعمل UPDATE للاعمدة ووضعنا بها البيانات التي اردناها لهذه الاعمدة.

لنقم الان بالذهاب الى الصفحة الابن ولنقم بتسميتها movie_details.php

مثال6: Calculating Movie Takings (حساب الربح والخسارة من الفيلم)
http://www.3baer.com/php-les/les12/12.jpg

سأقم الان بشرح ما سبق بتفصيل قليل ..
1- قمنا بالاتصال بقاعدة البيانات كما نفعل دائما.
2- قمنا بأنشاء دالة لحساب الربح والخسارة وادخلنا لها متغيرين

رمز PHP:

function calc_differences($taking, $cost)


3- وبهذه العملية الحسابية قمنا بحساب الفرق بين السعر والايرادات

رمز PHP:

$difference = $taking - $cost;


4- بهذه العبارة الشرطية قمنا اولا بالتأكد من ناتج العملية الحسابية بأنه اقل من صفر
وهذا يعني ان هناك خسارة بمقدار معين
ولكن لاحظوا وجود substr وهذه عبارة عن دالة تقوم بحذف اول حرف نقوم بكتابتة
فهنا مثلا سيوضع بداخل المتغير $difference عدد ويمكن لهذا العدد ان يكون سالبا
وهذا متوقع لأنه سيكون اقل من الرقم صفر ولهذا فأن هذه الدالة وضعت لنقم بحذف اشارة السالب
لأننا لا يمكن ان نقول هنالك خاسرة مثلا 1000- ناقص الف دولار صح ^^

رمز PHP:

if ($difference < 0 ) {
$difference = substr($difference, 1);
$font_color = 'red';
$profit_or_loss = "$" . $difference . "m";


سأقوم بشرح بعض دوال الـ String في درس منفصل ان شاء الله ^^

وبأخر الملف قمنا بوضع return لأخراج ما نريد من هذه الدالة واقفلنا الدالة....

لنقم الان بأكمال ما بدأنا به ...

مثال7: Displaying the New Informatin (اظهار المعلومات الجديدة)
1- قم بفتح ملف movie_details.php وقم بوضع الكود التالي قبل <? وسم اغلاق الملف

http://www.3baer.com/php-les/les12/13.jpg
http://www.3baer.com/php-les/les12/14.jpg

وقم بحفظ الملف ولكن لا تشغلة الحين اصبر شوي

ملاحظات: لاحظ وجود $_GET['movie_id] في عبارة WHERE هذا المتغير قد اتى من الرابط
في ملف table3.php
لاحظ ايضا انك قمت بأضافة $movie_table_heading لأضافة بعض الحقول للمعلومات التي لديك
لاحظ انك قد قمت بأضافة عبارة التكرار while من ملف table3.php ايضا ولكن بأضافة بعض المتغيرات

لتقم الان بأخراج المطلوب من الملف الذي قمنا بأنشاءه ونضف عليه بعض الكودات
في نهاية الملف الذي قمنا بكتابته اي بعد السطر 84 تقريبا بالصور في ملف movie_details.php

http://www.3baer.com/php-les/les12/15.jpg
http://www.3baer.com/php-les/les12/16.jpg



قم بفتح الملف table3.php واضغط على اي رابط من الثلاث روابط

وانظر الى نتيجة عملك ^^ شي حلو صح ^^

انتهى درسنا لهذا اليوم وامل من الله العلي العزيز ان اكون قد وفقت في طرح الدرس

وفي ايصال المعلومات لكم وان تكونوا قد استفدتم واستمتعتم

وان شاء الله ما يكون في اي نقطة مو واضحه عندكم بأذن الله

وبالنسبة للتطبيق ان شاء الله بيكون بعد هذه المشاركة بقليل

والله ولي التوفيق

Bakenam
04-03-2009, 12:57 AM
السلام عليكم ورحمة الله

اخواني هذه المشاركة تعتبر مكمل لما سبق حتى نختم بها وحدتنا الثالثة بأذن الله

وننتقل الى شيء جديد ,

قمنا بهذا الدرس بأظهار بعض المعلومات على شكل جدول وقمنا بعمل عملية حسابية وما الى ذلك

والان سأقوم بوضع بعض الامور لتزيد من ديناميكية موقعنا وهو بعض الردود او التعليقات على الافلام مثلا..


اولا قم بفتح ملف جديد وضع به الكود التالي :


رمز PHP:

<?php
$connect = mysql_connect("localhost","root","")
or die(mysql_error());
mysql_select_db("moviesite")
or die(mysql_error());

//انشاء جدول جديد
$reviews = "CREATE TABLE reviews (
review_movie_id int(11) NOT NULL,
review_date date NOT NULL ,
review_name varchar(255) NOT NULL,
review_reviewer_name varchar(255) NOT NULL,
review_comment varchar(255) NOT NULL,
review_rating int(11) NOT NULL default 0,
KEY (review_movie_id)
)";

$results = mysql_query($reviews)
or die(mysql_error());

//ملئ الجدول السابق بالبيانات
$insert = "INSERT INTO reviews
(review_movie_id, review_date, review_name,
review_reviewer_name, review_comment, review_rating)
VALUES
('1', '2003-08-02', 'This movie rocks!',
'John Doe','I thought this was a great movie even though
my girlfriend made me see it against my will.' ,'4'),
('1','2003-08-01','An okay movie',
'Billy Bob','This was an okay movie. I liked Eraserhead
better.','2'),
('1','2003-08-10','Woo hoo!',
'Peppermint Patty','Wish I\'d have seen it sooner!','5'),
('2','2003-08-01','My favorite movie',
'Marvin Marian','I didn\'t wear my flair to the movie but
I loved it anyway.','5'),
('3','2003-08-01','An awesome time',
'George B.','I liked this movie, even though I thought it
was an informational video from our travel agent.','3')";

$insert_results = mysql_query($insert)
or die(mysql_error());
echo "تمت العملية بنجاح";
?>
احفظة بأسم createreviews.php وقم بفتحه بالمتصفح

ثم افتح ملف movie_details.php وقم بعمل التعديلات التي ستراها بالملف بالاسفل


رمز PHP:

<?php
$link = mysql_connect("localhost","root","")
or die(mysql_error());
mysql_select_db("moviesite")
or die (mysql_error());

/* Function to calculate if a movie made a profit,
loss or broke even */
function calculate_differences($takings, $cost) {
$difference = $takings - $cost;

if ($difference < 0) {
$difference = substr($difference, 1);
$font_color = 'red';
$profit_or_loss = "$" . $difference . "m";
} elseif ($difference > 0) {
$font_color ='green';
$profit_or_loss = "$" . $difference . "m";
} else {
$font_color = 'blue';
$profit_or_loss = "Broke even";
}
return "<font color=\"$font_color\">" . $profit_or_loss . "</font>";
}

/* Function to get the director's name from the people table */
function get_diractor() {
global $movie_diractor;
global $diractor;

$query_d = "SELECT people_fullname " .
"FROM people " .
"WHERE people_id='$movie_diractor'";
$results_d = mysql_query($query_d)
or die(mysql_error());
$row_d = mysql_fetch_array($results_d);
extract($row_d);
$diractor = $people_fullname;
}


/* Function to get the lead actor's name from the people table */
function get_leadactor() {
global $movie_leadactor;
global $leadactor;

$query_a = "SELECT people_fullname " .
"FROM people " .
"WHERE people_id='$movie_leadactor'";
$results_a = mysql_query($query_a)
or die(mysql_error());
$row_a = mysql_fetch_array($results_a);
extract($row_a);
$leadactor = $people_fullname;
}

$movie_query = "SELECT * FROM movie " .
"WHERE movie_id ='" . $_GET['movie_id'] . "'";

$movie_result = mysql_query($movie_query, $link)
or die(mysql_error());

$movie_table_headings=<<<EOD
<tr>
<th>Movie Title</th>
<th>Year of Release</th>
<th>Movie diractor</th>
<th>Movie Lead Actor</th>
<th>Movie Running Time</th>
<th>Movie Health</th>
</tr>
EOD;

$review_table_headings=<<<EOD
<tr>
<th>Date of Review</th>
<th>Review Title</th>
<th>Reviewer Name</th>
<th>Movie Review Comments</th>
<th>Rating</th>
</tr>
EOD;

$review_query = "SELECT * FROM reviews " .
"WHERE review_movie_id ='" . $_GET['movie_id'] . "' " .
"ORDER BY review_date DESC";

$review_result = mysql_query($review_query, $link)
or die(mysql_error());

while($review_row = mysql_fetch_array($review_result)) {
$review_flag =1;
$review_title[] = $review_row['review_name'];
$reviewer_name[] = ucwords($review_row['review_reviewer_name']);
$review[] = $review_row['review_comment'];
$review_date[] = $review_row['review_date'];
$review_rating[] = generate_ratings($review_row['review_rating']);
}

$i = 0;
$review_details = '';
while ($i<sizeof($review)) {
$review_details .=<<<EOD
<tr>
<td width="15%" valign="top" align="center">$review_date[$i]</td>
<td width="15%" valign="top">$review_title[$i]</td>
<td width="10%" valign="top">$reviewer_name[$i]</td>
<td width="50%" valign="top">$review[$i]</td>
<td width="10%" valign="top" align="center">$review_rating[$i]</td>
</tr>
EOD;
$i++;
}

while ($row = mysql_fetch_array($movie_result)) {
$movie_name = $row['movie_name'];
$movie_diractor = $row['movie_diractor'];
$movie_leadactor = $row['movie_leadactor'];
$movie_year = $row['movie_year'];
$movie_running_time = $row['movie_running_time']." mins";
$movie_takings = $row['movie_takings'];
$movie_cost = $row['movie_cost'];

//get diractor's name from people table
get_diractor();

//get lead actor's name from people table
get_leadactor();

}

$movie_health = calculate_differences($movie_takings, $movie_cost);
$page_start =<<<EOD
<html>
<head>
<title>Details and Reviews for: $movie_name</title>
</head>
<body>
EOD;

$movie_details =<<<EOD
<table width="70%" border="0" cellspacing="2"
cellpadding="2" align="center">
<tr>
<th colspan="6"><u><h2>$movie_name: Details</h2></u></th>
</tr>
$movie_table_headings
<tr>
<td width="33%" align="center">$movie_name</td>
<td align="center">$movie_year</td>
<td align="center">$diractor</td>
<td align="center">$leadactor</td>
<td align="center">$movie_running_time</td>
<td>$movie_health</td>
</tr>
</table>
<br>
<br>
EOD;

if ($review_flag) {
$movie_details .=<<<EOD
<table width="95%" border="0" cellspacing="2"
cellpadding="20" align="center">
$review_table_headings
$review_details
</table>
EOD;
}

$page_end =<<<EOD
</body>
</html>
EOD;
$detailed_movie_info =<<<EOD
$page_start
$movie_details
$page_end
EOD;

echo $detailed_movie_info;
mysql_close();

function generate_ratings($review_rating) {
$movie_rating = '';
for($i=0; $i<$review_rating; $i++) {
$movie_rating .= "<img src=\"thumbsup.gif\">&nbsp;";
}
return $movie_rating;
}

?>

سأفتح لكم المجال بالأستفسار حتى اجد من يسأل ولن اشرح اي كلمة الا عندما ارى منكم استفسارات

واذا في اي شي استصعب عليكم بشرحة مو مشكلة ^^

ساعدتكم وحطيت الملف حتى تقدروا تاخذوه للي يقولون عنه طويل مع انه بنصحكم

انكم تكتبونه بنفسكم بدون مترجعون لهذا الملف ^^

Bakenam
04-03-2009, 12:59 AM
السلام عليكم ورحمة الله وبركاتة

كيفكم حبايبي ان شاء الله بخير

وكيف كان الدرس السابق طويل شوي بس حلو وسهل

طيب في الدرس السابق قمنا بأنشاء الجداول وقاعدة البيانات ووضعنا بها بعض المعلومات

ووصلنا الى هنا

Querying the Data**** (الاستفسار من قاعدة البيانات)

الان لدينا بعض البيانات في قاعدة البيانات التي قمنا بأنشاءها ونود ان نعرضها على الزوار في موقعنا
فكيف يتم ذلك ؟ فالنتذكر ما قمنا بشرحه في بداية الدرس وهو الامر SELECT
انظر لكيفية عملة بالطريقة الصحيحة والمفصلة ...


رمز PHP:

SELECT [fieldname]
AS [alias]
FROM [tablename]
WHERE [criteria]
ORDER BY [fieldname to sort on]
LIMIT [offser, maxrows]


لا تتفاجأ من الكود فهو بسيط وسترى ذلك بعينك لنشرحه الان كلمة كلمة..

SELECT [fieldname] : هذا الامر يقوم بأختيار الحقل الذي تريد عرض بياناته
واذا كنت تريد عرض جميع الحقول ما عليك سوا اضافة * اي نجمة مكان fieldname
تذكر بأن fieldname تعني اسم الحقل المراد اختياره

AS [alias] : بهذا الامر يمكنك دمج عدة حقول في حقل واحد واستدعائها في متغير واحد كبير مثلا

رمز PHP:

SELECT first_name , last_name AS full_name ... ORDER BY full_name...


ملاحظة : لايمكنك استخدام AS مع WHERE

FROM : في هذا الجزء البسيط تحتاج فقط لكتابة اسم الجدول الذي تريد احضار البيانات منه

WHERE : ستشرح لاحقا مع المثال

ORDER BY : استخدم هذا الامر اذا كنت تريد ترتيب البيانات في الحقول
واذا كنت تريد ان تظهر الحقول مرتية تنازليا اضف DESC

LIMIT : هذا الخيار يسمح لك بأختيار الحد الذي تريد جلبه من البيانات مابين وبين مثلا
LIMIT 9, 10
هذا الامر يظهر لك المدخلات من 10 الى 19 يستخدم مثلا عندما تقوم ببرمجة سكريبت
ويوجد خيار يسمح للمستخدم بالوصول الى الصفحة التالية مثلا عند فتح موضوع يوجد به اكثر من صفحة
فبأمكانك من خلال هذا الخيار عند ضغط العضو على رقم الصفحة ان ينتقل لها...

كانت هذه مراجعة بسيطة لما قمنا بتعلمة في الدرس السابق والان لنكمل على بركة الله

WHERE , oh WHERE

الجملة WHERE تستحق ان يكون لها قسم مخصص بها لأنها لب الاستفسارات,
WHERE تشبة الاخ الكبير الذي يمكنه بالفعل القيام بأشياء مفيدة جدا ,
SELECT هي من يخبر MySQL اي حقل تريد ان تعمل عليه ,
WHERE هي من يخبر MySQL اي بيانات تريد استرجاعها او العمل عليها
وتستخدم بالطريقة التالية:


رمز PHP:

SELECT * FROM customers
//يسترجع كل المعلومات الموجوده في حقل customers

SELECT * FROM customers WHERE gender = "Male"
//يسترجع كل البيانات الموجوده في الحقل السابق وتخص الذكور فقط


بعض الملاحظات المهمة:
** عمليات المقارنة هي قلب جملة WHERE وهي التالية:

رمز PHP:

=,<,>,=<,=>,!=


LIKE و % : مع هذه الخيارات يمكنك ان تقوم بالبحث عن اي شيء تريد
ارقام او احرف او نصوص وتستخدم بالطريقة التالية:

رمز PHP:

SELECT * FROM products WHERE de******ion LIKE "%shirt%"


في هذه الجملة قمنا بالبحث عن كلمة shirt وعند وضع هذه العلامة % بأولها
فأنها تقوم بالبحث عن ما قبل كلمة shirt مثلا t-shirt او blue shirt
ووضعها ما بعد كلمة shirt فأنها تقوم بالبحث عن ما بعد كلمة shirt مثلا no shirt here

** العمليات المنطقية : مثلا

رمز PHP:

SELECT *FROM products WHERE de******ion LIKE "%shirt%" AND price < 25


في هذه الجملة نبحث عن الحقول التي تحتوي على shirt و (AND) سعرها اقل من 25

لننتقل الان الى مثال تطبيقي لنقم برؤية كيفية عمل هذه الجملة...

افتح ملف جديد وقم بتسميتة select.php واكتب به الكود التالي:

http://www.3baer.com/php-les/les11/1.jpg

اولا قمنا بالاتصال بقاعدة البيانات وثم قمنا بالتأكد من اختيار قاعدة البيانات
وبعدها قمنا بتعيين متغير اسمه query قمت بأختيار الحقول movie_name و movie_type
فقط ومن ثم قمت بأخبار الخادم من اي جدول تريد البيانات وكان movie
ومن ثم وضعت شرط بأن يحضر البيانات عندما يكون الحقل movie_year اكبر من 1990
وبعدها طلبت من الخادم ان يقوم بترتيب البيانات حسب الmovie_type
وذلك من خلال "ORDER BY movie_type"
وبعدها جمعنا كل الحقول عن طريق الدالة mysql_query
وبعدها قمت بتكرار النتائج لتستطيع كتابتها
واحده تلو الاخرى عن طريق while
ولقد قمت هنا بتخزين النتائج داخل مصفوفة اسمها $row
بأستخدم الداله mysql_fetch_array
ومن ثم قمت بأستخراجها جميعها عن طريق extract function
ومن ثم قمت بطباعة ما تحتاجه لاحظ انك قمت بوضع
النتائج الخارجة من extract بداخل
المتغيرات $movie_name والاخر movie_type لاحظ انه عندما تقوم بتغير اسماء هذه المتغيرات
سيحدث لديك خطأ حاول تغيير اسم المتغير وسترى ما الخطأ الناتج ^^

حسنا استخدمنا في المثال السابق جملة التكرار while لما لا نستخدم for each ولنرى الفرق

العمل مع مصفوفات البيانات (foreach)

لنقم الان بفتح ملف select.php ونقوم بالتعديل التالي عليه

http://www.3baer.com/php-les/les11/2.jpg


ستلاحظ بأنك عند تشغيل الملف بأن النتائج التي ظهرت هي نفسها في المثال السابق
ولكن الاختلاف انه لا يوجد شرطه بين الرقم واسم الفيلم
والسبب هو لأننا استخدمنا mysql_fetch_array بالحقيقه يكون قد رجع منها قيمتين
واحدة للفهارس او المفاتيح بالجدول والاخرى لعدد الفهارس
وبهذه الدالة mysql_fetch_assoc قمنا بأخذ المتغير $results وارجعناه بقيمتين
ولكن داخل مصفوفة واحدة .
اي اننا قمنا بأخذ القيم التي طلبناها في query ووضعناها في results ومن ثم حولناها الى
مصفوفة واحده فقط ولكن يوجد بها قيمتين وطلبنا من المتصفح اظهارهما.

لنقم الان بأستخدام foreach لبناء جدول ووضع به البيانات التي نريدها

قم اولا بفتح ملف جديد واكتب به الكود الموجود بالصورة واحفظه بأسم select2.php

http://www.3baer.com/php-les/les11/3.jpg

سترى الان جدولا يحتوي على بعض القيم التي قمنا بطلبها اي اننا بالبداية
قمنا بأستدعاء القيم وقمنا برسم جدول كما سبق وطبقنا مثالا عليها وهو جدول الضرب
ومن ثم قمنا بوضع جملة التكرار لجلب القيم وخزناها في القيمة value وقمنا بطباعتها
سهلة لا تحتاج لشرح اكثر من هذا لأنها كلها تطبيق على دروس سابقة..

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

A Tale of Two Tables
كما سبق وتكلمنا عن استرجاع القيم او طلبها كما هي مكتوبة في الجدول المخصص لها
فلنأخذ مثلا movietype نوع الفيلم كما شاهدتم في المثال السابق كان مجرد ارقام
فكيف يمكننا ان نحضره من جدولة المخصص ونضعه بدلا من هذه الارقام انظر للكود التالي:


رمز PHP:

$query = "SELECT customers.name, orders.order_total
FROM customers,orders
WHERE customers.cust_ID = orders.cust_ID";


في الكود السابق طلبنا customers name من جدول customers
و order_total من جدول orders بحيث يكون cust_ID في جدول الـcustomers
مساوي للحقل cust_ID من جدول orders .

اذا كان cust_ID يساوي 123 سترى بأن كل الـ order_total لكل الطلبات في جدول orders
قد تم استدعائها .
وايضا ليس من الضرورة ان يكون اسماء الحقول متساوي فيمكنك مثلا عمل التالي:
WHERE customers.email = orders.shiptoemail

لنرى الان مثالا تطبيقيا على ما سبق ..

افتح الملف select2.php وقم بعمل التعديلات التالية عليه..

http://www.3baer.com/php-les/les11/4.jpg

قم بفتح الملف في المتصفح وانظر للأختلاف الذي حصل
قام الملف بأستدعاء اسم الفلم والنوع الخاص به وعرضة على المتصفح
انجاز رائع اليس كذلك ^^

Joining Two Tables
يوجد تشابة بين حياتنا وبين الكود البرمجي فنستطيع ان نربط اي شيئين ببعضهما البعض
وايضا في الكود البرمجي نستطيع ربط اي جدولين في قاعدة البيانات وذلك يكون بأستخدام JOIN

الدالة JOIN تقوم بمنحك تحكم كبير بروابط قاعدة البيانات الخاصة بك لربط الجداول ببعضها بشكل كبير

لنأخذ هذا المثال ولنقم برؤية مخرجاته ^^

http://www.3baer.com/php-les/les11/5.jpg


قم بتشغيل الملف بالمتصفح الان وانظر للنتيجة^^

سترى بأن النتائج هي ذاتها التي رايناها في المثال السابق ببساطة لقد قمت بترتيب كل الحقول
التي تريد رؤيتها ..

بالبداية قمنا بطلب العبارة SELECT :

SELECT movie_name, movietype_label

ومن ثم قمت بأخبار الـ Mysql اي جدول تريد ان يحضر منه المعلومات ومن ثم
قمت بوضع نوع الرابط التي تريده بينهما :

FROM movie
LEFT JOIN movietype

استخدمنا هنا LEFT لنخبر الخادم بأن الجدول movietype هو التابع للجدول movie

ومن ثم قمت بأخبار الخادم بالحقول التي تريد ربطها ببعضها وكانت بأستخدام

ON movie_type = movietype_id

سيتم شرحها بشكل مفصل بالدروس القادمة ولكن عليك الان معرفة ما قمت بشرحة في هذا المثال البسيط

وبهذا الدرس نكون قد انتهينا من الوحدة الثانية ولكن لم ننتهي بعد من قواعد البيانات
ولا من php فتذكروا بانها بحر واسع وفيه العديد من الاسرار

عنوان فصلنا القادم هو استخدام الجداول في اظهار البيانات ^^

وفي مشاركتي القادمة سأضع لكم تطبيقا جميلا وبسيطا على هذه الدروس ^^

اتمنى لكم التوفيق من كل قلبي واتمنى ان اكون قد اوصلت المعلومة بالشكل المناسب

والسلام

Bakenam
04-03-2009, 01:00 AM
التدريب بيكون كالتالي

اولا قم بأختيار الافلام الكوميدية فقط comedy من جدول movie

وقم بعرض اسم الفيلم والسنة التي انتج فيها movie_name , movie_year

وقم بترتيبهم ترتيبا ابجديا اكيد التطبيق سهل وخفيف ^^

Bakenam
04-03-2009, 01:02 AM
السلام عليكم ورحمة الله وبركاتة

كيفكم حبايبي عساكم تكونوا بألف خير

في الدرس الماضي تعرفنا على قواعد البيانات وماهيتها واستخدامها وعلى بعض الامور

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

وسنتطرق في هذا الدرس الى :

1- MySql syntax and Commands (اوامرها وطريقة كتابتها)

2- كيفية دمج الـPHP مع MySQL

3- الربط بخـادم الـ MySQL

4- كيفية انشاء قواعد البيانات وعمل الجداول من خلال الأكواد

5- تطبيقات عملية وشرح كل كود سنقوم بكتابته على حدى

6- Querying the Data**** (الاستفسار من قاعدة البيانات)

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

اولا: MySql syntax and Commands

تكلمنا عن طريق ارسال الاوامر الى قواعد البيانات وقلنا بأن هنالك العديد من الطرق

ولكن في شروحاتنا سنتظرق لأرسالها من خلال ملفات الـ PHP فهنا وهناك الـ syntax هو نفسة

ولا يوجد اي اختلاف به.

اوامر التي سنستخدمها خلال شروحاتنا هي :

* CREATE : وهي لأنشاء قواعد البيانات والجداول في MySQL .
* ALTER : لتعديل الجداول الموجوده في قواعد البيانات .

* SELECT : اختيار اي نوع من البيانات الموجوده في القواعد مثلا الاسم الاول او موضوع معين.

* DELETE : لحذف البيانات الموجودة في الجداول .

* DESCRIBE : لتعرف تنظيم وتفصيلات الجداول .

* INSERT INTO tablename VALUES : لوضع القيم داخل الجداول

* UPDATE : لتحديث البيانات في الجداول .

* DROP : لحذف جدول محدد او قاعدة بيانات كاملة.

ثانيا : كيفية دمج الـPHP مع MySQL

بأستطاعتنا استخدام اوامر الـMySql مع الـ PHP بكل سهولة ويسر مثلما قمنا بذلك مسبقا مع الـHTML

وهذه بعض الدوال التي سنستخدمها في دروسنا القادمة وفي هذا الدرس :

1-

رمز PHP:

mysql_connect("hostname", "user", "pass")


وتستخدم هذه الدالة للربط مع السيرفر الخاص بـMySql
وهي مكونه من الدالة mysql_connect و hostname ويكون اغلب الاوقات localhost
user وهو مستخدم السيرفر ويكون في خادم الجمل هو root والـpass وبتكون حسب اختيارك
وفي حالتنا اعتقد بأنك لم تقم باختيار pass او كلمة مرور للخادم فتكون فارغة .

2-

رمز PHP:

mysql_select_db("data**** name")


وتستخدم لأختيار قاعدة البيانات التي تريد العمل عليها وهذه data**** name ستكون اسم قاعدة البيانات
التي سنقوم بأرسال البيانات لها وملئها بالجداول .

3-

رمز PHP:

mysql_query("query")


تستخدم لأرسال اي نوع من البيانات او الاوامر للخادم او للserver

4-

رمز PHP:

mysql_fetch_rows("results variable from query")


تستخدم لأرجاع القيم والمدخلات من الاعمدة او الحقول من قاعدة البيانات

5-

رمز PHP:

mysql_fetch_array("results variable from query")


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

6-

رمز PHP:

mysql_error()


لأظهار الاخطاء التي تعود من سيرفر الـmysql

عليك ان تكون اكثر تألفا مع هذه الاوامر والاوامر الكثيرة الاخرى فهي ستسهل عليك عملك بشكل كبير
فبأمكانك ارسال اي نوع من الاوامر الى قاعدة البيانات بأستخدام هذه الاوامر مثلا هذا :


رمز PHP:

$query="SELECT * from TABLE";
$results=mysql_query($query);


سهلة جدا لا تتفاجأ فعند سرحها ستجدها من ابسط الاوامر التي ستراها في حياتك .

لننتقل الان الى الامرالثالث وهو
الربط بخـادم الـ MySQL

قبل ان تقوم بعمل اي شي مع MySql عليك اولا ان تقوم بربط قاعدة البيانات مع الخادم عن طريق بعض الاوامر
وهذا شرح لهذه الاوامر او ما ستحتاجه لربط قاعدة البيانات مع الخادم ..

* Host name : وفي حالتنا فأنك قمت بتنصيب خادم الجمل على localhost ولن تتغير الا اذا
كان اسم الخادم مختلف في بعض السيرفرات التي ستعمل عليها سكربتاتك

* Username and Password : اذا كنت قد غيرت اسم المستخدم للخادم من خلال تنصيب خادم الجمل
فسيكون حسب ما اخترت من اسم المستخدم او كلمة المرور اما اذا لم تغير في شيء فسيكون
اسم المرور هو : root
وكلمة المرور :فارغة او حسب اخيارتك من خلال تنصيبك للسيرفر الشخصي في بداية دروسنا

ستسخدم هذه الاوامر مع دالة تسمى mysql_connect ويمكنك استخدامها بطريقتين اما ان تضعها
داخل متغيرات او تجعلها كما هي نصية وهذا مثال على ما مضى..


رمز PHP:

$host = "localhost";
$user = "root";
$pass = "";
$connect = mysql_connect($host , $user , $pass);


وهذه الجملة هي مطابقة تماما للجملة الماضية ..

رمز PHP:

$connect = mysql_connect ("localhost , "root" , "");


فأختر ما شئت منهما ..

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

كيفية انشاء قواعد البيانات وعمل الجداول من خلال الأكواد
قاعدة البيانات التي سنستخدمها في سكربتنا التي عملنا عليه منذ بداية دورتنا وهو سكريبت موقع الافلام
ستحتوي على ثلاث جداول
1- movie والذي سيستخدم لتخزين اسماء الافلام ومعلومات عنها
2- movietype الذي سيستخدم لتخزين انواع الافلام المختلفة
3- people والذي سيستخدم لتخزين اسماء الممثلين والمخرجين لهذه الافلام

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

تأكد بعد كتابة الاكواد ان تقوم بفتح الملف creatmovie.php ومن ثم moviedata.php

وانه لم يظهر لك اي خطأ وظهرت جملتين النجاح بالعملية

اولا لنقم بفتح ملف جديد ولنقم بتسميته creatmovie.php .. واكتب به الكود التالي :

http://www.3baer.com/php-les/les10/1.jpg
http://www.3baer.com/php-les/les10/2.jpg

شرح ما قمنا بكتابتة في هذا الملف ..

كما لاحظنا في البداية قمنا بالاتصال بالخادم من خلال الدالة mysql_connect
وقمنا بأعطائها القيم المطلوبة للأتصال ومن ثم من خلال الدالة or die فأنه اذا حدث خطأ في الاتصال
سيقوم المتصفح بأظهار الجملة فشل الاتصال تأكد من البيانات

ومن ثم قمنا بأنشاء قاعدة البيانات التي سنقوم بالعمل عليها في كامل السكريبت وهذه الاكواد التي ستخدمناها
mysql_query وارسلنا من خلالها الامر بأنشاء قاعدة البيانات
CREATE DATA**** وهو امر ضروري يجب كتابته عندما تريد ان تنشئ قاعدة
IF NOT EXISTS وهذا الشرط الذي يساعد على عدم ظهور خطأ عند بناء قاعدة البيانات
فأذا كانت موجود فلن يظهر خطأ يقول لك بأنها موجودة مسبقا
moviesite وهو اسم قاعدة البيانات..

ومن ثم قمنا بالتأكد بأننا نقوم بالاتصال بقاعدة البيانات التي نريد وهو اساسي من خلال الدالة
mysql_select_db

نأتي الان لأنشاء الجداول ..

قمنا بأستدعاء الامر CREAT TABLE وهو لانشاء الجدول المراد انشاءه ومن ثم وضعنا اسم الجدول بجانبه
وهو movie

ومن ثم قمنا بفتح قوس ووضعنا اسم اول عمود او حقل بهذا الجدول وكان movie_id
بعدها اخترنا النوع وكان نوعه INT وفتحنا قوس ووضعنا عدد الارقم وهو 11
وعيناه على انه ليس فارغ بأستخدام NOT NULL
ومن ثم اضفنا عليه بأنه متزايد بالعباره auto_increment وانهينا الحقل الاول بالفاصلة ,

وكذلك الحال مع باقي الحقول وهناك اضافات على الحقول وهي
default وهي لتعيين الرقم الافتراضي بـ صفر
ومن ثم اخترنا الحقل movie_id على انه الفهرس الاساسي PRIMARY KEY

ومن خلال هذه الجملة


رمز PHP:

KEY movie_type (movie_type,movie_year)


قمنا بوضع الحقل movie_type على انه فهرس اضافي ويندرج تحته movie_type و movie_year

ثم من خلال الدالة mysql_query قمنا بوضع هذه المعلومات داخل قاعدة البيانات

وكذلك الحال في باقي الجداول ....

يرجى دراستها جيدا واي استفسار او شيء غير مفهوم السؤال عنه لأنها مهمه جدا

وملاحظة مهمه جدا ايضا تأكد جيدأ بأنك قد كتبت الكود بالشكل الصحيح ارجوكم ثم ارجوكم
تأكدوا من كل حرف تكتبوه ومن طريقة كتابتكم للحروف لأنها حساسة جدا وتحتاج الى الكثير من التركيز..

لننتقل الان الى ادراج المعلومات التي نريدها في قاعدة البيانات والجداول التي قمنا بأنشائها

ولنقم بفتح ملف جديد ونسمية moviedata.php واكتب به الكود التالي :

http://www.3baer.com/php-les/les10/3.jpg
http://www.3baer.com/php-les/les10/4.jpg

لنقم الان بشرح ما سبق شرحا كاملا ولكن انتبه اولا قبل ان تذهب للشرح عليك بالتأكد من ظهور جملة

تم ادخال البيانات بنجاح!

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

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

لنأتي الان للأمر INSERT INTO في هذا الامر نقوم بأدخال البيانات التي نريد في جدول معين
وقمنا بتعين الجدول movie في هذا الامر لنقوم بأدخال المعلومات الية
ومن ثم قمنا بفتح قوس ووضعنا اسماء الحقول التي نريد وضع البيانات بها انتبه فترتيب اسماء
الحقول مهم جدا في هذه المرحلة ومن ثم قمنا بكتابة كلمة VALUES لندل الكود على ان هذه
هي القيم التي نريد ادراجها في هذه الحقول لنأخذ مثلا


رمز PHP:

(movie_id, movie_name, movie_type, " .
"movie_year, movie_leadactor, movie_diractor) " .
"VALUES


نلاحظ هنا اننا قمنا بكتابة اسماء الحقول التي اردنا ان نضيف لها البيانات وقمنا بفصلها بالفاصلة
وقبل ان ننتقل الى السطر التالي قمنا بوضع علامة تنصيص ومن ثم نقطة وانتقلنا الى السطر التالي
وبعدها قمنا بوضع علامة تنصيص واكملنا اسماء الحقول واغلقنا القوس ووضعنا اشارة التنصيص
ونقطه ومن ثم كتبنا كلمة VALUES وفتحنا قوسا جديدا انظر للترتيب في ادراج البيانات الاولى
بداخل الحقول ...


رمز PHP:

movie_id = 1
movie_name = 'Bruce Almighty'
movie_type = 5
movie_year = 2003
movie_leadactor = 1
movie_diractor = 2


لاحظ بالحقل الاول قمنا بوضع الرقم 1 بجانب لتعيينه في movie_id
ومن ثم وضعنا 'Bruce Almighty' لتعيينه في movie_name اي انه اسم الفيلم
ومن ثم وضعنا الرقم 5 بجانب movie_type حسنا هنا من اين اتى الرقم 5 سأجيب
ولكن هل تذكرون الملف الاول مالذي قمنا بفعله في جدول movietype قمنا بجعل الحقل
movietype_id على انه مفتاح اساسي PRIMARY KEY صحيح وفي الملف الثاني
قمنا بأدخال انواع الافلام Drama و Comedy كان رقم Comedy هو الرقم 5

حسنا لتفهمو اكثر المفتاح الاساسي الذي هو Comedy تم استدعاء الرقم الخاص به وهو 5
في الحقل movie_type في الادخال الاول الذي سيتم في الجدول movie
اي اننا قمنا بربط الحقل movie_type بالجدول movie بالرقم 5 من الجدول movietype

ومن ثم ادخلنا movie_year وكانت 2003
وبعدها movie_leadactor الذي قمنا بوضع القيمة له وهي واحد (1) اي ان هذا الفيلم لـJim Carrey
وقمنا بربطه بالجدول people

انظر للصورة وستفهم ان شاء الله

http://www.3baer.com/php-les/les10/table.jpg


اتمنى ان تكونوا قد فهمتم ما قمت بشرحة هو بسيط جدا ولكن يريد القليل من التركيز صدقوني
فقط القليل من التركيز وستصبح سهلة جدا عليك..
ومع تطبيق الملفات السابقه لمرتين او ثلاث مرات ستصبح اسهل اكثر واكثر
الاهم الان هو ان لايظهر لديك اي خطأ في كتابة الكود وان تكتبة بالطريقة الصحيحة..


لننتقل الان الى الجزء السادس والاخير من هذا الدرس وهو

Querying the Data**** (الاستفسار من قاعدة البيانات)

الان لدينا بعض البيانات في قاعدة البيانات التي قمنا بأنشاءها ونود ان نعرضها على الزوار في موقعنا
فكيف يتم ذلك ؟ فالنتذكر ما قمنا بشرحه في بداية الدرس وهو الامر SELECT
انظر لكيفية عملة بالطريقة الصحيحة والمفصلة ...


رمز PHP:

SELECT [fieldname]
AS [alias]
FROM [tablename]
WHERE [criteria]
ORDER BY [fieldname to sort on]
LIMIT [offser, maxrows]


لا تتفاجأ من الكود فهو بسيط وسترى ذلك بعينك لنشرحه الان كلمة كلمة..

SELECT [fieldname] : هذا الامر يقوم بأختيار الحقل الذي تريد عرض بياناته
واذا كنت تريد عرض جميع الحقول ما عليك سوا اضافة * اي نجمة مكان fieldname
تذكر بأن fieldname تعني اسم الحقل المراد اختياره

AS [alias] : بهذا الامر يمكنك دمج عدة حقول في حقل واحد واستدعائها في متغير واحد كبير مثلا

رمز PHP:

SELECT first_name , last_name AS full_name ... ORDER BY full_name...


ملاحظة : لايمكنك استخدام AS مع WHERE

FROM : في هذا الجزء البسيط تحتاج فقط لكتابة اسم الجدول الذي تريد احضار البيانات منه

WHERE : ستشرح لاحقا مع المثال

ORDER BY : استخدم هذا الامر اذا كنت تريد ترتيب البيانات في الحقول
واذا كنت تريد ان تظهر الحقول مرتية تنازليا اضف DESC

LIMIT : هذا الخيار يسمح لك بأختيار الحد الذي تريد جلبه من البيانات مابين وبين مثلا
LIMIT 9, 10
هذا الامر يظهر لك المدخلات من 10 الى 19 يستخدم مثلا عندما تقوم ببرمجة سكريبت
ويوجد خيار يسمح للمستخدم بالوصول الى الصفحة التالية مثلا عند فتح موضوع يوجد به اكثر من صفحة
فبأمكانك من خلال هذا الخيار عند ضغط العضو على رقم الصفحة ان ينتقل لها...

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

اعتقد بأنه بيكفي لحد هون لأنه عنجد الدرس جدا طويل ومحتاج متابعة وفهم مظبوط
حتى تطلع معاكم الامور تمام

والي ما فهم اي نقطه ممكن انه يستفسر عنها بالموضوع المخصص
الموضوع ليس بالهين ولكن ايضا ليس بالصعب فقط شوية تركيز وصدقوني لو ركزتو فقط ساعه او ثنين
رح تسيب الدرس وتروح تطبق بدون اي مشاكل

بالنسبة للتطبيق بيكون بالمشاركة التالية ان شاء الله

طبعا الوقت المحدد للدرس حيكون يومين من هذه اللحظة ان شاء الله

والله يوفقكم جميعا حبايبي

واتمنى اني اكون وفقت في عرض الشرح
وبصراحة ما رح تجدوا اسهل من هيك شرح لكل نقطه في اي مكان http://www.traidnt.net/vb/images/smilies/bleh.gif

والله يوفقكم وايانا ان شاء الله

والسلام ^^

Bakenam
04-03-2009, 01:03 AM
السلام عليكم ورحمة الله وبركاتة

كيفكم حبايبي صدق وحشتوني

انتهينا بالوحدة الماضية من التعرف على لغة البرمجة PHP وتعلمنا كيفية استخدامها وتعلمنا الكثير والكثير

والان حان الوقت لجعل موقعنا اكثر دايناميكية واظهار القوى الحقيقية في هذه اللغة , فأذا كانت لديك

بعض الخبرة في قواعد البيانات او لم تكن لديك اي خبرة بها فستتعرف على ماهية ال MySql

وكيف يمكن استخدامها في PHP فهنا ستتعلم كيف تجعل حياتك اسهل مع هذه اللغة
(بأمكانك شكري في وقت لاحق) http://www.traidnt.net/vb/images/smilies/bleh.gif

حسنا سنأخذ في هذه الوحدة :

1- فهم قواعد البيانات Mysql
2- عرض البيانات بأستخدام Mysql
3- ربط قواعد البيانات من موقعك الشخصي
4- وضع البيانات في قاعدة البيانات من خلال موقعك الشخصي
5- والكثير الكثير http://www.traidnt.net/vb/images/smilies/cupidarrow.gif

لنأخذ خلفية بسيطة عن قواعد البيانات وطريقة كتابة اكوادها وبنية قواعد البيانات:

MySql هي نظام علاقات قواعد البيانات, أي ان المعنى الاساسي انها تمكنك من تخزين
قطاعات من البيانات في مساحات منفصلة عن بعضها البعض وربط هذه المساحات ببعضها البعض.
وبأمكانك تخزين اي شيء تريد في قواعد البيانات مثل دفتر مواعيد كامل والكثير الكثير.

أوامر الـMySql : يمكنك كتابتها بالعديد من الطرق ومنها Prompt اي من خلال الـDos .

بنية الـMySql البنية الاساسية لقواعد البيانات تكون على شكل :
* Tables : جداول
* Fields :حقول

لأن الـMySql نظام علاقات بين قواعد البيانات فأنها تسمح لك بوضع المعلومات بداخل الجداول
او مساحات متصله بشكل وثيق لتخزين المعلومات بها,على سبيل المثال الحقل الاول نضع به الاسم الاول
وحقل اخر نضع به الاسم الاخير والحقول يمكنها تخزين انواع متعددة من البيانات مثلا نصوص او ارقام والكثير

ومثال اخر تخيل بأن لديك جدول وهذا الجدول يحتوي على اسم وعنوان ورقم لمستهلك وجدول اخر يخزن به
رقم المستهلك ويوجد به قائمه من الطلبات لهذا المستخدم في هذا النظام الذي يدعى one:many
وهذا يعني ان لدينا مستخدم واحد لدية الكثير من الطلبات فنأخذ رقم هذا المستخدم من الجدول
الذي قمنا بوضع معلوماته به ونضع هذا الرقم امام كل طلب تم شراءه من خلال هذا المستخدم.

لنتعرف الان على انواع تخزين المعلومات في قواعد البيانات:
الانواع الرقميه :

TINYINT يحتوي على 255 رقم وليس خانة (-128 الى 127)

SMALLINT يحتوي على 65535 رقم وليس خانة (-32768 الى 32767)

MEDUIMINT
(-838608 الى 838607)


INT الرقم كبير جدا

INTEGER

BIGINT الرقم كبير جدا

الانواع العشريه :

FLOAT

DOUBLE

REAL

DECIMAL

NUMERIC

الوقت والتاريخ :

DATE
YYYY-MM-DD

TIME
HH-MM-SS

DATETIME

TIMESTAMP

YEAR

النصوص العاديه :

CHAR وهو لحجز 255 حرف يبدا من 0 وينتهي بـ 255

VARCHAR خاصيتها تقوم بحجز الاحرف التي يقوم بأستهلاكها المستخدم وتتسع لـ 255 حرف ايضا

الكتابات و ( BLOB ) :

TINYBLOB

TINY****

BLOB مثل ال**** ولكنه حساس لحالة الاحرف

**** يمكنه استيعاب ما يقارب 65535 حرف

MEDUIMBLOB

MEDUIM**** يمكنه استيعاب ما يقارب16.777.216 حرف

LONGBLOB

LONG**** يمكنه استيعاب ما يقارب 4.294.967.295 حرف

الخيارات والتعدديه:

ENUM
حالة من قيمتين مثل الجمل الشرطية جوابها TRUE او FALES

رمز PHP:

enum('male','female')


SET

الان لننتقل الى كيف يمكننا استخدام هذه الانواع وكيف نختار نوع الحقل الصحيح:

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

لنقم الان بالتعرف على صفات الحقول في قواعد البيانات ونبدأ بـ

1-نوع البيانات المدخلة للحقل

1- هل الحقل سيحتوي على احرف وارقام ؟
الجواب : اذا كان الجواب نعم,سنحتاج الى احد الانواع التالية:
char,varchar,****,tiny****,medium****,long****,
blob,tinyblob,mediumblob,longblob

2- كم عدد الاحرف التي نحتاجها؟
- 0-255 : استخدم varchar اذا كنت تريد ان تحذف المسافات بين الاحرف او وضع قيمة افتراضية
استخدم tiny**** اذا كنت لاتهتم الى المسافات او القيم الافتراضية او ان النص التي تريده
لا يتحسس الى حالة الاحرف اذا كانت كبيرة او صغيره.
استخدم tinyblob اذا كنت لا تهتم في المسافات او القيم الافتراضية او حالة الاحرف.

- 256-65536 : استخدم **** اذا كان النص لا يهتم الى حالة الاحرف
استخدم blob اذا كان يهتم بحالة الاحرف

- 65537-1677215 : استخدم meduim**** حالة الاحرف غير مهمه
استخدم mediumblob حالة الاحرف مهمه

اكبر من ذلك استخدم long**** او longblob

واذا كان الجواب على سؤالك الاول بـ لأ
- اذا كنت تريد تخزين الوقت و / او التاريخ استخدم timestamp
- اذا كنت تريد تخزين الوقت فقط استخدم time
- اذا كنت تريد تخزين التاريخ فقط استخدم date
- اذا كنت تريد تخزين السنة فقط استخدم year

واذا كان جوابك هو لا ولكنك تريد تخزين الارقام استخدم احد التالية :

- tinyint
(-127 الى 127 )
-smallint
(-32768 الى 32767)
-mediumint
(-8388608 الى 8388607)
اذا كان العدد اكبر من ذلك استخدم int او bigint

والباقي تستخدم بنفس الاستخدام وسنأتي لهم لاحقا واحده واحده..

لنكمل مسيرتنا في التعرف على انواع الحقول ولنذهب الى ..

2- null/not null فارغ او غير فارغ

السيرفر الخاص بـMySql يحتاج الى معرفة هل هذا الحقل الذي ستضع به المعلومات هل سيكون فارغا ام لا.
وبامكانه تعريفة ذلك عن طريق كلمة null او كلمة not null
وعليك معرفة بأن القيمة صفر تختلف عن null وذلك يعني انه اذا وضعت القيمة صفر انه لا يساوي القيمة null

اذا كان الحقل قد تم تعريفة على انه not null ولم يقم المستخدم بوضع اي قيمة به فستقوم MySql
بوضع القيمة صفر بداخلة وذلك تافديا لأي خطأ ممكن ان يحدث .

لنقم الان بالانتقال لشيء جديد وهو الادلة او الفهارس هل تذكر بالمصفوفات شيء يسمى الفهرس او المفاتيح..

Indexes : تستخدم الادلة او الفهارس لتسريع البحث عن المعلومات في الاعمدة المخصصة بها.
كيفية استخدامها وتتم على النحو التالي:
تخيل بأن لديك غرفة بها اكوام والعديد من الاكوام من الايصالات التي تحفظ بها معلومات الشراء
الذي قمت بها في حياتك كاملة .
وانك تريد البحث عن وصل بداخل هذه الاكوام المكومة يعود تاريخة الى سنة 2000
ستريد الى العديد من الايام للبحث عن هذا الوصل حتى تستطيع ايجاده.
حسنا لماذا لا نقوم بترتيب هذه الوصولات حسب السنوات فكل مجموعه من الوصولات ترتب حسب السنة
مثلا سنة 2000 لوحدها وسنة 2001 لوحدها حسنا لنرى الان اذا كنا نستطيع ترتيب الوصلات حسب المحلات
فهذا سيجعل عثورك على الوصل المراد سهلا جدا في المره القادمة اليس ذلك صحيحا ؟..

حسنا تصور الان بان كل هذه المعلومات تم تخزينها في درجك الخاص حسب السنوات وحسب المحلات
وحسب الارقام الموجوده على الوصولات وتريد ان تقوم بأخذ هذه الوصولات ماذا لو كان لديك 10000 وصل
وتريد ان تبحث عنه بينهم حسنا اجلس على الكرسي واخلع حذائك لأنها ستكون عبارة تكرار ^^

بأستخدام MySql يمكننا البحث عن ما نريده بسرعه عالية وهذا هو استخدام الفهارس indexes او المفاتيح

في المثال السابق قمت بترتيب الوصولات حسب السنة لو قمت بتخزينها في قاعدة البيانات الـ indexes سيكون
year والمفتاح الاخر الذي هو خاص بالمحلات سيكون مثلا category .

MySql يتطلب على الاقل index واحد في كل جدول وعادتا ما نستخدم الPrimary Key او Unique
(انتظر لا تتفاجأ من هذه المصطلحات فهي سهلة للغاية) وهذا سيساعد على ابقاء المعلومات منفصلة
وهذا الحقل يجب ان يكون not null وunique (معناها فريد اي لايوجد منه سوا واحد) على سبيل المثال
(رقم الزبون ID ) لأبقاء كل زبائننا منفصلة عن الزبائن الاخرى وايضا مثل الارقام الجامعية.
مثلا لو كان لدينا شخصين بأسم محمد فالذي سيجعلهما مختلفين هو الرقم الخاص بهم .

في الMySql خاصية تسمح لك بأضافة واحد على رقم الحقل مثلا كان لديك تعداد لحقول معينة
او لأسماء الزبائن اخر عدد وصل له التعداد هو 90 وقمت بأضافة زبون جديد فسيكون رقمه 91
ويحدث ذلك بمساعدة طريقة تسمى auto_increment اي التعداد الاوتوماتيكي او الآلي.

لنتعرف الى
Unique : معناها بالعربي (فريد من نوعة) وعند اختيار هذه الخاصية لأحد الحقول فتأكد بأنه لن يكون هناك
اي تشابه مطلقا حتى لو كان هنالك حقل اخر يشابه هذا الحقل مثل رقم الزبون

Auto Increment : لنقل بأن لديك حقل وتريده ان يتزايد بشكل تلقائي عندما تقوم بوضع قيمه جديده به
مثل رقم الزبون ايضا فهذه الخاصية تقوم بأضافة واحد الى اخر رقم وصل اليه العد
او مثلا ارقام عضويات الاعضاء في المنتديات فكل عضو يحمل رقم يختلف عن العضو الاخر ^^

يكفي الى هذا الحد من الكلام المطول عن قواعد البيانات وماهيتها واستخداماتها وانواع الحقول بها

انتهى درسنا لهذا اليوم وكن واثقا انه اذا فهمت هذا الدرس جيدا ستسهل عليك امور كثيره جدا

حاول قرائته وفهمه الكثير من المرات وحاول ان تقوم بقراءة مواضيع اخرى عن قواعد البيانات
فهي بحر واسع جدا

اتمنى لكم الفائدة وانتظروني في الدرس القادم فهو تطبيق عملي وسيتطلب فهم هذا الدرس جيدا قبل البدء به

والسلام عليكم ^^

Bakenam
04-03-2009, 01:08 AM
السلام عليكم ورحمة الله وبركاتة

كيف الحال حبايبي ان شاء الله تكونوا بخير

اخذنا في الدرس السابق ما يسمى بالArray او المصفوفات

وتعلمنا طريقة كتابتها وطريقة طباعة بعض منها

وسنتعلم في هذا الدرس بعض من دوال المصفوفات وبعض من طرق طباعتها

لنقل بسم الله ولنبدأ الدرس

عنوان درسنا لهذا اليوم:



دوال المصفوفات



اولا لنقم بتعلم طريقة طباعة المصفوفة

لنقم ببناء مصفوفة بسيطة مثلا هذه


رمز PHP:

<?php
$table1=array("husband"=>array("firstname"=>"opaida","lastname"=>"younis","age"=>"22"),
"wife"=>array("firstname"=>"mai","lastname"=>"hakem","age"=>"20"));

?>

لنقل بأننا نريد طباعتها فما هي الطريقة

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


رمز PHP:

print_r (array);


سنقوم بوضع المتغير الذي انشأنا به المصفوفة وهو

$table1

بدلا من كلمة array

ليصبح الكود بهذا الشكل


رمز PHP:

<?php
$table1=array("husband"=>array("firstname"=>"opaida","lastname"=>"younis","age"=>"22"),
"wife"=>array("firstname"=>"mai","lastname"=>"hakem","age"=>"20"));
print_r ($table1);
?>

ستلاحظ عند تشغيل الكود في المتصفح بأن هذا الذي سيظهر لك


رمز PHP:

Array ( [husband] => Array ( [firstname] => opaida [lastname] => younis [age] => 22 ) [wife] => Array ( [firstname] => mai [lastname] => hakem [age] => 20 ) )


هل تريد ان يظهر الكود بصورة ارتب حسنا

سنستخدم هنا الكود <pre> وهو احد اكواد الhtml لننظر الى كيفية عملة

قم بكتابة الكود التالي في محرر الاكواد

http://www.3baer.com/php-les/les8/1.jpg


هل رأيت كيف قام بترتيب الاكواد بصورة جميلة وهذه هي المصفوفات متعددة الابعاد ...

انتهينا من طريقة الطباعة والان لننتقل الى الدوال وسأقوم بوضع بعض الدوال وليست كاملة

لأنها كثيرة جدا ويمكنكم ان تبحثوا بصفحات الانترنت فهناك الكثير منها هنا www.php.net (http://www.php.net/)



دوال المصفوفات



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

واول دالة هي :
1-sort :
*استخدامها : تستخدم لترتيب المصفوفة.

*طريقة كتابتها :

رمز PHP:

sort(array);


*مثال عليها :

http://www.3baer.com/php-les/les8/2.jpg

قم بكتابة الكود بالصورة السابقة وانظر الى الية عمل هذه الدالة

*دوال اخرى مثلها:
1-

رمز PHP:

arsort(array);


2-

رمز PHP:

rsort(array);


3-

رمز PHP:

asort(array);


جرب هذه الدوال واقم بالتعرف على الية عملها بنفسك ^^

وهذه مصفوفة لتقم بالتجربه عليها ..


رمز PHP:

$table1=array("husband" => array("firstname"=>"Albert",
"lastname"=>"Einstein",
"age"=>"35"),
"wife" => array ("firstname"=>"Mileva",
"lastname"=>"Einstein",
"age"=>"30"));


ثاني الدوال هي:

2-دالة shuffle

*استخدامها : تستخدم في ترتيب العناصر بالمصفوفة عشوائيا

*طريقة كتابتها

رمز PHP:

shuffle(array)


*مثال عليها :


رمز PHP:

<?php

$arr2 = array(12,5,30,14,100);

shuffle($arr2);
foreach ($arr2 as $x){
echo $x;
echo "<br>";
}

?>

لوقمت بطلب هذا الكود في المتصفح وقمت بتحديث الصفحة ففي كل مره تحدث الصفحة سيتغير مكان الارقام..

3- دالة array_push

*استخدامها : عند حاجتك لأضافة عنصر جديد للمصفوفة تستطيع ذلك عن طريق هذه الدالة

*طريقة كتابتها :

رمز PHP:

array_push (array,العنصر);


*مثال :

رمز PHP:

array_push ($arr2,10);
sort($arr2);
for ($i=0 ; $i<6; $i++ ){
echo $arr2[$i];
echo "<br>";
}


4- الدالة array_count_values() :

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

*طريقة كتابتها ومثال عليها :

http://www.3baer.com/php-les/les8/3.jpg


5- الدالة array_walk :

* استخدامها : تستخدم اذا كان لديك مصفوفة رقمية وتريد زيادة مثلا العدد 1 الى الارقام الموجوده بالمصفوفة
فيتم ذلك عن طريق هذه الدالة لنى الارن طريقة عملها ..

* مثال :

http://www.3baer.com/php-les/les8/4.jpg


افتح الملف بالمتصفح وقم بالنظر الى ما قام بفعله ..


6- الدالة array_sum :

استخدامها : تستخدم عند حاجتنا لجمع ما بداخل المصفوفة

وتكتب

رمز PHP:

array_sum(array);


مثال بسيط


رمز PHP:

<?php

$arr2 = array(12,5,30,14,100,1,12,30,30);

echo array_sum($arr2);

?>

6- الدالة array_search

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


رمز PHP:

<?php


$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');

echo $key = array_search('green', $array);

echo "<br>";

echo $key = array_search('blue', $array);


?>

قم بتجربة الكود في المتصفح وانظر لألية عملة..

7- array_flip:

ومن اسمها ستعرف بأنها تقوم بقلب العناصر الى مفاتيح والمفاتيح الى عناصر

انظر لهذا المثال هنا ..


رمز PHP:

<?php
$name = array('Stu1'=>'hashem','Stu2'=>'mohammed',
'Stu3'=>'mohammed',
'Stu4'=>'Islam', 'Stu5'=>'emad',
'Stu6'=>'Waled','Stu7'=>'Alaa');


print_r(array_flip($name));
?>

8- الدالة array_intersect_assoc:
تستخدم هذه الدالة بوضع مصفوفتين داخلها وتقوم بالتأكد من مطابقة المفتاح والعنصر بأنهما متطابقان تماما
وعند طباعتها تقوم بأظهار المفاتيح والعناصر المتطابقة تماما انظر للمثال...


رمز PHP:

<?php
$name = array('Stu1'=>'hashem',
'Stu2'=>'mohammed',
'Stu3'=>'mohammed',
'Stu4'=>'Islam',
'Stu5'=>'emad',
'Stu6'=>'Waled',
'Stu7'=>'Alaa');

$name1 = array('Stu0'=>'hashem',
'Stu2'=>'Mohammed',
'Stu3'=>'Mohammed',
'Stu4'=>'Islam',
'Stu5'=>'emad',
'Stu6'=>'Waled',
'Stu7'=>'Alaa',
'Stu8'=>'Amjad');


print_r(array_intersect_assoc($name,$name1));
?>


قمت بعرض بعض الدوال في هذا الدرس وهناك الكثير منها ايضا للنظر اليها ولطريقة عملها يمكنكم

زيارة هذا الموقع فهناك الكثير منها http://www.php.net/manual/en/ref.array.php (http://www.php.net/manual/en/ref.array.php)

انتهينا تقريبا من دوال المصفوفات ومن معرفة طريقة عملها

اتمنى ان اكون قد وفقت في الشرح وان تكونوا قد استوعبتم كيفية عمل الدوال

وفي مشاركتي القادمة سنكمل ما بدأنا به بتطبيق عملي على المصفوفات وللأنتقال الى قواعد البيانات

Bakenam
04-03-2009, 01:09 AM
السلام عليكم ورحمة الله وبركاتة

كيفكم حبايبي ان شاء الله تكونون بألف خير

درسنا اليوم بيكون عن المصفوفات او Arrays

اذا عنوان الدرس هو :



المصفوفات (Arrays)



اول شيء سيهمنا التحدث في هذا الدرس هو :

ما هي المصفوفات ؟

لقد تعلمنا سابقا عن ماهية المتغيرات وكيفية استخدامها ولكن ماذا لو احتجت لتعيين اكثر من قيمة
لهذا المتغير ؟ وهذه هي المصفوفات يا صديقي بكلمات بسيطة هي مجموعة من المعلومات
يكون لكل معلومة مفتاح (keys) خاص بها ويتم ترتيبها بداخل متغير واحد فقط.

لنقل بأنك لم تفهمها بعد فالنذهب الى عالمنا خارج هذه الشاشة ولننظر لهذا المثال:

على سبيل المثال كنت جالسا في احد المطاعم وقد رايت احد الاشخاص يجلس على طاولة وهذا الشخص
من المؤكد انه لديه العديد من المعلومات الخاصة به مثلا اسمه الاول واسمه الثاني وعمره فالنقل بأنك تريد
وضع هذه المعلومات في متغيرات فستحتاج الى ثلاثة متغيرات صحيح مثلا:

رمز PHP:

$firstname
$lastname
$age


الان انت ترى بأن زوجته جالسة بجواره على نفس الطاولة ولديها ايضا نفس المعلومات اسمها الاول واسمها الثاني وعمرها حسنا لو اردنا ان نضعها داخل متغيرات بهذا اصبح لدينا كم هائل من المتغيرات

ومن هنا اتت فكرة المصفوفات..

فأذا وضعنا المعلومات السابقة بداخل جدول سيكون شكلة كالتالي مثلا :

http://www.3baer.com/php-les/les7/1.jpg

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

الان لنتعلم انواع المصفوفات وهي تقسم الى نوعان المصفوفات الرقمية والمصفوفات الحرفية
والمصفوفات الرقمية تعتبر الاساس ولكن الاثنتين يؤدين نفس الغرض منهن..

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

لنتعلم الان طريقة كتابتها >>

http://www.3baer.com/php-les/les7/2.jpg

سهلة جدا اليس كذلك ^^

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

http://www.3baer.com/php-les/les7/3.jpg

سهلة جدا ولكن تحتاج الى القليل من التركيز والمتابعة ^^

والان ماذا لو اردنا تعبئة المصفوفة بمجموعة ارقام مكونه من 1 الى 10 مثلا؟؟

سيكون صعبا ان تقوم بكتابة كود المصفوفة 10 مرات ولكن ماذا لو استخدمت احدى عبارات التكرار^^

http://www.3baer.com/php-les/les7/4.jpg

جميل^^

لحظة ماذا لو اردنا تغيير احد عناصر المصفوفة الى عنصر اخر

http://www.3baer.com/php-les/les7/5.jpg

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

حاول ان تقوم بطباعة جميع القيم التي خصصناها في المصفوفة من المفتاح رقم صفر الى المفتاح رقم 9

وانظر ماذا ستطبع ..

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

سأجيب عن هذا السؤال لتنظر الى الكود التالي وسأشرحه بعد النظر اليه..

http://www.3baer.com/php-les/les7/6.jpg

لنقم بشرح الان ما سبق

اولا قمنا بتعيين القيم من واحد الى 11 في المصفوفة y ومن ثم قمنا بطلب عدد القيم الموجوده في
المصفوفة عن طريق الدالة count وقمنا بطباعتها ومن ثم قمنا بوضع القيم
في عبارة تكرار لتقوم بطباعتها واحده بعد الاخرى ^^

المصفوفات الحرفية

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

لنعد الى مثالنا السابق وهو مثال الزوج والزوجة فماذا لو اردنا ان نضع مثلا الاسم الاول هو albert

وهكذا على كل المصفوفة سيكون من الصعب فعل ذلك بالمصفوفات الرقمية ولكنه اسهل في المصفوفات الحرفية

لنقم بعمل مثال يبين ذلك ^^

http://www.3baer.com/php-les/les7/7.jpg

ملاحظة (1):نلاحظ بأنني قمت بكتابة firstname عوضا عن المفتاح رقم صفر في المصفوفة الرقمية
وانني قمت بوضع <= هذه الاشارة لتبين بأن الfirstname القيمة المخصصة له هو Albert
وانهيت الصف الاول بالفاصلة ,
ملاحظة (2): عندما اردت طباعة اي عنصر من المصفوفة قمت بطباعته مثل المصفوفة الرقمية ولكن الفرق
هو وضع المفتاح بشكل نص وهو firstname عوضا عن الرقم صفر .

وطريقة تغير ما بداخل المصفوفة الحرفية بنفس اسلوب المصفوفة الرقمية وهو التالي :

http://www.3baer.com/php-les/les7/8.jpg

هل لاحظت لا يوجد اي فرق ^^

لنقل الان بأننا نريد طباعة المصفوفة كاملة ( هناك طريقة لطباعة هذه المصفوفة وتسمى foreach)

وطريقة كتابتها كالتالي =>

http://www.3baer.com/php-les/les7/9.jpg

سأشرح ما سبق بعدة كلمات :

$array = المتغير الذي قمنا بتعيينة للمصفوفة او الذي وصعنا القيم به $husband
$key = المفتاح او الفهرس الذي قمنا بتعيينة وفي مثالنا السابق سيكون firstname
$value =القيمة التي قمنا بتعيينها تحت هذا المفتاح وسيكون Albert

لنقم الان بتطبيق المثال مع هذه العبارة ^^

http://www.3baer.com/php-les/les7/10.jpg

قم بفتح الملف في المتصفح وانظر مالذي حصل ^^
مممممممم ما رايك جميل وبسيط وسهل ايضا ^^

هناك نوع من المصفوفات ويسمى المصفوفات ثنائية الابعاد وهي تتكون من مصفوفتين بداخل بعضهما البعض..

فتذكر بأنه لهذا الرجل زوجة تجلس بجانبة على هذه الطاولة ويوجد طاولة اخرى بهذا المطعم
يجلس عليها زوج وزوجة لننظر كيف يتم التعامل مع هذه الحالة فهي سهلة حقا ..

http://www.3baer.com/php-les/les7/11.jpg

هل لاحظ قمنا بتعريف متغير بأسم table1 ووضعنا به مصفوفتين الاولى للزوج ومعلوماته
والثانية للزوجة ومعلوماتها

تأكد بأنك قد كتبت الكود بالشكل الصحيح ولا سيظهر لديك خطأ

لنقم الان بطباعة هذه المصفوفات ولنقل بأننا نريد ان نطبع الاسم الاول من الزوج والزوجة^^

http://www.3baer.com/php-les/les7/12.jpg

انظر كيف قمنا بطلب اسم المصفوفة الاولى وهو husband وطلبنا منها الفهرس firstname وقام بطباعة الاسم الاول للزوج..

بهذا نكون قد انتهينا من درس المصفوفات

وسنتكلم في الدرس القادم عن بعض الدوال للمصفوفات مثل ترتيب المصفوفات ابجديا او عشوائيا
اتمنى من الله ان اكون قد وفقت في الشرح

Bakenam
04-03-2009, 01:11 AM
السلام عليكم ورحمة الله وبركاتة

كيف الحال حبايبي ان شاء الله تكونوا بألف

سنكمل معكم اليوم مشاورنا في تعلم الـphp وسيكون عنوان درسنا لهذا اليوم هو



عبارات التكرار والعبارة الشرطية SWITCH



يتضح من العنوان ان هناك عدة عبارات للتكرار وسأقوم بشرحها واحدة تلو الاخرى بخصائصها وطريقة كتابتها

اولا: عبارة التكرار WHILE

كما يدل اسم هذه العبارة التكرار فأنه من الواضح اننا نقوم من خلالها بتكرار شيء معين مرارا وتكرارا

فالنتخيل بأن لدينا كود معين ونريد ان نكررة العديد من المرات ونكتبه العديد من المرات لنصل الى شيء معين

فلماذا لا نوفر على نفسنا هذا العناء ونجعل الكود يقوم بتكرار نفسه لوحده الى ان يصل الى هذا الشيء

ويتم تعيينة من قبلك ولكن هذا لا يعني ان هذا الكود يسهل كتابته وتتم كتابتة في لحظات فعليك التفكير

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

فالنفترض بأنك تجهز لرحلة الى مكان معين وهناك العديد من الاشخاص الذين سيشتركون بهذه الرحلة

اليس من المفترض حساب عددهم الكلي قبل الخروج لهذه الرحلة وستقوم بحساب عددهم على النحو التالي:
المشترك الاول + المشترك الثاني + الثالث الى ان تصل الى العدد الكلي ...

لنقم الان بالتعرف على طريقة كتابة عبارة التكرار هذه ...

http://www.3baer.com/php-les/les6/1.jpg

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

http://www.3baer.com/php-les/les6/2.jpg

هل لاحظت عدد الاسطر التي استخدمتها..

فتخيل لو اردت طباعة اسمك مثلا 50 مره كم عدد الاسطر التي ستحتاجها؟؟

وهنا تأتي فائدة العبارة WHILE فهي تسهل عليك كتابة اسمك 50 مره في عدد بسيط من الاسطر

لننظر كيفية عملها ^^

http://www.3baer.com/php-les/les6/3.jpg

كم سطرا كتبنا ؟؟ القليل بكثير صحيح
لنحلل ما الذي قمنا بفعله بالكود السابق
قمنا بتعيين متغير توجد به القيمة 1 واسمه num وبعد ذلك نقوم بكتابة دالة التكرار وشرطها ان يكون المتغير num اقل من او يساوي 5 , ثم نقوم بطباغة المتغير الموجود لدينا , ونطبع سطر جديد, واخيرا نقوم بزيادة المتغير بواحد ونرجع الى الاعلى لنرى هل الشرط صحيح ام لا , اذا كان صحيحا يقوم بالطباعه مره اخرى واذا لم يكن صحيحا يقوم بالخروج من البرنامج.

هل فهمت الية العمل ^^

لنقم بتحريرة بطريقة اخرى حتى تتفهم اكثر
قمنا بتعين متغير وعينا له القيمة 1 ومن ثم ادخلناه في جملة التكرار التي تساوي او تقل عن العدد 5
وبعدها قمنا بطباعته وقمنا بأضافة سطر جديد ومن ثم قمنا بأضافة واحد للمتغير ليصبح 2 ثم رجعنا الى
الشرط وسألنا هل يساوي او يقل عن العدد خمسه فكان الجواب صحيح اذا سيكمل الكود ويقوم بطباعة المتغير
الذي هو 2 ثم ينزل سطر جديد ثم يقوم بزيادة الرقم 2 واحد اخر ليصبح 3 ويرجع الى الشرط ليتحقق
وعلى هذه الحلقه الى ان يصل المتغير الى القيمة 6 فعندها يسال هل يساوي او اقل من 5 فيكون الجواب لا خاطئ
عندها سيقوم بالخروج من البرنامج ^^

سهلة صح ^^

اليك هذا السؤال البسيط واجب عليه لوحدك ..

ما هو ناتج الاعداد من 1 الى 100؟
فماذا لو اردنا ان نقوم بفصل الاعداد الزوجية عن الاعداد الفردية ^^

بسيط الحل هو بأضافة الجملة الشرطية if فكر فيها حلها بسيط جدا ..

ملاحظة: يمكنك اضافة عبارات التكرار بداخل بعضها بالعدد الذي تريد مثل العبارات الشرطية..

لننتقل الان الى النوع الاخر وهو الاكثر استخداما وهي جملة التكرار For


2-عبارة التكرار For

هي عبارة تكرار اخرى وتستخدم غالبا اكثر من العبارة while والسبب ان ديناميكيتها اكبر
ولكن الناتج واحد ولا اختلاف في الناتج عن الwhile

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

http://www.3baer.com/php-les/les6/4.jpg

وهذا شرح ما جاء به ومع بعض الامثلة ستفهمون اكثر

variable assignment : وتعني وضع قيمة للمتغير مثلا

رمز PHP:

$x=1;


test expression : وتعني جملة التحقق مثلا

رمز PHP:

$x<=10


variable increament: وهذة تعني زيادة في المتغير مثلا

رمز PHP:

$x++


ملاحظة : يجب وضع الفاصلة المنقوطة بين الاكواد الثلاث السابقة.

اي ان الكود سيصبح بهذا الشكل على سبيل المثال


رمز PHP:

<?php

for ($x=1 ; $x>=10 ; $x++ ){

do this code;
}
?>

لنقم الان بعمل المثال الذي قمنا بالعد به من الرقم واحد الى الرقم 100 ولكن بهذه العباره ^^

http://www.3baer.com/php-les/les6/5.jpg

لننتقل الان الى الجزء الاخير من عبارات التكرار وهي

3- عبارة do..while

وهي لا تختلف كثيرا عن سابقاتها والفرق الوحيد الذي يجعلها تختلف هو انها تقوم
بتنفيذ الكود المطلوب ومن ثم تقوم بتكراراه اي انك في ذلك تضمن اذا كان الشرط غير صحيح
بأن تقوم بتنفيذ الكود لمره واحده ^^

وسنقوم بالتطرق اليها حين حاجتنا لها ان شاء الله في دروس قادمة وسترى كيفية عملها ^^

ولا تنسى انه يمكنك عمل عبارة بداخل عبارة اخرى وهذا سيكون تطبيقنا بعد الانتهاء من درسنا ^^

الان لننتقل الى القسم الاخير من درسنا وهو


3-الدالة الشرطية SWITCH


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

انها تقوم بعمل شرط واحد فقط ولكن IF تقوم بعمل عدة شروط

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

http://www.3baer.com/php-les/les6/6.jpg

بداية كود الدالة يكون بالعبارة switch كما بالصورة

ومن ثم نضع الشرط مثلا

رمز PHP:

$x<=10


وكلمة case هي لتحديد الخيار المراد التحقق منه فمثلا case 10 يعني انه الشرط قد تحقق

ولاحظ بانه يجب وضع كلمة break; في نهاية كل case وذلك لأنهاء العملية اذا تحقق الشرط

وايضا لاحظ وجود كلمة default وهي تعني انه اذا لم يتحقق اي شرط من السابق قم بتنفيذ شيء معين

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

لنرا الان مثالا بسيطا على ذلك ^^

http://www.3baer.com/php-les/les6/7.jpg

قم الان تغيير قيمة المتغير x الى الارقم 1 او 3 او 8 وانظر الى التغير في الجملة بعد كل مره تفتح بها

الملف بالمتصفح ...

ممممممممممم سؤال وسأجيب عليه في شرح بسيط ليسهل عليك حل التطبيق لهذا الدرس..

هل تريد ان تقوم بتصميم جدول على طريقت لغة ال php ؟

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

تدريب:

اذا لنرى هذا المثال البسيط ...
اولا ادخل الى الفرونت بيج وقم بتصميم جدول يتكون من عمودين وخمسة صفوف

http://www.3baer.com/php-les/les6/8.jpg

ادخل على الكود البرمجي وسترى ما هو الكود الذي قام ببناء هذا الجدول مثل الصورة السابقه

حسنا ركز الان بهذا الكود اين ترى التكرار او ما الذي تكرر في الكود لأكثر من مره ؟

<tr> و <td> صحيح ؟؟

لنحول هذه الكودات الان لتكرار بلغة الphp (حولها لوحدك)
ثم لنقوم بعد عدد الاعمدة قما قلنا هم 2 وعدد الصفوف 5 صحيح اذا ما هو الشرط الذي سنبني به
عبارة التكرار ؟؟

حسنا لنصنع من هذا الجدول (جدول الضرب) مثل الذي بالمدارس , ما هي العملية التي سنحتاجها؟؟

اجب عن جميع هذه الاسئلة لتجد الجواب قم بكتابة الاسئله على ورقة ومن ثم قم بتحويلها على الورقة
الى اكواد واصنع منها العبارات التي ستحتاجها , ومن ثم حول هذا الجدول ليقوم بأيجاد
المضروب من 1 الى 10 اي 1*1 و 1*2 و 1*3 الى ان تصل الى 10*10 , ثم لنجعل الجدول
يكتب كلمة (مضروب بـ ) في الخانة الاولى من الجدول اي انه بدل ان يضرب 1×1 يكتب كلمة (مضروب بـ).

ليظهر الجدول بهذا الشكل...

http://www.3baer.com/php-les/les6/9.jpg

تلميح ليساعدك في بناء الكود ..
ستحتاج الى عبارة FOR وبداخلها عبارة FOR اخرى وبداخل العبارة الثانية يوجد الدالة IF ومعها ELSE

ليس بالسهل وليس بالصعب جربو الى ان تصلو الى الحل ...

وبهذا نكون قد انهينا هذا الدرس المفيد والممتع اتمنى ان اكون قد اوصلت المعلومة بالشكل الصحيح

والله يوفقكم جميعا

Bakenam
04-03-2009, 01:14 AM
السلام عليكم ورحمة الله وبركاتة

كيفكم حبايبي عساكم تكونوا بألف خير

اليوم جايب لكم درس خفيف وبسيط ومريح جدا

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

وعنوانة


متفرقات

1- العباره global :

سيكون اول ما سنتحذث عنه في هذا الدرس هو العبارة global...
ملاحظات بسيطة قبل البدء بتعريفها..
1- ان المتغير مكانة محدود واعني بذلك انه عندما تقوم بتعريف متغير في ملف فأن هذا المتغير
لن تستطيع استخدامة في اي ملف اخر وسيمكنك ان تقوم بتعريف متغير اخر في ملف اخر
يحمل نفس اسم المتغير الاول..
2-ان المتغير اذا قمنا بتعريفه داخل دالة معينة فلن يمكننا استخدامة في خارج هذه الدالة اي انه
اذا قمنا بتعريف المتغير مثلا


رمز PHP:

<?php
$fname = "mohammad";

function Last_Name ($last_name) {

echo $fname; // لن يقوم بطباعة هذا المتغير لأننا قمنا بتعريفة خارج الدالة

echo "<br>";

echo $last_name;
}

Last_Name("mohammad tahseen");


echo $last_name; //لن يطبع هذا المتغير ايضا لأننا قمنا بتعريفة داخل الدالة
?>

لاحظوا بأننا قمنا بتعريف متغير خارج الدالة ولم يقم بطباعته داخل الدالة
وايضا قمنا بتعريف متغير داخل الدالة ولم يقم بطباعته خارج الدالة .. ^^

لنأتي الان لتعلم ما هي الـ global ...

لو اردنا مثلا استخدام متغير في اكثر من ملف على ان يكون له نفس القيمة المعرف عليها
فكيف يتم ذلك ...

يتم ذلك من خلال الخاصية global فمعناها بالعربية (عام) اي ان بعد تعريف المتغير بهذه الخاصية
يصبح بأمكان اي ملف داخل السكريبت استدعاءه والقيام بالعمليات عليه

مثلا..


رمز PHP:

<?php
function Last_Name ($last_name) {

echo $fname;
echo "<br>";
echo $last_name;
echo "<br>";
global $fname ; //لاحظ هنا بأننا قمنا بتعريفة بأنه جلوبال
$fname = "mohammad"; //هنا قمنا بأضافة قيمة المتغير
}
Last_Name("mohammad tahseen");
echo $fname; //سيطبع المتغير
?>

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

سهلة صح ^^

لننتقل الان الى شيء جديد وهو

2- العبارة static

مممممممممممم لنقف قليلا مع شيء جديد في المتغيرات..
ماذا لو اردنا ان نقوم بعمل عداد مثلا احصائيات دخول الزائر للموقع واردنا ان يقوم المتغير
بزيادة القيمة الاولية المعطاه له فكيف نقوم بذلك؟؟

الجواب بسيط انظر للجدول بالصورة بالاسفل

http://www.3baer.com/php-les/les5/1.jpg

لنقم الان بتجربة اول شكلين مما سبق ولتقم انت بأكمال الباقي

http://www.3baer.com/php-les/les5/2.jpg


لاحظ الناتج له


رمز PHP:

0
1
2
2


الشرح موجود بالصورة السابقة ^^

قم بتجربة جميع الاكواد الموجوده في الجدول السابق وجرب ماذا تفعل..

لنشرح الان العبارة static معناها هو (ثابت) اي ان المتغير سيبقي على قيمته المعرف عليها مهما حصل**

وتذكر بأن هذه العبارة توضع قبل المتغير مثل العبارة global وتذكر ايضا بأنها لا تستخدم الا داخل الدوال..

لنقم الان بكتابة هذه الدالة البسيطة ..

http://www.3baer.com/php-les/les5/3.jpg


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

وقمنا بزيادته بقيمة واحد وعند استدعاء الدالة من المفترض ان يقوم بطباعة

رمز PHP:

0
1
2


ولكن لو طلبنا الملف من خلال المتصفح وقمنا بتشغيلة سنلاحظ بأن الناتج هو

رمز PHP:

0
0
0


وهنا تأتي فائدة العباره static بأنها تقوم بجعل المتغير يتزايد من اخر قيمة وصل لها

اكتب الكود التالي في محرر الملفات وانظر للنتيجة..

http://www.3baer.com/php-les/les5/4.jpg

انظر للناتج بعد فتح الملف بالمتصفح ..

رمز PHP:

0
1
2


رائع اليس كذلك ^^

هل تلاحظ بأنك تتعلم شيئا جديدا ^^

وهذه بعض الملاحظات والمتفرقات التي لم نتعلمها بعد ...

3- متفرقات وملاحظات جديدة

1- ترتيب الاهميات في العمليات

هل تذكرون هذا الجدول ^^

http://www.3baer.com/php-les/les3/3(14).jpg

كما تلاحظون بأن لكل عملية شكلين مثلا

رمز PHP:

&&


هي نفسها هذه

رمز PHP:

AND


اذن ما هو الفرق بينهما ؟ هذا ما ستكتشفة بعد اكمل الشرح ^^

عند استخدام المعاملات يقوم المترجم بالقراء من اليمين الى اليسار في الحالات العاديه وعند استخدام معامل واحد , ولكن تخيل لدينا اكثر من معامل في سطر برمجي واحد ؟ هنا يقوم المترجم بالاختيار حسب الاهميه , لنأخذ مثال على ذلك , تخيل ان لديك العمليه التاليه :

4 + 5 فماهو الناتج ؟؟؟ الناتج واضح وليس به اي غموض وهو 9
ولكن تخيل لو لديك العمليه التاليه 4 + 5 * 2 ؟؟؟ فما هو ناتج العمليه الحسابيه ؟ الجواب هو 14 , لان المترجم قرأ عملية الضرب اولا ثم عملية الجمع , ويمكن ان تقوم بإجبار المترجم على قراء عملية الجمع اولا بإستخدام الاقواس , مثال : ( 4 + 5 ) * 2 وسوف يكون الناتج 18 , في الجدول التالي سوف تقوم بمعرفة الاهميات وترتيبها وماهي المعاملات التي تنفذ قبل الاخرى ( من الاعلى الى الاسفل ) (مقتبس للتسهيل عليكم)

http://www.3baer.com/php-les/les5/5.jpg


حاول الان بأن تقوم ببعض العمليات الحسابية بأستخدام الجدول بالاعلى وانظر للنتائج ^^

2- استخدام الخاصية heredoc
مممممممممممممممم اول مره تسمعون فيها صح
طيب اعطيكم مثال حتى تشوفون كم تريحكم ^^

هل تريد بناء جدول بدون صعوبات؟؟
هل تريد كتابة كود html بكل سهولة داخل ال php ?
هل تريد ان تقوم ببناء صفحة كاملة مع الاستغناء عن الامر echo قليلا وليس دائما ^^

اذا هذا هو الحل ...

http://www.3baer.com/php-les/les5/6.jpg


تفاجأت اليس كذلك ..

حسنا الان سأشرح لك بالتفصيل الية عمل الصورة السابقة ^^

اولا قمنا بتعريف متغير واسميناه

رمز PHP:

$movie_header


ثم قمنا بوضع القيمة

رمز PHP:

<<<EOD


بداخلة ...
انتظر ما هي هذه القيمة؟ انتظر سأشرحها لك الان

اولا عليك بكتابة الاسهم الثلاثة

رمز PHP:

<<<


لأدخال ما تريد ادخاله داخل المتغير
ثم قمت بكتابة

رمز PHP:

EOD


وهذا فالنفرض بأنه وسم قمنا بفتحه لادراج كود الhtml بداخل المتغير
حسنا السؤال هنا هل هذا الوسم ثابت ؟ لا , ويمكنك تغيرة الى اي احرف تشاء مثلا E او D او c او v

الى اي حرف تشاء ^^

وماذا فعلنا بعد ذلك

قمنا بكتابة كود html الخاص بالجدول ^^

بدون عبارات echo وبدون الخروج من وسم الphp ^^

ومن ثم قمنا بأغلاق هذا الوسم بنفس الاحرف التي بدأناها به وهي EOD

لاحظ هنا اننا قمنا بوضع فاصلة منقوطة بنهاية وسم الاغلاق ^^ لا تنسى ذلك

ومن ثم قمنا بطباعة المتغير

رمز PHP:

$movie_header


اليس هذا ممتعا ^^

الى هتا نكون قد انتهينا من درسنا الخامس

اتمنى ان تكونوا قد استمتعم وقد استفدتم من هذه الملاحظات السريعة

لا يوجد تطبيق لهذا الدرس ولكن ارجوكم

ان تقوموا بدراسته جيدا فهو مفيد جدا لكم

درسنا القادم سيكون عبارة عن عبارات التكرار for وعبارة switch

نصيحة : لا تتجاهل اي كلمة في هذا الدرس لأنه مهم جدا

Bakenam
04-03-2009, 01:20 AM
بسم الله الرحمن الرحيم

والصلاة والسلام على خير المرسلين

درسنا لهذا اليوم سيكون عنوانه

الدوال functions

تعرفنا في دروسنا السابقة الى عدة دوال مهمة منها include و echo و require

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

اذا السؤال الان ماهي حاجة المبرمج الى الدوال ؟

فالنفرض بأنك تقوم بعمل عملية حسابية معينة واردت ان تقوم بهذه العملية باكثر من ملف لديك

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

ومن هنا اتت فكرة الدوال وهي ان نقوم بعمل دالة معينه في ملف معين ونضع بها هذه العملية

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

جميل اليس كذلك ^^


سنقسم هذا الدرس الى عدة مراحل سأقوم بطرحها واحدة بعد الاخرى بطريقة مبسطة وسلسة

حتى تستطيع فهمها وفي المشاركة التالية سنقوم بأكمال السكريبت الذي بدأناه بمساعدة الدوال..

1- كتابة الدوال.
2- اسماء وحالات الدوال.
3- مناداة الدوال.
4- اخطاء في مناداة الدوال.
5- مدخلات الدوال.
6- مرجعات من الدوال.
7- ارجاع بيانات من الدوال.

اولا : لنتعلم كيف تتم عملية كتابة الدوال.:

http://www.3baer.com/php-les/les4/1.jpg

في هذه الصورة نلاحظ وجود

function: وهي لتعريف الدالة ويجب ان تكون موجوده عندما تريد ان تعرف دالة معينه
fun_name: وهو اسم الدالة المراد تعريفها مثلا (mohammad,printing)
( ):لوضع المدخلات الخاصة بالدالة.
the code you want to do;: وهنا نضع الكود المراد تنفيذه مثلا طباعة او عملية حسابية

وبهذا تعرفنا على الشكل العام للدالة وكيف تتم كتابته..

لنقم بعمل مثالا بسيطا عليها فالنفترض بأننا نريد ان نطبع كلمة اهلا وسهلا بكم شاهد الصورة التالية

http://www.3baer.com/php-les/les4/2.jpg


هل لاحظت كيفية عملها اذن لنقم الان بجعلها تطبع الكلمة المراد طباعتها

http://www.3baer.com/php-les/les4/3.jpg

قم بتنفيذ الكود الموجود بالصورة وانظر لما قامت بعملة هذه الدالة^^

ثانيا : اسماء وحالات الدوال. ..

هنا يجب عليك ان تعرف بأن اسماء الدوال لا تختلف فمثلا
say_welcome()
تشبة
Say_welcome()
وتشبة
SAY_WELCOME()

ولكن المتعارف عليه عند المبرمجين هو ان تكون اسماء الدوال احرف صغيرة وايضا
اسماء الدوال لا يمكن ان تبدأ بأرقام ..

ثالثا : مناداة الدوال...

رايت الكثير من الدوال ومنها include

وتكون طرق مناداة الدوال كالتالي :

http://www.3baer.com/php-les/les4/4.jpg


سنأتي لما جاء في الصورة واحدا واحدا فقط صبركم علي شوي^^

رابعا : وهي اخطاء في مناداة الدوال...

ماذا يحدث اذا ناديت دالة غير موجوده فسوف يأتيك خطأ Call undefined function
ويعني بأن هذه الدالة غير موجوده وهنا يجب عليك ملاحظة شيئين اثنين
ان الدالة اما ان تكون غير موجوده او ان الدالة اسمها غير مسموح استخدامة

فمثلا لوجود الدالة echo فلن تستطيع ان تنشئ دالة بنفس هذا الاسم


رمز PHP:

function echo { }


خامسا : مدخلات الدوال ..^^
ركزو الله يسعدكم حبايبي

عندما قمنا بشرح الدالة include وجب لتشغيلها بالطريقة الصحيح وضع اسم الملف الذي نريد ادراجة
بين القوسين اليس كذلك وفي باقي الدوال سيكون الوضع نفس الشيء ولكن بأختلاف بسيط

فمثلا

http://www.3baer.com/php-les/les4/5.jpg


لاحظ هنا بأننا قمنا بأدخال المتغير X في الدالة ومثلا كان هذا المتغير عبارة عن اي جملة انت تريد
ادخالها للدالة لتقوم بطباعتها

http://www.3baer.com/php-les/les4/6.jpg


قم بكتابة الكود بالصورة السابقه وافتحه بالمتصفح وانظر ماذا قامت الدالة بعمله

لاحظ هنا انه اذا لم تقم بوضع مدخل بها اي انك لم تكتب هذه الجملة بالدالة


رمز PHP:

" هذه الدالة ستطبع اي شيء اريد "


فسيظر لك خطأ ويمكنك ان تجعل الدالة تقوم بطباعة اي شيء تريد مثلا كان رقما ستقوم بطباعته مثلا


رمز PHP:

say_welcome( 15 );


ماذا الان لو اردنا بأعطاء اكثر من مدخل للدالة هل يمكن ذلك؟ نعم يمكن اكتب في محرر الاكواد
ما ستراه بالصورة

http://www.3baer.com/php-les/les4/7.jpg


افتح الكود بالمتصفح وانظر ماذا قامت الدالة بعمله ^^

بسيط الدرس اليس كذلك ^^

ملاحظة: يمكنك جعل عدد لا نهائي من المعطيات للداله , والامر يعود الى طريقتك واحتياجك.

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

يفرض علينا ادخال قيمتين لتقم الدالة بطباعتهما ولكن ماذا لو كان احد هذه المدخلات اختياري ..

قم بطباعة الكود الذي ستراه بالصورة

http://www.3baer.com/php-les/les4/8.jpg


افتح الكود بالمتصفح وانظر ما الذي حدث ^^

لنقم الان بعمل تطبيق صغير وبسيط فالنفترض بأننا نريد بعمل عملية حسابية ونجمع رقمين ونظهر الناتج

بالمتصفح ... انظر للصورة بالاسفل وقم بكتابة الكود الموجود بها ^^

http://www.3baer.com/php-les/les4/9.jpg


افتح الملف بالمتصفح وانظر الى الناتج
قم بتغير الارقام الموجوده بين القوسين الخاصين مناداة الدالة


رمز PHP:

math1(11,10);
math1(0,10);
math1(10,10);


وانظر الى نتيجة عملك ^^

رائعه اليس كذلك ^^

حسنا لنقم الان بالانتقال الى نقطة جديده ومهمه وهي

سادسا: مرجعات من الدوال. ...

المرجعات تنقسم الى قسمين :
1- ارجاع مخرجات وهو ما قمنا بعمله في مثالنا السابق ويكون اما بأرجاع المخرجات بعبارة
echo او يكون كود html

والنوع الثاني وهو

2- ارجاع بيانات من الدوال.:
اعني بإرجاع بيانات من الدوال , اي ارجاع قيم , ليست للطباعه بمعنى اصح,
ونستخدم في هذه الحاله العباره return , في مثالنا السابق ,
على سبيل المثال نريد ان نعرف ماهو العدد الاكبر لنستخدمه في كود اخر
, لنرى كيفية عمله الان , اكتب التالي في محرر الاكواد :

http://www.3baer.com/php-les/les4/10.jpg


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

هنا نكون قد انتهينا من الدوال وماهيتها وما هي طريقة عملها ..

لنقم الان بوضع بعض الملاحظات..

1- كيف نقوم بأدراج الدوال التي قمنا بأنشاءها في السكريبت الخاص بنا ..
اولا نقوم بوضع كافة الدوال في ملف لوحدة
وثانيا نقوم بأستدعائها عن طريق include في ملفنا الرئيسي او في المكان التي سنحتاجها به

ونقوم بأستخدامها وكانها مكتوبة مسبقا بالملف الرئيسي

فمثلا عند حاجتنا لطباعة شي نقوم بأستدعاء الدالة say_welcome مثلا وهذا اسم فقط
ويمكنك تغير هذا الاسم الى الاسم الذي تحب ونضع بداخلها ما نريد طباعته وهكذا كما راينا في الامثلة السابقه..

2- لا تنسى ان تقوم بوضع ملاحظاتك على كل دالة لتعرف ما هو عملها

تدريب بسيط على الدرس :
في درسنا السابق قمنا بأدراج الheader والfooter من ملفات بدالة include

قم الان بعمل دالة للheader ودالة اخرى للfooter وضعهم في ملف واحد واستدعي هذا الملف

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

اترك المجال لكم بالتركيز وفهم الدرس

واتمنى ان اكون قد وفقت فيما شرحت

وسيكون عنوان مشاركتنا القادمة هو

اكمال السكريبت الذي قمنا بالعمل عليه منذ البداية بأستخدام الدوال ...

والله يوفقكم ويوفقنا اجمعين

والسلام عليكم

Bakenam
04-03-2009, 01:22 AM
السلام عليكم ورحمة الله وبركاتة

تعرفنا في مشاركتي السابقة على الدوال واتمنى ان تكونوا قد اجدتم دراستها لما لها اثر كبير

في برمجتنا وفي برامجنا والان لنكمل مشوار السكريبت الذي بدأناه معا ولنكمل بعض منة

هذه المشاركة ستكون للتطبيق العملي وسأقوم بشرح ما هو مهم ولم يشرح بعد من خلال تطبيقنا

لنقل بسم الله ولنبدأ بالعمل

اولا قم بفتح الملف movie1.php واعمل به التغيرات التي بالصور بالاسفل

http://www.3baer.com/php-les/les4/11.jpg
http://www.3baer.com/php-les/les4/12.jpg

لاحظ بأن اضافة السطور البرمجية تبدأ من السطر 30

حسنا اظن بأنكم تعرفون ما الذي قمنا بأضافته هنا قمنا بأضافة رابطين جديدين الاول
يقوم باحضار اول خمس افلام بالمجموعة والثاني يقوم بأحضار ال 10 افلام بالمجموعة
وذلك سيتم عن طريق المتغير movienum فأذا كان الاختيار 5 سيحضر 5 افلام واذا كان الاختيار
10 سيحضر 10 افلام ستفهمون اكثر عند المتابعة ^^

الان افتح الملف moviesite.php وقم بعمل التغيرات والاضافات التي ستراها بالصور...

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

http://www.3baer.com/php-les/les4/13.jpg
http://www.3baer.com/php-les/les4/14.jpg

لنقم الان بشرح بعض ما قمت به لأن الذي لن اشرحه تم شرحة بالدروس السابقة

1-

رمز PHP:

if (isset($_REQUEST['favmovie']))


في هذه الدالة قمنا بأضافة isset وهي للتاكد بأن المتغير تم انشاءه فعلا بالصفحة التي ارسلت لنا
هذا المتغير فأذا لم يتم انشاءه سيظهر لنا خطأ وبعد ان يتأكد سيظهر لنا ما قمنا بطلبه
عن طريق الرابط الاول وقد طلبنا منه ما هو فلمي المفضل

2-

رمز PHP:

function listmovies_1()
function listmovies_2()


هاتين الدالتين قمنا بأنشائهما ليقوما بكتابة 5 افلام مفضلة في كل واحده منهن

3-
ولكن اذا قمنا بالضغط على الرابط الثاني في ملف movie1.php سيقوم بأحضار
الدالة الاولى لتقوم بطباعة اول خمس افلام افضلهم
عن طريق هذا الكود


رمز PHP:

else {
echo "My Top ";
echo $_REQUEST['movienum'];
echo " movies are: ";
echo "<br>";

listmovie_1();


واذا قمنا بالضغط على الرابط الثالث بنفس الملف سيقوم بأستدعاء الدالة الثانية
وهي التي تقوم بطباعة 10 افلام افضلهم عن طريق هذا الكود


رمز PHP:

if ($_REQUEST['movienum'] == 10) listmovies_2();


قم بالدخول الى ملف login وضع كلمة المرور واسم المستخدم وانظر لما قمنا بعمله من خلال هذه المشاركه^^

شيء رائع اليس كذلك وسهله ايضا ولكن تحتاج التركيز في كتابة الاكواد

لأني الاحظ بأن جميع استفساراتكم لا تكون بفهم الدرس ولكن تكون بنسيان فاصلة منقوطة
او كتابة كلمة وخربطت الاحرف فأحرصوا اخواني على كتابة الكود حتى لا تقعوا بمثل هذه الاخطاء

لا يوجد تدريب لهذا اليوم سيكون استراحة وانتظروني بالدرس القادم وهو

العباره global
العباره static

اتمنى بأن تكونوا قد استمتعتم واستلقيت استحسانكم

Bakenam
04-03-2009, 01:23 AM
السلام عليكم ورحمة الله وبركاتة

والصلاة والسلام على خير الخلق والمرسلين سيدنا محمد صلى الله عليه وسلم

عنوان درسنا لهذا اليوم هو :



استخدام الـ form ,واستخدام الدالة IF الشرطية ,include

الملفات



تطرقنا في الدرس السابق الى شرح ما يلي :
1-الثوابت وتعرفنا من خلالها كيف يتم تعريف ثابت وما هي مميزاته
2-المتغيرات وتطرقنا من خلاله الى شرح ما هو المتغير وما مميزاته
*وقمنا بشرح كيف نقوم بتمرير متغير عن طريق رابط في المتصفح
*وعن طريق الـ SESSION


اتمنى ان تكونوا قد راجعتم الدروس السابقة لنكمل مسيرتنا الى احتراف الـ PHP

في هذا الدرس سنطرق ابواب ثلاث منازل من منازل حي الـ PHP وهي :

1-تمرير المتغيرات وطلبها واستقبالها عن طريق الـ FORM في لغة الـ HTML وكيفية

معالجتها وكيفية استخدامها

2-سنقوم بشرح الجملة الشرطية IF ومساعدتها ELSE

3-طريقة ادراج ملف (INCLUDE) في ملف اخر


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

1-كيف يمكنني تمرير المعلومات او المتغيرات عن طريق الـ form ؟

اولا سنقول بعض الكلمات المهمه عن الـ form حتى تتذكروها جيدا
- هذا هو الوسم الخاص بفتح الفورم <form> وهذا الخاص بأغلاقة </form>
وبأحيان كثيرة يتضمن ما يلي:
*action وهنا تطلب منه مثلا ان يقوم بتمرير ما تقوم بوضعه بالفورم الى ملف اخر او الى قاعدة البيانات مثلا
*method وهي التي تقوم بحمل ما تريد تمريرة الى الصفحات الاخرى ولها نوعان
-post وهذه الطريقة هي اكثر امنا وسنستخدمها اكثر من الـ get
-get وهي طريقة يحمل بها الميثود المتغيرات وما تريد تمريرة عن طريق الـ url
*اضافات الفورم هي الـ input كما شرحناها في درس معلومات اضافية في هذه الدورة
مثل (****,checkbox,radio....)


رمز Code:
<form method="post" action="callus.html"><input type="****"></form>
سأضيف ملاحظة مهمه جدا جدا وهي خاصة بخاصية الـ name
مثلا قمنا بعمل متغير وسميناه

رمز PHP:

$var


ونريد احضارة عن طريق الفورم او تمريرة عن طريق الفورم
فيجب حينها ان يكون الـ name في الفورم مطابق تماما للمتغير مثلا


رمز Code:
<form method="post" action="callus.html"><input type="****" name="var"></form>
والمتغير اسمه $var

مع التطبيق ستفهمون اكثر ان شاء الله

فالنفترض الان بأنك تريد من الزائر ادخال اسم المستخدم وكلمة المرور الخاصات به فكيف يتم ذلك؟
شاهد المثال وستعرف ^^

مثال (1) :
1- اولا قم بفتح ملف movie1.php وقم بعمل التعديلات التالية على الملف
http://www.3baer.com/php-les/les3/3(1).jpg


2- قم بفتح ملف جديد واكتب به الكود التالي:

http://www.3baer.com/php-les/les3/3(2).jpg

الان قم بحفظ الملف بأسم login.php
الان قم بفتح الملف login بالمتصفح واكتب اسم المستخدم وكلمة المرور الذين قمنا بوضعهم في ملف movie1.php
هل سار الامر على ما يرام ^^

اذا لنحلل هذا الكود :
1- في البداية قمنا بتحرير ملف movie1 واضفنا في اولة هذا الكود

رمز PHP:

$_SESSION['username'] = $_POST['user'];
$_SESSION['userpass'] = $_POST['pass'];


وهو يعمل على ان يأخذ الـ user وال pass من ملف تسجيل الدخول

رمز PHP:

<input type="****" name="user">
<input type="password" name="pass">


لاحظ بأن name للمدخلات مطابق تماما لما وضع في دالة الـ session للتأكد من صحتهما
ولأن البيانات يجب ان تكون مخفية عن اعين المتصفحين قمنا بطلبها عن طريق الدالة post
في ملف الmovie1.php ومررناها عن طريق الفورم الذي بنيناه في ملف login.php
وكانت طريقة التمرير هي post

2-سأشرح لكم الان بشكل غير موسع ما جاء في الكود الذي سترونه بالصورة

http://www.3baer.com/php-les/les3/3(3).jpg

اولا قمنا بأستخدام الدالة الشرطية if وكان عملها يقتصر على ان يقوم بالتأكد بأن الـ user وال pass
المرسلان لملف movie1.php عن طريق الـ form الموجود في ملف login.php صحيحان ام لا

وهذا الكود سيوضح اكثر لكم كيفية عمل هذه الدالة :

http://www.3baer.com/php-les/les3/3(4).jpg

IF : هي البداية لكتابة الدالة الشرطية التي تستعمل مثلا كان لديك صندوق يوجد به عدة كرات
وهذه الكرات مختلفة الالوان واردنا اختيار لون محدد فوضعنا يدنا واخترنا لون لا نريده
فعندها نرجع الكره الى الصندوق ونعيد السحب الى ان نصل لمرادنا

== : وهي اداة للمقارنة مثلا ( هل محمد == محمد )؟ اذا كان الجواب صحيح قم بكتابة مبروك

and: وهي اداة وتعني حرف ( و ) اي انه مثلا

هل (محمد == محمد ) and ( علي == علي ) بما ان الشرطان صحيحان اذن قم بكتابة مبروك

لكن

هل ( محمد == محمد ) and (علي == حسام ) بما ان شرط واحد من الشرطان خاطئ اذن قم بكتابة خاطئ

else : وهي الدالة المساعدة للدالة if ومعناها انه اذا لم يكن الجواب صحيح في الدالة if قم بعمل كود معين

هذا شرح مبسط لكيفية عمل هذه الدالة وسيتم شرح الدالة بشكل مفصل في درسنا القادم

لنعد الان لدرسنا ولنقم بأكمال شرح الذي قمنا بعملة في الملف login.php

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

طلبنا من الفورم ان يرسل القيم المدخلة فيه بطريقة post وذلك عن طريق

رمز PHP:

method="post"


ومن ثم قمنا بالطلب منه بأرسال المدخلات الى الملف movie1.php عن طريق الـ action


رمز PHP:

action="movie1.php"


وكذلك الامر في ادخل كلمة المرور ...

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

تدريب بسيط على الدرس :

قم بوضع قائمة خيارات للزائر يختار منها حجم الخط الذي يريدة في ملف الـ login.php وقم بأرسال القيم بالخاصية value وهي (1و2و3)
ثم قم بأدراجها في ملف movie1.php عن طريق الدالة

رمز PHP:

$_SESSION


مثل اسم المستخدم وكلمة المرور
ثم قم بوضعها في ملف moviesite.php بطلبها من خلال الصفحة السابقة .

ارجوا ان تكونوا قد استفدتم من هذا الدرس البسيط والسهل اتمنى ان ارى تطبيقاتكم

Bakenam
04-03-2009, 01:25 AM
السلام عليكم ورحمة الله وبركاتة

لننتقل الان الى كيفية .....


استخدام الدالة IF الشرطية

اولا لنقم بفهم ما هي الدالة الشرطية ولماذا نستخدمها ...

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

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

بكلمات اخرى
اذا تحقق الشرط المعين افعل كذا وكذا , واذا لم يتحقق افعل كذا وكذا.

سأقوم بشرح بعض الاساسيات المهم معرفتها في الجملة الشرطية IF :

ما هي الoperators معاملات المقارنة:
هي معاملات مقارنة تستخدم في هذه اللغة للمقارنة ما بين متغثرات او دوال اخرى او جمل لنرى الجدول التالي:

http://www.3baer.com/php-les/les3/3(6).jpg

المعاملات الحسابية :

http://www.3baer.com/php-les/les3/3(12).jpg

ويمكن وضع متغيرات بدلا من الارقام
مثلا

http://www.3baer.com/php-les/les3/3(13).jpg

قم بفتح محرر البي اتش بي وتجربة بعض العمليات الحسابية


المعاملات المنطقية:

http://www.3baer.com/php-les/les3/3(14).jpg

وهي مثل الدالة التي تأكدنا منها بأن كلمة المرور والاسم صحيحين في المشاركة السابقة

وسيأتي شرح كل واحده منها على حدة حين حاجتنا لها بالدورة ^^

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

هناك ثلاث طرق لكتابة الدالة الشرطية سأقوم بوضع الطريقه وبأسفلها شرحها:

الاولى :


رمز PHP:

if (condition1 opetator condition2) {
action to be taken if true
}


if: وهي بداية الدالة الشرطية .
( ) : هنا نقوم بوضع الشرط المراد التأكد منه .
condition1 : وهذا عبارة عن الشرط الاول الذي نريد التحقق منه
operator : معامل المقارنة وسيتم وضع جدول للمعاملات انتظروا.
condition2 : الشرط الثاني الذي نريد من الدالة التحقق منه
{ : المفتاح الخاص بفتح الدالة .
action to be taken if true : وهنا الذي سيقوم البرنامج بفعلة اذا تحقق الشرطان
} : المفتاح الخاص بغلق الدالة.


مثال بسيط على الدالة :

http://www.3baer.com/php-les/les3/3(5).jpg

اذا الان اتوقع بأنكم قد فهمتم الطريقة الاولى

الطريقة الثانية وهي :


رمز PHP:

if (condition1 operator condition2 ) {
action to be taken if true;
} else {
action to be taken if fales ;
}


وهنا قمنا بأضافة الكلمة else وهي تعني بأنه اذا كان الجواب خاطئا قم بعمل شيء اخر

لاحظ بأنه يتحقق من الشرطان مره واحده فقط اي انه لا يمكن اضافة شرط عند else



ولكن اذا اردنا اضافة شرط اخر والتحقق منه اذا لم يتحقق الشرط الاول فنأتي هنا الى الطريقة الثالثة

مثلا :

http://www.3baer.com/php-les/les3/3(7).jpg

لاحظ بأنه يتحقق من الشرطان مره واحده فقط اي انه لا يمكن اضافة شرط عند else

ولكن اذا اردنا اضافة شرط اخر والتحقق منه اذا لم يتحقق الشرط الاول فنأتي هنا الى الطريقة الثالثة

والطريقة الثالثة هي :


رمز PHP:

if (condition1 operator condition2 ) {
action to be taken if true;
} elseif (condition2 operator condition3) {
action to be taken ;
} else {
action to be taken if false ;
}


فهنا قمنا بأضافة شرط اخر انه اذا لم يتحقق الشرطان الاولان قم بالتحقق من الشرطان الاخران

عن طريق elseif وهذا مثال بسيط على كيفية عمل هذه الدالة:

http://www.3baer.com/php-les/les3/3(9).jpg

ملاحظة : نستطيع ان نقوم بإستخدام ELSEIF بشكل لا نهائي , يعتمد على استخدامنا وما يتطلبه , ولكن ELSE فقط نستطيع ان نقوم

استخدامها مره واحده لانها عامه
ملاحظه: يمكن استخدام عبارة IF وداخلها IF وداخلها IF واترك لك الباب مفتوح لكي تقوم بإستكشاف ما اعنيه من هذه الملاحظه http://www.traidnt.net/vb/images/smilies/cupidarrow.gif ( نفس الشيئ ينطبق على

ELSEIF و ELSE )

الان لنقم بعمل ملف جديد ونختبر ما قمنا بتعلمة لهذا الدرس ^^

1- افتح ملف جديد في المحرر المفضل لديك وقم بكتابة الكود التالي :

http://www.3baer.com/php-les/les3/3(10).jpg

وقم بحفظة بأسم date.php وتشغيلة بالمتصفح وانظر مالذي سيظهر لك

لأقم بشرح ما قمنا بكتابته

اولا عرفنا متغير اسمه month ووضعنا به الدالة date

وطلبنا من الدالة ان تحضر "n" وهو
المختص بعدد الايام بالشهر حسب تاريخ السيرفر الذي تقوم بتشغيل الملف عليه ^^

ملاحظة قم بتحميل الملف المرفق لتتعرف على الدالة date بشكل اوسع

فهي دالة من ضمن لغة البي اتش بي جاهزة للتاريخ ^^

ومن ثم من خلال الجملة if قمنا بالتأكد من انه اذا كان عدد الايام مثلا 30 سيكون مثلا شهر 4

تابع المثال السابق بتأني وستفهم بشكل اوسع ان شاء الله ^^

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

else :

قم بفتح ملف جديد واكتب به الكود التالي ^^

http://www.3baer.com/php-les/les3/3(11).jpg

هنا قمنا بتعريف متغير بأسم leapyear وطلبنا من الدالة date

ان تقوم بفحص السنة اذا كانت

سنة كبيسة ام لا عن طريق الحرف "L" لاحظ بأن حالة الاحرف قد اختلف في هذا المثال وهذا كلة

موضح في الملف المرفق ^^

فأذا كان جواب الشرط مساوي للرقم 1 فأن السنة كبيسة واذا كان غير ذلك فأن السنة غير كبيسة^^

احفظ الملف بأسم leapyear.php

وبهذا قد انتهى درسنا لهذا اليوم واي ملاحظات يرجى وضعها في موضوعها المخصص

اتمنى بأن اكون قد وفقت في الشرح وان تكونوا قد استوعبتم ما جاء به

تدريب : قم بكتابة سكريبت يطلب من المستخدم ادخال عمره فأذا كان عمره اكبر من او يساوي 18 سيظهر له
في صفحة اخرى بأنه قد اتم السن القانوني واذا كان اقل من ذلك سيكتب له لم تتم السن القانوني بعد

نصيحة : استخدم الفورم لأدخال القيمة وارسالها الى الصفحة الاخرى

Bakenam
04-03-2009, 01:27 AM
السلام عليكم ورحمة الله وبركاتة

كيفكم حبايبي عساكم بألف خير

هذا قسمنا الاخير من الدرس الثالث وعنوانة



استخدام الدالة include في ادراج الملفات



لنتخيل قليلا ...

لديك موقع وبه ما يقارب 50 صفحة وتود ان تضع في كل صفحة بريد الكتروني

او اسمك او رقم هاتفك او حتى شعارك شيء متعب اليس كذلك بأن تقوم بوضع كل هذه الامور

في الصفحات ال 50 وهنا جاءت فائذة دالة ادراج الملفات INCLUDE و require

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

وكل صفحة لها راس وذيل يعني header و footer في اول الصفحة وفي نهاية الصفحة

واردت ان يكونوا متشابهين في كل صفحاتك ال 50 اذا لنقم الان بالتعرف على ماهية هذه الدالة...

اولا لنتعرف الى الدالة require

ما هي طريقة كتابتها ؟؟


رمز PHP:

require(string file)


لنقم بأخذ مثال عليها لتضح الصورة اكثر

افتح ملف جديد في محرر الملفات لديك واكتب الكود التالي:

http://ruf3.com/uploads/586f3db20d.jpg (http://ruf3.com/)

الان قم بحفظ الملف بأسم header.php

لادراج هذا الملف في اي ملف اخر في سكريبتك مثلا تريد اضافته في ملفات
movie1.php
moviesite.php
login.php

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


رمز PHP:

<?php require ('header.php'); ?>

وقم بعدها بفتح الصفحات الثلاث وانظر ماذا حدث..

لقد رايت ان شيئا جديدا قد حصل اليس كذلك هنالك بعض الكلمات التي كتبتها في ملف header.php

وضعت في كل الصفحات وانت لم تضف سوا سطر برمجي صغير شيء مذهل اليس كذلك^^

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

لننتقل الان الى الدالة include ..

الدالة include لها نفس عمل الدالة require ولكن الفرق بينهما هو كيفية اخراج الخطأ
فأن الدالة include اذا قمت مثلا بتحديد الملف الخاطئ فأنها تقوم فقط يقوم بتحذيرك ولكنه يكمل
تنفيذ الاوامر البرمجية في الملف الذي وضعت به هذه الدالة اما بالنسبة للدالة require فأنه يوقف البرنامج
تماما عن العمل ...

ملاحظة مهمه: مثلا كان ملف الindex موجود في المجلد الرئيسي للسكريبت
وكان الملف header موجود في مجلد اخر مثلا include/header.php
ومجلد include والملف index موجودان في نفس المجلد الخاص بالسكريبت
فهنا عند حاجتك للملف header سيكون شكل الدالة هكذا


رمز PHP:

require('include/header.php')


اي ما تقوم بأضافته في ملف index.php هو السطر البرمجي السابق ليقوم بأخذ الملف
المراد ادراجه من مجلد include الموجود في نفس مجلد السكريبت..

درسنا سهل اليس كذلك ^^

لنقم الان بالاطلاع على التدريب:
قم بكتابة ملف اخر وسمه footer.php وقم بكتابة الكلمات التالية:

هذا الموقع من تطوير : قم بكتابة اسمك هنا

وعند الضغط على اسمك قم بوضع بريدك الالكتروني بحيث عند الضغط على الاسم يقوم
بفتح رسالة جديدة ^^

وقم بأدراجة في الملفات التالية
movie1.php
moviesite.php
login.php
والى هنا انتهينا من درسنا لهذا اليوم

اتمنى بأن اكون قد افدتكم وان الدرس لم يكن طويلا

Bakenam
04-03-2009, 01:30 AM
السلام عليكم ورحمة الله وبركاتة

كيفكم اخواني ان شاء الله تكونوا بألف خير

عنوان درسنا لهذا اليوم هو:



الثوابت والمتغيرات تعرف على طريقة عملها

واتمنى تكونوا استفدتوا من الدرس الاول والذي تلخص بالتالي:

1-القوانين الخاصة بكتابة لغة الـ PHP.
2-لماذا عليك الاهتمام بكيفية ظهور الكود الذي كتبتة؟
3-انشاء اول برنامج لك بهذه اللغة.
4-استخدام ال HTML في هذه اللغة .

وفي هذا الدرس الجديد سيكون شرحنا عن استخدام المتغيرات والثوابت...

فلنقل بسم الله ولنبدأ..

1-ما هي الثوابت وما هي طريقة عملها؟

*الثوابت هي تعتبر كصندوق يوضع به القيم التي تريدها.

*واهم ميزاتها:
1-انها تكون بأحرف كبيرة مثلا FAVMOVIE وهذا يسهل عليك ايجادها في الكود الذي تكتبة.
2-لا تبدأ ابدا بأرقام فقط تبدأ بأحرف او بـ ( _ ) underscore .
3-حساسة لحالة الاحرف.(اما جميعها كابيتال او جميعها سمال)

*تعرف الثوابت عن طريق الدالة :


رمز PHP:

define()


مثال: افتح محرر البي اتش بي واكتب الكود التالي:

http://www.3baer.com/php-les/1.png

احفظ الملف بأسم moviesite.php وقم بفتحه عن طريق المتصفح وشاهد ماذا حدث.^^

مالذي حدث في المثال السابق؟
الذي قمنا به هو بعد تعريف الثابت FAVMOVIE بأستخدام الدالة define قمنا
بوضع القيمة "فيلم الرسالة" به حتى نقوم بأستدعائه واظهاره لاحقا ومن اهم مميزاته بأنه لا يتغير ابدا

سأوضح الكلام بنقاط حتى تستوعبون اكثر:
1-قمنا بفتح الملف وكتابة الكود الذي تعلمناه في الدرس السابق
2-قمنا بأنشاء صندوق وسمينا "FAVMOVIE" ووضعنا في هذا الصندوق "فيلم الرسالة"
3-قمنا بأستدعاء الامر echo ووضعنا الثابت FAVMOVIE
4-اظهرناها على المتصفح.

فقط سهلة اليس كذلك ؟

لننتقل الى الجزء الثاني والمهم في درسنا وهو:

2-ماهي المتغيرات وكيف يمكنني التعامل معها؟
المتغيرات في لغة البي اتش بي هي شيء مختلف تماما عن الثوابت
لأننا نستطيع التعديل عليه
كما نشاء وكما نحب وكما نريد ,
وهي لا تحتاج الى تعريف كما في الثوابت ونستطيع ان نضع
بها على سبيل المثال بأنها صندوق فهذا الصندوق يحتوي
على ارقام وجمل او كلمات او اي شي.

*ما هي طريقة كتابة المتغيرات؟
تكتب المتغيرات بداية بأشارة $ الدولار
مثلا:


رمز PHP:

$mohammad
$ali
$turky


مميزاتها:

1-انها تقبل التغير.

2-بأنها حساسة لحالة الاحرف مثلا:



رمز PHP:

$mohammad يختلف عن $Mohammad


3-وهي تبدأ ايضا بحروف او ( _ ) وليس ارقاما.

فالنذهب لمثال جديد :

1- افتح ملف moviesite.php الذي قمنا بأنشاءه وقم بعمل التغيرات التالية عليه:

http://www.3baer.com/php-les/2.jpg

احفظ الملف وقم بأستعراضه على المتصفح وانظر للنتيجة ^^

لنشرح الاضافة التي قمنا بعملها على الكود السابق:

1-قمنا بأنزال سطر بأستخدام الامر <br> الخاص بأوامر ال HTML

2-قمنا بتعريف متغير وسميناه movierate ووضعنا اشارة المساواة
اي هي اداة النقل التي تقوم
بنقل القيم من خارج الصندوق الى داخل الصندوق ووضعنا به الرقم 5

لاحظ بأننا قد عرفنا المتغير movierate على اساس انه رقم ولم نقم بوضع الرقم في " 5 "
ملاحظة:


رمز PHP:

$user = "Mohammad";
$Mohammad = "123";
echo $$user;


سيقوم بطباعة الرقم 123

هنا قمنا بتعريف المتغير user بالقيمة Mohammad وقمنا بتعريف المتغير Mohammad بالقيمة 123

وعند طباعة المتغير $$user سيقوم بأظهار القيمة الخاصة بالمتغير Mohammad

*انتبة الى حالة الاحرف

انواع المتغيرات وهي :
-String اي مثل هذه الكلمة وتوضع بين علامات التنصيص "انا متفوق"
-numbers اي انها ارقام عادية مثل 123445
-intger مثل السابق
-double هي ارقام بفواصل مثل 123.1213
-boolean (true/fales) وهي تعطيك ناتج اما صحيح او خاطئ


تعرفنا على المتغيرات وتعرفنا على الثوابت للنتقل لشيء جديد الان وهو:

3-كيف اقوم بتمرير المتغيرات ما بين صفحات برنامجي؟

فالنفترض بأنك تسمح لزوارك بوضع اسمائهم في بداية صفحات موقعك ,
ولكن السؤال هنا هو كيف
يمكنك تمرير اسم الزائر من صفحة الى اي صفحة اخرى ؟

الاجابة بأنه يوجد اربع طرق لعمل ذلك وهي:

1-تمرير المتغير او الاسم من خلال الـ URL :هو تمرير المتغير من خلال شريط العنوان بأعلى المتصفح.
2-او من خلال session: هو تمرير المتغير من خلال الـstatus bar في اسفل المتصفح.
3-من خلال الـ ******: هو تمرير المتغير من خلال ملف يقوم بأنشاءه جهازك وحفظة .
4-من خلال html form: هو مثل تسجيل الدخول وكلمة المرور في المنتديات.

بعض الدوال المهمة معرفتها قبل البدء بالشرح للطرق الاربعة:

http://ruf3.com/uploads/09a2274abd.png (http://ruf3.com/)

الطريقة الاولى وهي :

1-تمرير المتغير او الاسم من خلال الـ URL :

هذا مثال بسيط لتتعرف الى هذه الطريقة..



رمز Code:
http://www.mydomain.com/news/articles/showart.php?id=12345
في هذا المثال قمنا بطلب الـملف المصاحب للـ ID رقم 12345 ليظهر في صفحة showart.php من هذا السكريبت.
النص ما بعد الـ URL يسمى query string .

هذه بعض الملاحظات على هذه الطريقة:

* اي شخص بأمكانة رؤية القيمة المحفوظة في المتغير الذي تقوم بأرسالة عبر الـ URL لذا لن تكون هذه الطريقة امنة خصوصا
عند ارسال معلومات حساسة مثل كلمة المرور او رقم هاتف او ايميل او ماشابة.
* اي شخص بأمكانة تغير محتوى القيم في URL لذلك برنامج سيكون مفتوح للجميع .

مثال على هذه الطريقة :

1- قم بفتح الملف moviesite.php وعدل عليه التالي:

http://www.3baer.com/php-les/3.png


2-احفظ الملف وقم بفتح ملف جديد واكتب به الكود التالي:

http://www.3baer.com/php-les/4.jpg


الان قم بحفظ الملف بأسم movie1.php وافتحه في متصحفك وانظر للنتيجة..

http://ruf3.com/uploads/5048983d51.png (http://ruf3.com/)

اضغط على الرابط لترى النتيجة..

http://ruf3.com/uploads/474f8e4063.png (http://ruf3.com/)

سترى بأن القيمة التي ادخلناها للمتغير


رمز PHP:

$favmovie


عن طريق الرابط هي "القيصر" لكن لاحظ بأنه لايوجد شيء في الصفحة التي تليها يعني
فقط كلمة القيصر موجوده بالرابط وليست موجوده بالصفحة
اي ان المتغير قيمته فارغه ولا يوجد به شيء

ولنقم بحل هذه المشكلة قم بعمل التغيرات التالية على الملف moviesite.php

http://www.3baer.com/php-les/5.png


الان احفظ العمل وقم بتشغيل الملف movie1.php
واضغط على الرابط ولاحظ الفرق بالصورة التالية

http://ruf3.com/uploads/c795866173.png (http://ruf3.com/)

لاحظ بأن كلمة القيصر قد ملأت الفراغ في المثال السابق ..


لنقم الان بشرح ما هية المثالين السابقين وما الذي قمنا بتنفيذة..

1-قمنا بتعريف متغير بملف moviesite.php بأسم $favmovie ولم نقم بأعطائة اي قيمة.

2-قمنا بفتح ملف جديد وكتبنا به رابط خاص بملف moviesite.php يقوم بأستدعاء
المتغير favmovie واعطائة القيمة "القيصر" بعد اشارة المساواة.

3-بعد اظهار النتائج لم تظهر النتيجة المطلوبة وقمنا بتعديل الملف moviesite.php.

4- في الملف السابق قمنا بأضافة متغير خاص يقوم بحمل متغير اخر ويأخذ قيمتة عن طريق
الرابط المرسل له بخلال المتصفح كما عرفناه بهذه الطريقة:


رمز Code:
moviesite.php?favmovie=القيصر
هنا قمنا بتعريف المتغير favmovie بأن قيمته هي "القيصر" ووضعناه في المتغير favmovie
عن طريق المتغير الخاص


رمز PHP:

$_REQUEST['favmovie']


فأصبح بعد اخذ القيمة بالرابط من المتصفح وهي القيصر اصبح هذا المتغير الخاص بهذا الشكل


رمز PHP:

$_REQUEST['القيصر']


----------------------------------------
تدريب بسيط على هذه الحالة:- قم بتجريب كلا من


رمز PHP:

$_GET


رمز PHP:

$_POST


بدلا من


رمز PHP:

$_REQUEST


----------------------------------------

ملاحظة مهمه جدا:

عند تمرير المتغيرات بطريقة الـ URL (الرابط) لا تقم بكتابة احرف خاصة مثل المسافة
او اي من الاحرف الخاصة.

* لنتعلم الان دالة جديدة وهي


رمز PHP:

urlencode()


ما هي وظيفة هذه الدالة؟

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

لنقم بتجربة هذه الدالة وقم بتحرير ملف movie1.php وقم بعمل التغيرات التالية:

http://www.3baer.com/php-les/6.png


قم بتشغيل الملف ولاحظ ماذا حدث للرابط في الاعلى..

http://www.3baer.com/php-les/9.png

لاحظ بأنه قد قام بوضع اشارة الزائد + بين الكلمتين اي انه حول المسافة الى اشارة + ..

لننتقل الان الى الطريقة الثانية من طرق تمرير المتغير وهي:

2-تمرير المتغيرات من خلال session :

الاسئلة المهمه في هذه الطريقة هي :
* ما هو الـ session ?
* ما اهم مميزاته ؟
* كيف يتم تعريفة بالسكريبت ؟

لنتعرف اولا الى ماهية الـ session :
الـ session هي الجلسات بمعنى اخر هي مجموعة من الحروف والارقام والاشارات
يحفظ بها معلومات العضو او الزائر الذي فتح صفحة موقعك وهي تختلف من مستخدم لأخر
مثلا قام احمد بالدخول للموقع وفي نفس الوقت قام علي بذلك سيكون ال ID لكل منهما مختلف

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

ما اهم مميزات الـ session او الجلسات؟

* اهم مميزه انها تدمر بعد اغلاق الزائر لصفحة موقعك
* ايضا انها تختلف اختلافا تاما من زائر الى اخر
* انها اكثر امانا اي يمكننا ارسال اسم المستخدم والباسوورد من خلالها ولا يكونا ظاهرين

كيف يتم تعريف دالة الـ session في صفحات موقعنا:
لتعريف الجلسات نستخدم الدالة التالية:


رمز PHP:

session_start()


واهم نقطة انها تكون في بداية اي صفحة وقبل كتابة اي كود HTML اي بهذه الطريقة



رمز PHP:

<?php
session_start()

لنقم الان بعمل مثال يوضح الية عمل هذه الدالة وكيف يمكننا استغلالها:

لنفترض بأنك تريد تمرير اسم المستخدم والتأكد من انه يستخدم الشكل الاصلي بالدخول الى صفحتك..

1- قم بفتح ملف movie1.php واضف في بدايته الكود التالي :

http://www.3baer.com/php-les/7.png

2-قم بحفظ الملف
3-قم بفتح الملف moviesite.php وقم بعمل التغيرات التالية:


http://www.3baer.com/php-les/8.png


الان احفظ الملف وقم بأستعراض الملف moviesite.php هل لاحظت بأنه لم يسمح لك بالدخول للصفحة؟؟
وكتب لك بأنك قمت بالدخول بطريقة غير صحيحة وهذا ما قمنا بعمله عندما استخدمنا الدالة الشرطية if

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


رمز PHP:

$_SESSION['username'] = "محمد";


البعض سيتسائل لم نقم بتعلم الدالة الشرطية حسنا هذا ليس مهما فهذا المثال للتوضيح فقط
سأقوم بشرح الدالة الشرطية if في الدرس القادم بأذن الله ..

حسنا ما الذي تعلمناه في هذا المثال:

1- طريقة استخدام المصفوفه SESSION ومكان وجودها داخل السكريبت
2- كيفية التحقق من ان المستخدم قام بالدخول الى الصفحة بالشكل الصحيح

ملاحظة: يرجى الاهتمام بما اقوم بشرحة داخل الامثله ذاتها لانها مهمه جدا لك وتساعدك
على فهم المثال بالشكل الصحيح

لننتقل الان الى الطريقة الثالثة وهي :
3- تمرير المتغيرات عن طريق ال ****** :

وهي معلومات صغيره جدا تحفظ على اجهزة الزوار الذين يدخلون الى موقعك..

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

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

بقية طريقة واحدة لدينا وهي عن طريق الـ form الموجود بالـHTML ولأهميتها
ولطول هذا الدرس سأقوم بنقلها الى الدرس الثالث املا بأن تكونوا قد اخذتم وقتكم ودرستم هذا الدرس جيدا
لما له اهمية كبيرة في دروسنا القادمة..

يكفي الى هنا في هذا الدرس الله يعطيكم العافية وارجوا ان لا تملوا من طول الدرس
ولكن هذه الدورة مكثفة جدا وستكون كبيرة جدا وهي من الصفر وحتى الاحتراف في هذه اللغة الشيقة

اسئلة على الدرس :

اي من المتغيرات التالية خاطئة



رمز PHP:

$_mohammad
$1mohammad
$User





تدريب بسيط لما تعلمنا في درسنا هذا :
1- قم بتعريف ثابت اخر وقم بعرضة في المتصفح ..
2- قم بتعريف متغير جديد واعطائه اي قيمة ومرره من خلال الرابط بالمتصفح ويأخذ نفس قيمته..
3- قم بكتابة المتغير $favmovie ما بين الوسوم الخاصة بعنوان الصفحة ..

هذه تدريبات بسيطة لتقومو بكتابة الاكواد والتعرف عليها وتعلمها لما فيه فائدة لكم..

اتمنى بأن اكون قد وفقت في الشرح وان لا اكون قد اهملت اي شي

لدية اي ملاحظة او اي سؤال او استفسار فسأل ولا تتردد وسأقوم بالاجابة عليه

شكرا لكم اخواني وحسن متابعتكم وفقكم الله لما يحب ويرضى

ودمتم بألف خير

^^

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


اضافة على الثوابت لسهولة الفهم

عندما نريد تعريف ثابت نقوم بالتالي

رمز PHP:

define ("قيمة الثابت", "الثابت" )

Bakenam
04-03-2009, 01:32 AM
http://www.3baer.com/php-les/6.png


في الصورة السابقة ...

لماذا تكتب echo ثلاث مرات مع انك تستطيع كتابتها مره واحده ؟؟؟

رمز PHP:

echo "<a href='1.php?favmov=القيصر'>click here</a>";

Bakenam
04-03-2009, 01:34 AM
السلام عليكم ورحمة الله وبركاتة
كيفكم اخواني ان شاء الله تكونوا بألف خير يا رب

عنوان درسنا لهذا اليوم هو:


ابدا بكتابة اول سكريبت لك بلغة الـ PHP

سنبدأ اول دروسنا في تعلم لغة الـ PHP وسيكون الدرس عبارة عن:
1-القوانين الخاصة بكتابة لغة الـ PHP.
2-لماذا عليك الاهتمام بكيفية ظهور الكود الذي كتبتة.
3-انشاء اول برنامج لك بهذه اللغة.
4-استخدام ال HTML في هذه اللغة وطريقة اضافتة.

ولكن قبل البدء في الدرس عليك التجهيز له ويتم التجهيز بالتالي:
1-قم بالذهاب الى المسار التالي في جهاز الحاسوب لديك
C:/camel/www
2-قم بعمل مجلد جديد واكتب اسمه ما شئت واحفظ ملفاتك به
وعندما تريد استدعاء اي ملف من خلال المتصفح
سيكون على الشكل التالي http://localhost/mohammad/firstprog.php (http://localhost/mohammad/firstprog.php)

mohammad : هو اسم المجلد الذي قمت بأنشاءة لحفظ الملفات في داخلة
firstprog.php : هو اي ملف php تريد ان تقوم بفتحه على المتصفح.

بسم الله الرحمن الرحيم
نبدا على بركة الرحمن
اولا:ما هي القوانين الخاصة بكتابة اكواد لغة الـ PHP؟
1- يبدأ اي كود برمجي بلغة ال بي اتش بي (يعني عندما تريد وضع كود برمجي
مختص بلغة الـ php يجب ان تقوم بفتح التاج التالي):

رمز PHP:

<?php

وينتهي بـ (هنا بعد الانتهاء من كتابة اي الكود البرمجي تقوم بأغلاق اكواد الـ php بهالطريقة):

رمز PHP:

?>


2- كل سطر في الـ php يجب ان ينتهي بـ ; فاصلة منقوطة (سيتم وضع مثال لها في الدرس انتظر)
والا سيظهر لك خطأ عند اخذ هذا الكود من قبل السيرفر لترجمته.

3-لأضافة ملاحظات على كود برمجي معين يجب عليك اضافة قبل هذه الملاحظة //
مثلا

رمز PHP:

<?php
//لتجربة الملاحظة
?>

وهناك طريقة اخرى لوضع ملاحظات تحتوي اكثر من سطر وهي كالتالي

ان تقوم بكتابة / ومن ثم تلحقها بـ * وتكتب العدد من الاسطر التي تريد وتغلقها بـ * ومن ثم /


رمز PHP:

/*
وتكتب ما تشاء
من الملاحظات التي تحتاجها
ومن ثم تغلق
*/


مثال اخر على ماسبق

رمز PHP:

<?PHP
//اول سطر في هذا السكريبت ;
?>

وهذا مثال اخر يبين مكان الفاصلة المنقوطة


رمز PHP:

<?PHP
echo "دورة ترايدنت الصيفية" ;
?>

نلاحظ في المثال السابق بأننا قمنا بأستخدام الامر echo لكتابة جملة معينة وتم وضع الجملة في " "
اي ما بين علامات التنصيص وهي لتعريف السيرفر بأن هذه الجملة نريدها كما هي

ستتسائل ما هذا الذي قام بكتابتة
حسنا اصبر وستتعرف على كل خطوة قمت بكتابتها في المثال السابق.

ثانيا: لماذا عليك الاهتمام بكيفية ظهور الكود الذي كتبتة؟
السيرفر الذي يقوم بترجمة الكود الذي كتبتة لا يهتم بطريقة ظهور الكود في الملف المرسل له
لأنه يكون عباره عن اكواد متتابعة وهو يقوم بترجمتها ,
لكن لنفرض بأنك تعمل في مجموعة وتقومون ببرمجة سكريبت خاص وكبير الحجم
وقد كانت طريقة كتابتك للكود غير مرتبة ,
سيكون على المبرمج الذي تعمل معه تفكيك الكود
وكأنه يقوم بكتابته لأول مره ,
هل تريد ان تسهل على نفسك هذا العناء اذا لاحظ المثالين التاليين:

رمز PHP:

<?php
if ($_POST["fname"] == "محمد") {
echo "<p>مرحبا بك يا $_POST['fname']</p>";
}
else {
echo "<h2> اسمك ليس محمد , لذا لايمكنك دخول الموقع.</h2>";
}
?>

لا تهتم بما كتب بالمثال فقط لاحظ عدد الاحرف وطريقة الكتابة

المثال الثاني:

رمز PHP:

<?php
//التأكد بأن الاسم الاول هو محمد قبل الدخول
if ($_POST["fname"] == "محمد")
{
echo "<p>";
echo "مرحبا بك يا";
echo $_POST['fname'];
echo "</p>";
}
else
{
echo "<h2>";
echo " اسمك ليس محمد , لذا لايمكنك دخول الموقع.";
echo "</h2>";
}
?>


المثالين لا يختلفان عن بعضهما بالنسبة للكود البرمجي
لكن هل لاحظت الترتيب في الكود الثاني وسهولة
قرائته بالنسبة لأي مبرمج اخر يأتي لقرائته من بعدك
وايضا في المثال الثاني يوجد كتابة للكود
اكثر من الكود الاول لكن هذا يساعد على تفادي الاخطاء في كتابة الكود.

ثالثا: حسنا هذا يكفي بما يختص بكتابة الكود بطريقة جيدة فالننطلق لنبدأ بكتابة اول برنامج لنا:
سأقوم بكتابة المثال وسأشرح بعدها ما قمت بكتابته بالمثال:
1- استخدام الامر echo: اهذا الامر مختص بأظهار ما تريد على المتصفح وبالطريقة التي تريدها

- افتح برنامج تحرير ملفات البي اتش بي الذي تفضلة واكتب به المثال بالاسفل

وقم بحفظة بأسم firstprog.php


رمز PHP:

<html>
<head>
<title>اول برنامج لي بلغة البي اتش بي</title>
</head>
<body>

<?php
//قمنا بفتح التاج الخاص بالـ php

echo "انا متفوق";
//طلبنا منه عن طريق الامر ايكو بكتابة كلمة انا متفوق ما بين " " واغلقنا الطلب بـ ;
?>

</body>
</html>

قم بفتح الملف عن طريق المتصفح الخاص بك...

رمز Code:
http://localhost/mohammad/firstprog.php (http://localhost/www/mohammad/firstprog.php)
وبعد فتح الملف سيكون هذا الناتج لعملك
http://ruf3.com/uploads/1e8b504527.jpg (http://ruf3.com/)

رائع اليس كذلك ..

ملاحظة: تستطيع ان ترى الكود الخاص بصفحتك من خلال view>>source
ستلاحظ بأن كود ال php لا يظهر وانما تظهر النتائج فقط ^^

حسنا لنذهب الان لشرح ما سبق ..

اولا بدئنا بكتابة الاكواد الخاصه ببداية اي صفحة html
وهي تستخدم احيانا وليس دائما في صفحات ال php
ومن ثم قمنا بفتح التاج الخاص بلغة ال php لتعريف المتصفح بأن هذه صفحة
php وكان ذلك من خلال
كتابة الامر <?php
وبعد ذلك قمنا بكتابة الامر echo
وهو الخاص بكتابة اي جملة او كلمة او اي شيء تريد اظهاره على المتصفح
من خلال صفحة ال php
وثم فتحنا " وكتبنا كلمة انا متفوق واغلاقناها بهذه العلامة "
وانهينا السطر بـ ;
واغلقنا البرنامج بكتابة ?>
لتعريف المتصفح بأن اوامر ال php قد انتهت.

// ملاحظة مهمة : عند اضافة تاج ال <?php في اي صفحة يجب عليك حفظها بـامتداد

رمز PHP:

.php


الان قم بأضافة السطر التالي الى الكود السابق


رمز PHP:

<html>
<head>
<title>اول برنامج لي بلغة البي اتش بي</title>
</head>
<body>
<?php
echo "انا متفوق";
//قم بأضافة هذا السطر
echo "وانا مبدع ايضا.";
?>
</body>
</html>

كما ستلاحظ بعد تشغيل الملف على السيرفر الشخصي
بأن كلمة انا متفوق وانا مبدع ايضا قد جاءا
على نفس السطر اذا ما هو الحل لهذه المشكلة البسيطة..

لنذهب للسؤال الرابع في درسنا وهو

4-كيف يمكنني استخدام ال HTML في هذه اللغة وطريقة اضافتة؟

كما راينا بالمثال السابق ظهرت لنا مشكلة بسيطه
وهي ظهور الكلمات متراصه في نفس السطر
ولحل هذه المشكلة قم بالتالي
1-قم بتحرير ملف firstprog.php وقم بالتعديل كما سترى بالمثال بالاسفل

رمز PHP:

<html>
<head>
<title>اول برنامج لي بلغة البي اتش بي</title>
</head>
<body>
<?php
echo "<h1>انا متفوق</h1>";
echo "<h2> وانا مبدع ايضا. </h2> ";
?>
</body>
</html>

لاحظ ما الذي حدث في هذه الصورة
http://ruf3.com/uploads/b15ed72e3d.jpg (http://ruf3.com/)

حسنا ما الذي جرى لهذا الكود ليظهر بهذه الطريقة ..؟

عند استخدامنا لأمر echo فأنه يقوم بأظهار ما تكتبه به على المتصفح حتى لو كانت اكواد html

اي انه يمكننا ادرج اكواد html مما تعلمنا في درسنا السابق داخل امر الـecho

وقد قمنا بأضافة كود h1+h2 وهي اكواد خاصة بـ html تقوم بوضع كل جملة نكتبها بطريقة معينة.
حسنا ماذا استفدنا من هذا المثال ..

1-حصلت على مظهر افضل لموقعك.
2-عرفت بأنك تستطيع اضافة اكواد الـ html
بدون اغلاق تاج ال php اي استعطت ان تجمع لغتين في واحدة

لنتظرق لشيء اخر وجديد يختص بـ html وهو قوانين اضافة اكواد ال html في صفحة php
1-احيانا تستخدم اشارة " في اكواد ال html
ايضا وهي موجوده في ال php عند كتابة اي جملة
وهذا سيشكل خطأ عند عرض الملف او كتابتة ستصبح اصعب قليلا
اذا ما هو الحل :
لديك عدة حلول لحل هذه المشكلة البسيطة وهي
اما ان تستخدم backslash (\) للخروج من كود ال html واكمال كود الphp مثلا:

رمز PHP:

echo "<font size=\"2\">";


لاحظ هنا ما الذي حدث اولا وضعنا بعد اشارة المساواه(=) وضعنا \
وقمنا بكتابة " كود التنصيص
ومن ثم كتبنا الحجم المراد لحجم الخط وهو 2 واغلقنا بـ \ ومن ثم اغلقنا كود التنصيص بـ"
وبعدها اقفلنا المراد كتابته من الامر echo بكود التنصيص " مره اخرى.

ملاحظة: لا تقم بحشر او وضع اكواد html كثيرة بين اكواد ال php حتى لا تخطأ
مثلا:

رمز PHP:

<?php
echo "<table width='100%' border='2' >";
echo "<tr>";
echo <td width='50'>;
echo "first name: ";
echo $_POST["fname"];
echo "</tr>";
echo "</table>";
?>

لاحظ كيف قمنا بفصل الاكواد كاملة وهذه الطريقة تعتبر طويله ولكن يمكنك فعل التالي:


رمز PHP:

<table width='100%' border='2' >
<tr>
<td width='50'>;
first name:
<?php echo $_POST["fname"]; ?>
</tr>
</table>

هنا قمنا بكتابة اكواد ال html وقمنا بفتح تاج ال php عندما احتجنا له واغلقناه في نفس السطر

بالنسبة للمصفوفة $_POST ستشرح لاحقا اخواني

تدريب: قم بكتابة برنامج PHP يقوم بطباعة اسمك الاول
بخط عريض في سطر
واسم عضويتك في سطر اخر بخط مائل ورقم عضويتك
بخط عادي في سطر ثالث.
تلميح : يمكنك استخدام برنامج الـ Front Page لمساعدتك
ولكن افضل بأن تقوم بكتابة الكود بيدك حتى تتمرن
تزيد من قدرتك على كتابة الكود بنفسك



وها قد انتهينا من اول دروسنا في هذه اللغة الرائعة بحق
واتمنى ان تكونو قد استمتعتم واستفدتم
من هذا الدرس الطويل بعض الشيء والمتعب
ولكن لمن اراد العلم والتعلم فهو سهل وبسيط جدا
وليس به اي شيء فقد قمت بشرح كل كود قد كتبتة
اتمنى ان لا اكون قد قصرت في شيء واتمنى للجميع الاستفادة
واي شيء او اي استفسار انا حاضر وجاهز للأجابة عنه

Bakenam
04-03-2009, 01:37 AM
السلام عليكم ورحمة الله وبركاتة
كيف الحال اخواني ان شاء الله بخير

ستكون اول دروسنا في هذه الدورة بتعلم بعض المفاهيم الخاصة بلغة الـ HTML

حتى يسهل علينا التعامل معها عندما نحتاجها في لغة الـPhp وذلك لتداخلها الكبير معها

ما رايكم ان نبدا الان ..

بسم الله

اولا قم بفتح اي محرر نصوص ويفضل الفرونت بيج

وقم بمتابعة الشرح مع كتابة ما هو مخصص في هذا الدرس كما هو موضح بالصورة

http://ruf3.com/uploads/10d43c0992.png (http://ruf3.com/)

لاحظ الصورة السابقة قمنا بكتابة الاكواد ما بين الوسوم<body>

وانت تستطيع انك تطبق الدرس ما بين هذول الوسوم http://www.traidnt.net/vb/images/smilies/nosweat.gif

ولمن لا يملك الفرونت بيج يقوم بتجربة كل الاكواد في اي محرر نصوص ويحفظها بأمتداد
.html وبعدها يقوم بفتحها عن طريق المتصفح ليرى نتيجة عملة

الـ html هي لغة مخصصة بتصميم مواقع الانترنت وهي تحتوي على tags او الوسوم

يبدا بأشارة اصغر وينتهي بأشارة اكبر

هذا هو الوسم او التاج < > ويوضع بداخله كود برمجي

رمز Code:
< >
وبداخلة يوضع الكود البرمجي وتتكون نهايته من التالي


رمز Code:
</ >

وتكون التاجات(tag) مكونة من name و attributs

لنذهب الان لنرى اهم مجموعة من التاجز

1-Font Formating


رمز Code:
<font size="الحجم" face="اسم الخط"> </font>
رمز Code:
أ- <p> هنا توضع الفقرة المرادة </p>
وهي لوضع جمل مع بعضها البعض في مكان محدد


رمز Code:
ب- <b> hello! </b> وهي لجعل الخط غامق
رمز Code:
ج-<u> hello! </u>
وهذه لوضع خط اسفل الكلمة المراده


رمز Code:
د-<i> hello! </i> وهي لجعل الكلام بشكل مائل

انتهينا من مرحلة الـ Fonts ولنتقدم قليلا لنصل لمرحلة الـ Links او الروابط

2- Html Links

أ- احيانا تكون صفحاتنا طويلة جدا بحيث يصبح من الضروري وضع نقطة بداية للصفحة

وعند كل فقرة نضع نقطة لأرجاعنا لهذه البداية ويتم ذلك عن طريق


رمز Code:
أ-<a href="#بداية"> top </a>

يجب ان يكونو بنفس الصفحة


رمز Code:
<a name ="بداية"> بداية </a>
لنقم الان بشرح ما سبق لاحظ في البداية قمنا بكتابة href وهذه لتخبر المتصفح بأن المطلوب رابط

وبعدها قمنا بوضع # وهذا ليعلم المتصفح بأن المطلوب من نفس الصفحة ويقوم بالبحث عن كلمة

بداية وينقلنا منها الى اعلى الصفحة

ب- لنفرض بأن لديك صفحة (profile.html) وتريد ان تضع لها رابط بأي صفحة اخرى
ما عليك سوا اتباع التالي

لتعرف الطريقة

رمز Code:
<a href ="profile.html"> من نحن </a>
وسيقوم المتصفح بفتح الصفحة الجديد في نفس الصفحة الرئيسية

ولكن اذا اردت ان تقوم بفتح صفحة جديدة فأكتب الكود التالي

جـ-
رمز Code:
<a href ="profile.html" target =_blank"> من نحن </a>
الـ attribut الذي قمنا بكتابته مختص بفتح صفحات جديدة من الروابط ويمكنك ايضا

ان تفتح الصفحة بنفس المتصفح عن طريق كتابة مثلا taget=_self

د- لنفرض بأنك تقوم بوضع روابط لمواقع اخرى ما عليك سوا كتابة اسم الموقع في هذه الخانة


رمز Code:
<a href ="www.yahoo.com" target =_blank"> yahoo </a>
هـ- هذا الكود اذا اردت وضع ايميل بمجرد الضغط على الزر ينتقل الى out look


رمز Code:
<a href ="mailto:design@3ber-al7ob.com?subject=الموضوع"> yahoo </a>
لاحظ بأنه عندما كتبنا كلمة subject قمنا بكتابة علامة استفهام قبلها ولم نقم بفتح كوتيشن مارك " هذه الكوتيشن مارك " لها

الان انتهينا من الروابط والايميلات وسننتقل لأهم ما في الـ HTML وهو

3- HTML Tables

تتكون الجداول من ثلاث تاجات رئيسية وهي


رمز Code:
<table> <tr> <td>
<table> هذا التاج مختص في فتح الجدول وله attributs خاصة وكثيرة

<tr> متخصص في فتح الصفوف وله ايضا attributs

<td> متخصص في فتح الاعمدة وله ايضا مثل السابق

لنبني معا جدولا صغيرا بدون اي خصائص ولنرى ماذا سيرسم لدينا


رمز Code:

<table>
<tr>
<td> 1</td>
<td> 2</td>
<td> 3</td>
</tr>

<tr>
<td> 4</td>
<td> 5</td>
<td> 6</td>
</tr>

<tr>
<td> 7</td>
<td> 8</td>
<td> 9</td>
</tr>
</table>

لو وضعت هذا الكود في note pad وقمة بتشغيلة في المتصفح سيظهر لك الارقام مرتبة

بشكل جدول منظم ومنسق

لنقم الان بالانتقال الى خواص الجدول (attributs)


رمز Code:
<table border="2" width="100%" hieght="100%" bordercolor="#ffffff" bgcolor="white" align="center"> </table>
الكثير من الخواص اليس كذلك ؟؟

لا يهم لنأتي الان لشرحها بالتفصيل

border وهو خاص بسماكة الحدود

width خاص بعرض الجدول ويمكن كتابته اما بالنسبة او بالبكسيل
اذا كانت نسبة يجب وضع اشارة % قبل الرقم واذا كان بيكسل يوضع الرقم لوحدة

وكذلك الحال في ال hieght ولكن عملة هو الطول

bordercolor وهو كود خاص بلون الحدود وتوضع اما كلمة او كود ال hexa الخاص باللون

وكذلك الحال في bgcolor وهو لوضع خلفية ملونه للحقل

align وهو خاص بمكان الجدول بالصفحة ويكون كالتالي
center توسيط
left شمال
right يمين

انتهينا تقريبا من الجداول والان لننتقل لأهم ما يخص لغة الـPHP وهو الـ form

4-form :
يتم بناء الـ form بهذا الوسم

رمز Code:
<form>
ويتم اغلاقة بهذا الوسم


رمز Code:
</form>
لننتقل الان لبعض خصائصة اهم ما يخصنا في هذه الخصائص هو

1- ****:مختص بمساحة انت تحددها ليتم كتابة النص بداخلها

2-Password:مختص بأخفاء النص لأنه سيكون عبارة عن كلمة مرور محددة

3-Radio:هذا النوع مختص بوضع اكثر من خيار ولا يمكنك اختيار الا واحد منها مثلا
الجنس : سيكون اما ذكر او انثى ولابد من اختيار خيار واحد فقط

4-Check box:هنا بعكس السابق وهو لعدة اختيارات مثلا الهوايات (سباحة,رسم,كتابة)

5-File:في هذه الخاصية يمكنك المتصفح من فتح ملفات جهازك واختيار ملف مثلا
كان السكريبت الذي نعمل به هو سكريبت لرفع الملفات وعن طريق هذه الخاصية يمكننا
من اختيار الملف المراد تحميلة الى الموقع.

لنرى الان كيفية العمل معها او ما هي الاوامر الخاصة بها :

1- **** : الكود الخاص به وشرحة سيكون في اسفلة


رمز Code:
<form><input type="****" name="username" id="username" size="20" maxlength="20" value="تجربة الخاصية1" tab="1"><input type="****" name="username1" id="username1" size="20" maxlength="20" value="تجربة الخاصية" tab="2"></form>
سأقوم بشرح كل خاصية على في هذة المميزات على حدى حتى يتسنى لك الفهم التام


رمز Code:
input type="****"
في هذا الوسم قمنا بأختيار نوع الفورم الذي نريده وكان ****


رمز Code:
name="username"
وهنا قمنا بأعطائة اسم
ولاحظ بانه لا يمكن لهذا الاسم ان يتكرر
ولا يمكن بأن يبدا بأرقام


رمز Code:
id="username"
واعطيناه قيمة لنتمكن من استدعاءه وهي الـ id
ولاحظ بانه لا يمكن لهذه القيمة ان يتكرر
ولا يمكن بأن يبدا بأرقام


رمز Code:
size="20"
وهنا نضع عدد الاحرف المراد كتابتها او استيعابها من قبل هذه الخاصية


رمز Code:
maxlength="20"
وهنا كان الحد الاعلى للاستيعاب


رمز Code:
value="تجربة الخاصية1"
هذه ستكون القيمة الافتراضية لما بداخل المربع

سهلة اليس كذلك ^^

2-وكذلك الحال للخاصية password ولكن الاختلاف الوحيد هو انه عندما نقوم بأختيار
ال type يجب بأن يكون password
وهذا مثال للتوضيح


رمز Code:
<input type="password" name="pass" id="pass" size="20" maxlength="20" value="تجربة الخاصية1" tab="1">
3- Radio لا يختلف كثيرا عن ما سبق


رمز Code:
<input type="radio" name="Gender">Male<input type="radio" name="Gender">Female
رمز Code:
<input type="radio" name="Gender" checked tabindex="1" value="v1"> Male<input type="radio" name="Gender" value="v2" tabindex="2" > Female
لاحظ هنا بأن كلمة Gender عند الخاصية name بنفس الشكل يعني فقط نفس الكلمة

والسبب في هذا يعود الى ان الخاصية radio تقوم بأعتبار الـ name المتشابة يكون من نفس الفصيلة
والمختلف يكون كل واحد فيهم فصيلة لوحدة مثلا

اذا كان الكود هكذا

رمز Code:
<input type="radio" name="Gender1" checked tabindex="1" value="v1"> Male<input type="radio" name="Gender" value="v2" tabindex="2" > Female
فسيتم تعريف الـGender1 بأنه منفصل عن الـGender وعند قيامك بالضغط لأختيار احدهما
ستلاحظ بأنك قمت بأختيار الاثنين معا لذا عند وضع خاصية الـ radio حافظ على قيامك بالتالي
اولا اعطاء الاختيارات نفس الـname مثل الـ male و الـ female فأنت تريد ان تختار احدهما وليس
كلاهما
ثانيا عند وجود اكثر من فصيلة بالصفحة مثلا
اختيار الجنس يكون به ذكر وانثى (يوضع لهم name واحد فقط)
واختيار ما بين هل اعجبك الموقع على سبيل المثال
سيكون الجواب اما نعم او لا (ويوضع لهم name متشابه ولكنه مختلف عن الـname في اختيار الجنس

وهذا مثال بسيط لما كنت اعني حاول تطبيقه بالفرونت بيج وسترى الفرق


رمز Code:
<input type="radio" name="Gender" checked tabindex="1" value="v1"> Male<input type="radio" name="Gender" value="v2" tabindex="2" > Female<br><input type="radio" name="t&f">True<input type="radio" name="t&f">False
وكذلك الحال في ألـ Check box (حاول بتجربتها بنفسك)

4- Drop Down

تبدا بالوسم التالي
<select>
وتكون خياراتها كما يلي
<option> الاردن</option>
وتنتهي بـ
</select>

وهذا مثال للتوضيح

رمز Code:
<select name="country" dir="rtl" multiple size="1" tabindex="1"><option selected>Jordan</option><option>Pal</option><option>Sudia</option><option>kuwait</option><option>Iraq</option></select>
5- **** Area وهو مختص بمكان كبير يحتوي على عدد كبير من الحروف لأدخال به

اي جمل او كلمات او ملاحظات تريدها


رمز Code:
<****area name="area" id="area" cols="20" rows="20">اكتب ملاحظاتك هنا</****area>
الخاصية cols لعدد الاسطر والخاصية rows لعدد الاعمدة

6-Buttons
وهذه لأضافة زر في الصفحة وتكون انواع الازرار ثلاثة وهي
Button
submit:للأرسال
reset:لتفريغ الحقول

مثال على ما سبق :


رمز Code:
<input type="button" value="اذهب" method="get" action="callus.html" ><input type="submit" value="اذهب" method="post" action="callus.html" ><input type="reset" value="احذف" >
الخواص السابقة هي :
value="اذهب" وهي القيمة المدخلة على الزر
method="get" لا تشفر وتكون واضحة على شريط العنوان (سيتم شرحها لاحقا)
method="post" تشفر وتكون في شريط الحالة(سيتم شرحها لاحقا)
action="callus.html" هنا اسم الصفحة المراد ارسال القيم اليها



انتهى الدرس التحضيري للدخول الى عالم الـ php

واتمنى ان تكونو قد استفدتم منه ومن لدية اي استفسار انا جاهز

تدريب:قم بعمل فورم ارسال بريد وضع به ما تراه بالصورة بالاسفل
(تنبيه يرجى عدم استخدام الفرونت بيج في عمل الصفحة لأنك لازم تتعلم وتكتب بنفسك وتستفيد)

(http://ruf3.com/)

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

لأنه سيكون بدايتنا وفي المساء سأقوم بوضع الدرس الاول في الـ php

Bakenam
04-03-2009, 02:01 AM
السلام عليكم ورحمة الله وبركاتة
قبل البدء بدورتنا في تعلم لغة PHP يجب عليك التجهيز بما يلي:
1- السيرفر الشخصي (وهو السيرفر الذي ستقوم بتجربة الملفات التي ستقوم ببرمجتها)
ويتم كما يلي:
* قم بتحميل البرنامج التالي وهو ما سنستخدمة في هذه الدورة
حمل من هنا (http://daif.net/camel/down/camelserver.exe)
*وهذه طريقة تركيبة وتحضيره للعمل في بيئتنا
التركـــ اضغط هنا ــيــــب (http://daif.net/camel/?app=install)
2- البرنامج الخاص بتحرير ملفات البي اتش بي وكتابتها وبرمجتها
اضغط هنا للتحميــــــــل (http://downloads.zend.com/studio/5.1.0/ZendStudio-5_1_0a.exe)
"right click then save target As"
وهذا الكراك الخاص به
حمل من هنا (http://www.traidnt.net/vb/attachment.php?attachmentid=141830&stc=1&d=1181908637)


لمن لم يتمكن من تحميل برنامج محرر الملفات يمكنه تحميل هذا الملف

لصغر حجمة وانه يفي بالغرض

http://www.traidnt.net/vb/attachment...3&d=1182126306 (http://www.traidnt.net/vb/attachment.php?attachmentid=142643&d=1182126306)





وبهذا انتهينا من التحضير للدورة

Bakenam
04-03-2009, 02:11 AM
بسم الله الرحمن الرحيم

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

طبعا معروف هالكود للـ**** AREA

رمز PHP:

<form method="POST" action="save.php">
<****area rows="2" name="S1" cols="20">
</****area>
<input type="submit" value="Submit" name="B1">
<input type="reset" value="Reset" name="B2">
</form>


هالكود يخرج لنا صندوق تحرير بدون اي ادوات وكلنا تقريبا كنا نستخدمه ومثال عليه هذه الصورة :
http://www.traidnt.net/vb/attachment.php?attachmentid=167184&thumb=1&d=1187939718 (http://www.traidnt.net/vb/attachment.php?attachmentid=167184&d=1187939718)

وطبعا في ملف save.php

تقوم بإستلام قيمة المتغير وتقوم بالتعامل معها من حيث وضعها في قاعدة البيانات او إخراجها للمستخدم او اي شيء

هذه هي نفس فكرة عمل المحرر الجديد مع فرق الأكواد التي سيتم وضعها

بسم الله نبدأ :

بالبداية قم بتحميل الملف المرفق الخاص بالمحرر .zip وقد وضعته لكم كاملا (النسخة تعمل علي الـphp والـASP والـASP.NET ) مع شرح كيفية تركيبه والتعديل عليه بالإنجليزيه.

خطوات التركيب :

1- قم برفع محتويات مجلد ******s لمجلد السكريبت .

2 - قم بكتابة هذا الكود :

رمز PHP:

<?php
///////////////////////////////////////////////////
///////////////////////////////////////////////////
///////////////////////////////////////////////////
/////////////intialize wysiwyg editor//////////////
///////////////////////////////////////////////////
///////////////////////////////////////////////////
///////////////////////////////////////////////////
if(strpos($_SERVER["HTTP_USER_AGENT"],"MSIE"))
echo "<****** language=********** src='../******s/editor.js'></******>";
else
echo "<****** language=********** src='../******s/moz/editor.js'></******>";
echo "
**********
function submitForm()
{
********.forms.Form1.elements.inpContent.value = oEdit1.getHTMLBody();
********.forms.Form1.submit()
}
</******>";
echo "<pre id=\"idTemporary\" name=\"idTemporary\" style=\"display:none\">";
if(isset($_POST["inpContent"]))
{
$sContent=stripslashes($_POST['inpContent']);
echo htmlentities($sContent);
}
echo "</pre>";
///////////////////////////////////////////////////
///////////////////////////////////////////////////
///////////////////////////////////////////////////
/////////////intialize wysiwyg editor//////////////
///////////////////////////////////////////////////
///////////////////////////////////////////////////
///////////////////////////////////////////////////

///////////////////////////////////////////////////
///////////////////////////////////////////////////
///////////////////////////////////////////////////
/////////////USING THE wysiwyg editor//////////////
///////////////////////////////////////////////////
///////////////////////////////////////////////////
///////////////////////////////////////////////////
echo "
<form method=\"post\" action=\"post.php\" id=\"Form1\">
**********
var oEdit1 = new InnovaEditor(\"oEdit1\");
oEdit1.RENDER(********.getElementById(\"idTemporary\").innerHTML);
</******>
<input type=\"hidden\" name=\"inpContent\" id=\"inpContent\">
</form>
<input type=\"button\" value=\" SUBMIT \" onclick=\"submitForm()\">
";
///////////////////////////////////////////////////
///////////////////////////////////////////////////
///////////////////////////////////////////////////
/////////////USING THE wysiwyg editor//////////////
///////////////////////////////////////////////////
///////////////////////////////////////////////////
///////////////////////////////////////////////////
?>


طبعا نقوم بتغيير الـ action="post.php" بحيث يتناسب مع الصفحة التي نريد إرسال الـHTML CODE إليها

ونقوم بتغيير الـTRAIDNT إلي مانريد وضعه في صندوق التحرير قبل بداية الكتابه فيه.

وهكذا قمنا بتركيب المحرر

الان مع الخطوة الثالثه في التركيب وهي خاصة بإستلام المتغير في صفحة post.php (في مثالنا هذا فقط ) .

ويتم إستلام المتغير عن طريق الكود التالي :

رمز PHP:


<?
if(isset($_POST["inpContent"]))
{
$sContent=stripslashes($_POST['inpContent']);//remove slashes (/)
echo $sContent;
}
?>

يمكنك في هذه الحالة التعامل مع كود الـHTML الناتج من المحرر عن طريق المتغير $sContent من حيث حفظه في قاعدة البيانات او إظهاره كما عملت انا في الكود السابق

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

http://www.traidnt.net/vb/attachment.php?attachmentid=167187&thumb=1&d=1187940813 (http://www.traidnt.net/vb/attachment.php?attachmentid=167187&d=1187940813)

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

Bakenam
04-03-2009, 02:14 AM
برنامج النوت باد بلس بلس (Notepad ) لمبرجي ومطوري الويب

كلنا نعرف اانه النوت باد هو محرر النصوص الافتراضي للوندوز

ونستخدمه في تحرير ملفات (html , PHP , xml , الخ)

لكن!
لمبرجي الويب النوت باد بلس بلس ... رح يسهلنا هواي من المهام ...

ويميزنا الكودات والقيم والمتغيرات وما الى ذلك ... من مصطلحات برمجية ...





والبرنامج بلغتين العربية والانجلزية

والبرنامج يدعم جميع لغات واليكم الصورة التالية



التحميل هنا

http://www.4shared.com/icons/32x32/zip.gif (http://www.4shared.com/file/27384514/f743220d/npp412Installer.html)

Bakenam
04-03-2009, 02:15 AM
السلام عليكم ورحمة الله ما ادري احد سبقني ونزله عموما هذا
محرر PHP يساعدك لتعديل والاضافه في الصفحات PHP
وقرائة الاسطر
مثل ما يقولو في بعض الشروحات في تركيب الهاكات ابحث عن السطر رقم كذا او اضف الكود بعد السطر كذا
هذا يفي بالغرض بكل سهوله

حمل البرنامج (http://www.yalw.com/dwn/ep2setup.exe)

Bakenam
04-03-2009, 02:16 AM
السلام عليكم

مساكم الله بالخير جميعا

هذا دروس فيديو للغة البرمجة php

حصلتها وانا ابحث Google
39 ملف مضغوط امتداد rar
حجم الملف الواحد 1.4 mb
كل ملف مضغوط يوجد في داخله اكثر من 4 الى 6 ملفات فيديو
مجموع ملفات الفيديو بعد فك الضغط 92 ملف


ملاحظة بسيطة
حمل جميع الملفات قبل فك الضغط واجعلها في مجلد واحد بعد ذلك قم بفك الملف الاول php.part01.rar فقط وسيتم فك بقية الملفات المضغوط تلقائي

رابط دروس php بالفيديو
http://www.clubmastervn.com/VideoPHP/ (http://www.clubmastervn.com/VideoPHP/)

Bakenam
04-03-2009, 02:18 AM
السـلام عليكم ورحمـة الله وبركاته

أول شي أرجو منكم الرد وبس !

تعلم لغة PHP باللغة العربية في هذا الكتاب المرفق رابطه

http://rapidshare.com/files/44158198...76___1610_.pdf (http://rapidshare.com/files/44158198/PHP___1578___1593___1604___1610___1605____1576___1 575___1604___1593___1585___1576___1610_.pdf)



وتعلم لغة APS.net بالإنجليزي

http://rapidshare.com/files/44247594/_ASP.net.pdf (http://rapidshare.com/files/44247594/_ASP.net.pdf)

إن شاء الله عجبتكم

المصدر :
http://www.montada.com/showthread.php?t=545786 (http://www.montada.com/showthread.php?t=545786)

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

Bakenam
04-03-2009, 02:19 AM
السلام عليكم ورحمة الله وبركاته

أولا : الله يقوي الجميع على فعل الخير والفائدة

ثانيا : بدي ردودو بس !

هذه بعض المواقع الي بتحوي مجموعة كتب برمجية وفي نفيس الوقت مجانية

www.freecomputerbooks.com (http://www.freecomputerbooks.com/)

www.flazx.com (http://www.flazx.com/)

www.cb4a.com (http://www.cb4a.com/)

وهذا موقع في اكواد برمجية لعدة لغات

www.zoom.com\bank (http://www.zoom.com/bank)

هادا طبعا بنك اكواد

وإن شاء الله الكل يستفيد

المصدر :
http://www.montada.com/showthread.php?t=544964 (http://www.montada.com/showthread.php?t=544964)

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

Bakenam
04-03-2009, 02:22 AM
السلام عليكم ورحمة الله وبركاته

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

الاول هو ال sql و ده اسهل شيئ

و الثاني هو ال php و ده برضوا سهل إن شاء الله

الان نتكلم بشكل نظري انا عندي جدول مثلاً للمواضيع جيد

و الجدول ده موجود فيه 75 موضوع

و انا عايز اجلبهم في صفحتي بس بتقسيم النتائج من هذا الجدول الي عدة صفحات

طيب حلو الكلام انا عايز بائه اظهر في كل صفحه 25 موضوع معنه كده إن هيطلع لي 3 صفحات

لأنك لو قسمت 75 علي ال 25 يبقي النتيجه 3 حلو اوي كده

هنا باقه يجي دور ال sql

و دور التعليمه limit

مثال عملي

عندي جدول بأسم topic

الان سأقوم بالاستعلام من هذا الجدول لجلب النتائج بالطريقه التقليديه


رمز Code:
select * from `topic`


طبعاً بالطريقه دي هيظهر كل محتويات الجدول هنا يجي دور التعليمه

limit

الان سنقوم بتقسيم النتائج الي 25 ننتيجه في الصفحه مثال


رمز Code:
select * from `topic` limit 0,25
دلوقتي الاستعلام بدوره هيجلب 25 نتيجة من الجدول topic

طيب كده باقي 50 نتيجه متقسمه الي صفحتين بخلاف الصفحه الاولي اللي فيها ال 25 نتيجه

هقدر اجلبهم ازاي

مثلاً لو حبيت اجيب الصفحه الثانيه


رمز Code:
select * from `topic` limit 25,25
هيبدأ يجلب النتائج من بعد النتيجه رقم 25

فيبدأ بالعرض من

26

الي

50

طيب لو عاوز اجلب الصفحه التالته




رمز Code:
select * from `topic` limit 50,25
هيبدأ يجلب النتائج من بعد النتيجه رقم 50

فيبدأ بالعرض من

51

الي

75

اظن ابتضحت الصوره طيب دلوقتي زائر الموقع إحتمال كبير إنه يكون مش بيعرف في استخدام ال sql

يبقي هنا يجي دور ال php

أول حاجه لازم نأمن المتغير الخاص برقم الصفحه بحيث لا يتم العبث به و إظهار نتائج غير مرغوب فيها

تابع معايا


رمز PHP:




$page = (!isset($_GET['page']) ? 1 : intval($_GET['page']));/*

أولاً قمنا بالتحقق لو كان لم يتم تعريف المتغير في المتصفح سيأخذ من تلقاء نفسه

القيمه 1 اي سينلقنا الي الصفحه الاولى

و إن تم تعريفه في المتصفح سيأخذ قيمة نفسه

*/

$page =(intval($_GET['page'])<=0 ? 1 : $page );/*

و هنا قلنا لو كان المتغير اقل من أو يساوي 0 سيأخذ قيمة 1 أو إن كان غير ذلك سيكون نفسه

*/


كده إحنا أمنا المتغير $page الخاص بجلب الصفحات حتي لا يتم التحايل علي عملية جلب النتائج

الان هل تتذكر معي ما قمنا بعمله في الجزء الخاص يال sql

حان دوره و لكن عن طريق ال php

دلوقتي نتكلم شويه نظري

انا حالياً طلبت الصفحه الثانيه جيد و اريد جلب النتائج الخاصه بها

من البديهي ان يكون المتغير page في المتصفح يحمل القيمه رقم 2

الان نريد ان يكون رقم الجلب 25 ليجلب من المواضيع التي من بعد 25 الي 50

توضيح يعني في استعلام ال sql تكون التعليمه limit بهذه الطريقه


رمز Code:
limit 25,25
25 هي عدد النتائج المراد عرضها في المصفحه

25 لجلب النتائج اللي في الصفحه الثانيه



جيد الان كما ذكرت انا في الصفحه رقم 2 و عايز اوصل الي الرقم خمسين

يبقي اضرب رقم الصفحه الي عدد النتائج المراد جلبها في الصفحه الواحده


رمز PHP:


$limit=$page*25;


هنصل علي 50 لأننا في الصفحه رقم 2 ثم نقوم بطرح قيمة عدد النتائج في الصفحه الواحده من ناتج الضرب

ليصبح الكود كالتالي


رمز PHP:


$limit=($page*25)-25;


جيد جداً الان ما ريد بوضع قيمة كمية النتائج في الصفحه الواحده في متغير أليس هذا افضل


رمز PHP:




$numpage=25;//متغير عرض النتائج في الصفحه الواحده



$limit=($page * $numpage) - $numpage;


الان سنقوم بالتعديل علي الاستعلام ليصبح معتمد علي المتغيرات و ليس الارقام المباشره


رمز PHP:


<?


//الاستعلام الخاص بجلب البيانات من الجدول

$sql=mysql_query("select * from `topic` limit $limit,$numpage ");



// التأكد من وجود صفوف في الجدول
if(!mysql_num_rows($sql))
{
echo 'لا توجد بيانات';

} else{
while($arr=@mysql_fetch_array($sql))
{

// طباعة محتويات القاعده


}

}





?>

Bakenam
04-03-2009, 02:23 AM
الان و بعد ان قمنا بعمل تقسيم للنتائج القادمه من قاعدة البيانات



سنقوم بإظهار ارقام الصفحات الناتجه من الاستعلام علي هذا الجدول




رمز PHP:

<?php




$page = (!isset($_GET['page']) ? 1 : intval($_GET['page']));

$page =(intval($_GET['page'])<=0 ? 1 : $page );





$numpage=2;//متغير عرض النتائج في الصفحه الواحده



$limit=($page * $numpage) - $numpage;

//الاستعلام الخاص بجلب البيانات من الجدول

$sql=mysql_query("select * from `topic` limit $limit,$numpage ");



//تكملة الكود بجلبه علي شكل مصفوفه في تكرار






while($arr=@mysql_fetch_array($sql))
{

echo $arr['****'].'<br>';


}










$numbers=ceil(mysql_num_rows(mysql_query("select id from `topic` "))/$numpage);



$i=0 ;

while($i<$numbers)
{


++$i;


if($page<>$i)$n="<a href=\"?page=$i\">$i</a>";

else

{

$n="$i";

}



echo $n;







}







?>

Bakenam
04-03-2009, 10:13 PM
احبتي رواد ترايد نت حياكم الله

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

مقدمة : مميزات لغة PHP للمواقع
درس رقم مقدمات أولية
التعليقات والمتغيرات
الوقت والتاريخ
الأوامر الشرطية
التكرارات والمصفوفات
ترتيب الكود البرمجي
تتبع وتصيد ومنع الأخطاء
التعامل مع العميل
بدايتك إلى الـSession
شرح عبارات اللغة
قواعد البيانات
الدوال ( Function )
العمليات الرياضية
دوال قواعد البيانات
التاريخ باللغة العربية
لمتغيرات
مقدمة عن الـ Session
التعامل مع الملفات والمجلدات
طرف التخزين
إنشاء دليل المواقع
إنشاء سجل الزوار
بعض الدوالات

للتحميل انقر هنا (http://www.s77.com/prog/pafiledb.php?action=download&id=9575)

وياريت ما تنسوني اخواني من فضل دعائكم في ظهر الغيب والدعاء بالرحمة والمغفرة لوالد الله يرحمه والتقييم اذا شفتوا اني استحقه

Bakenam
04-03-2009, 10:19 PM
جعل برنامجك أكثر حرفية وأكثر تفاعلاً مع المستخدم بوساطة الجمل الشرطية.

جملة if:
تستخدم جملة if لاتخاذ قرار حيث تعطى شرطاً لتستعمله لاتخاذ هذا القرار.
فمثلاً يستخدم الشرط التالي للتاكد من أن المستخدم أدخل عدد الاسماء التي يرغب بإدخالها:

رمز Code:
<?phpif ($n_names == 0 )echo "لم تدخل عدد الاسماء التي ترغب بإدخالها";?>
حيث أن المتغير $n_names هو عدد الاسماء التي يرغب المستخدم بإدخالها.

يمكننا كتابة أكثر من جملة داخل الجملة الشرطية بالطريقة التالية:

رمز Code:
<?phpif ($n_names == 0 ){echo "<font face=tahoma>";echo "لم تدخل عدد الاسماء التي ترغب بإدخالها ";echo "أدخل عدد الاسماء بحيث يكون بين 1 و 100";font "</font>;}?>
عندما يتحقق الشرط سوف يقوم البرنامج بتنفيذ السطور جميعها التي أدخلناها بالأعلى.

جملة else:
تستخدم هذه الجملة لتنفيذ بديل إذا لم يتحقق الشرط بجملة if بالشكل التالي:

رمز Code:
<?phpif ($n_names == 0 ){echo "لم تدخل عدد الاسماء التي ترغب بإدخالها";}else{echo "عدد الاسماء التي سوف يتم إدخالها هو: $n_names";}?>
جملة elseif:
تستخدم هذه الجملة لفحص عدد من الشروط وتنفيذ ما صح منها، كمثال عليها يمكننا إختبار عدد الاسماء التي سوف يقوم المستخدم بإدخالها وإظهار قيمة تقريبية لعددها كالتالي:

رمز Code:
<?phpif ($n_names == 0 )echo "لم تدخل عدد الاسماء التي ترغب بإدخالها ";elseif ($n_names <= 50 )echo "عدد الاسماء التي سوف تقوم بإدخالها هو أقل من 50 اسم";elseif ($n_names > 50 )echo "عدد الاسماء التي سوف تقوم بإدخالها هو أكثر من 50 اسم";?>
جملة switch:
جملة switch مشابهة بدرجة كبيرة لجملة if لكنها تمتاز بأنها يمكن أن تعطي للشرط أكثر من قيمتين كما في المثال التالي:
سوف نستخدم كود الـhtml التالي لجعل المستخدم يختار عدد الاسماء التي يرغب بإدخالها من مجموعة اختيارات كالتالي:


رمز Code:
<td><select name="n_names"><option value ="a"> 10 اسماء<option value ="b"> 20 اسم<option value ="c"> 30 اسم</select></td>
باستخدام جملة if يكون الشرط كالتالي:

رمز Code:
<?phpif ($n_names == "a" )echo "عدد الاسماء التي سوف تقوم بإدخالها هو 10 اسماء";elseif ($n_names == "b" )echo "عدد الاسماء التي سوف تقوم بإدخالها هو 20 اسم";elseif ($n_names == "c" )echo "عدد الاسماء التي سوف تقوم بإدخالها هو 30 اسم";?>
أما باستخدام جملة switch تكون كالتالي:

رمز Code:


<?phpswitch($n_names){case "a":echo "عدد الاسماء التي سوف تقوم بإدخالها هو 10 اسماء";break;case "b":echo "عدد الاسماء التي سوف تقوم بإدخالها هو 20 اسم";break;case "c":echo "عدد الاسماء التي سوف تقوم بإدخالها هو 30 اسم";break;}?>




لابد أنك لاحظت عدم وجود إختلاف كبير بين الجمل else و elseif و switch ولكن كل مبرمج يختار الجملة التي يجدها أكثر ملاءمة

Bakenam
04-03-2009, 10:25 PM
تعليم بي اتش بي PHP


1- دروس PHP للمبتدئين ..


لغة البرمجة PHP هي لغة جديدة مخصصة لعمل البرامج القائمة على الويب جهة المزود، وتتميز بسهولتها المتناهية وقدراتها العالية.



* ما هي لغة الـ PHP ؟

هي لغة برمجة تستخدم لتطوير مواقع الويب تم اختراعها و إنشاؤها وتطويرها في عام 1994 بواسطة راسموس ليدروف.
لقد كان هذا الرجل يتابع عدد من المهتمين بسكربتاته التي ينتجها بلغة بيرل وعندما رأى أن هناك عدداً كبيرا يهتم بسكربتاته بدأ بإنشاء أدوات للصفحات الشخصية ذات مستوى عالٍ قام بتسميتها بـ
Personal Home Page tools (PHP)
بعدها قام بإنشاء ******ing engine و form interpreter وهو ماكان يسمى في ذلك الوقت بـ php/FI أو php2 .

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

في المصطلح التقني لهذه اللغة نقول أنها:
Cross Platforms, Embded HTML, Server Side, *** ******ing Language

Cross Platforms:
نعني بهذا المصطلح أن لغة ال PHP تعمل على كمبيوترات تحتوي على أكثر من نظام تشغيل.. مثلاً يمكننا تشغيلها على اللينوكس ويمكننا أيضاً تشغيلها على الوندوز بشكل ممتاز.

Embded HTML:
تعمل هذه اللغة في ملفات تحتوي على خليط من لغة html و php .

Server Side:
تعمل ملفات ال php على مزود للويب يدعم php فلا يضطر المستخدم إلى تركيب برنامج معين على جهازه لكي يتفاعل مع هذه اللغة.

*** ******ing Language:
نعني بهذا المصطلح أن هذه اللغة لعمل صفحات الويب أو بالأصح لتطوير وعمل تطبيقات (برامج) للويب.

في الواقع عندما نتصفح برنامج php عبر مستعرض للإنترنت مثل الانترنت اكسبلور أو النافيجتور فإنه لا يشترط أن يكون هذين المتصفحين أو أي متصفح آخر يدعمون PHP.
( وهذا يجعلنا نطمئن من أننا لن نخوض الحرب التي يخوضها المتصفحين فهناك أشياء في النافيجتور لا يدعمها الانترنت اكسبلور لأن الجافا مثلاً لغة من صنع شركة صن ولغة الفيجول بيسك سكربت من صنع شركة مايكروسوفت مما يعني أن النافيجتور لا يدعم الفجول بيسيك سكربت وهذا شيء مقلق جداً ).

باختصار إننا لا نطالب المستخدم ببرنامج معين لكي يرى صفحة الويب التي صنعناها.
عندما يطلب المستخدم صفحة ما مثلاً: http://www.arabbuilder.com/index.php (http://www.arabbuilder.com/index.php) فهذا يعني أنه يطلب صفحة تحتوي على برنامج php (وليس شرطاً).

- هل سيرى المتصفح الشفرة التي استخدمها؟
لا تخف لن يستطيع لأن البرنامج المعمول بـ php يترجم في السيرفر على شكل html فلن يصل لمستخدم برنامجك الشفرة التي تستخدمها مما يحافظ على سريه برامجك http://www.traidnt.net/vb/images/smilies/cupidarrow.gif .

من المفترض قبل أن تبدأ في التطوير بلغة php أن يكون لديك خلفية كافية عن html وهناك دورة ممتازة ومتقدمة عن html تجدها على الرابط التالي/
http://www.arabbuilder.com/learn/lessons/html/index.php (http://www.arabbuilder.com/learn/lessons/html/index.php)

وأيضا هناك موقع HP الذي يعتبر الموقع الأول الذي أعطى تفاصيل التطوير بهذه اللغة وفيه الكثير من الدروس المفيدة جداً في هذا المجال.. تجده على الرابط التالي/
http://www.khayma.com/hpinarabic/htmintro.html (http://www.khayma.com/hpinarabic/htmintro.html)



* لماذا PHP ؟

1. التفاعل مع صفحات الويب:

يأتي إليك مدير مكتبك ويقول لك ماذا تستفيد شركتي من كونك مبرمج php؟ هاه؟
سؤال صعب أليس كذلك ؟
انظر إليه بكل برود، وثق أنك ستنتصر عليه بردّ صاعق.

في الواقع قد تكون html قد نفعتنا كثيراً حينما أردنا تصميم مواقع الويب ولكنها لاتكفي إلاّ إذا كان موقعك استقرارياً، أي أنك لا تجدد فيه إلاّ في الشهرين مرة أو في الثلاثة شهور مرة وتتعب جراء ذلك.
ولكن عندما تريد أن يتجدد موقعك يومياً.. مثلاً: يعطيك الأخبار يومياً ويوفر محركات بحث تساعد المستخدم من الحصول على شيء معين في موقعك دون تعب أو قائمه بريدية أو تريد أن تعرف ما رأي الزوار في موقعك يومياً أو تريد صناعة متجر الكتروني أو صفحة إعلانات تتجدد ديناميكياً. ستجد فعلاً أنك تحتاج إلى لغة PHP.
واجعل مديرك يقوم بتقطيع البصل إذا كان يريد فعلها بال html. أليس ذلك انتصاراً رائعا http://www.traidnt.net/vb/images/smilies/cupidarrow.gif .

2. المجانية:

لغة php مجانية أي أنك لا تحمل همّاً.. لا تراخيص ولا محكمات دعائية وتمضي قدماً دون توقف وليست مثل Asp.

بالإضافة إلى أنه يمكنك رؤية الشفرة المصدرية التي تجعل هذه اللغة تزيد تطوراً يوماً بعد يوم http://www.traidnt.net/vb/images/smilies/cupidarrow.gif .

3. وجود مواقع سيرفرات تدعمها بكثرة:

خبر سارّ أليس كذلك ؟ ;)
يوجد الكثير من المواقع التي تدعم php والتي منها المجاني ومنها الذي يأخذ منك قدراً معيّناً على الاستضافة. يمكنك أن تجد دعماً مجانياً لل php في هذه المواقع/
http://d1d.net (http://d1d.net/) http://www.f2s.com (http://www.f2s.com/) http://datablocks.net (http://datablocks.net/) http://www.psend.com (http://www.psend.com/)

4. التفاعل مع قواعد البيانات:

بينما جعلت شركة مايكروسوفت Asp متوافقاً مع برمجياتها بشكل احتكاري، فإن ال php تدعم أغلب أنواع قواعد البيانات، ولم تحتكر على نوع معين وإليك هذه الانواع/
-Adabas -d**** -Empress -FilePro -Informix -Inter**** -mSQL -MySQL -Oracle -PostgreSQL -Solid Sy**** -Velocis -some UNIX distributions' dbm -any data**** that supports ODBC (Open Data **** Connectivity).



* PHP vs. ASP :

بينما تستخدم ال ASP لغة الفيجول بيسيك في عمل سكربتات متفاعلة مع الويب فإنها تحتاج في تشغيلها إلى سيرفر Iis أو PWs وحتى الآن يعد تشغيلها على سيرفر الأباتشي أمراً فيه صعوبة.
ومع أن هناك شركة أنتجت برنامجاً معيناً وخاصاً لكي يعمل Apche ويدعم Asp فإنه إلى الآن يستلزم أن يكون لديك وندوز NT ولا يمكنك تشغيله بشكل ممتاز على وندوز ملينيوم.

بالإضافة أن ال Asp تعتبر أبطأ من ال PHP، وغير ذلك أن ال php ليست مقتصرة على IIS بل تشتغل على Apache و Omni httpd بأفضل ما يمكن.

وعلى العموم لاتقلق فإنك حتى إن كنت مبرمج ASP وترتاح معها كثيراً.. فإنك تستطيع تحويل شفرة Asp إلى php عن طريق برنامج يقوم بذلك تجده على الرابط التالي/
http://asp2php.naken.cc/ (http://asp2php.naken.cc/)



* PHP vs. Perl :

تعتبر البيرل معقدة وصعبة في حين أن ال php يقوم بعمل نفس الوظيفة التي تقوم بها برامج البيرل بشفرة أقل وبساطة أكثر.


2- دروس PHP للمبتدئين..


[ مفاهيم عامة ]

* بروتوكولات الإنترنت :

لا نريد هنا أن نذهب إلى التكلم عن تاريخ الإنترنت العتيق.. النقطة المهمة هي الشبكة المربوطة بنقاط nodes الانترنت صممت لكي تقوم بالحفاظ على المعلومات لكي يتم نقلها من مكان إلى آخر، وهي تستخدم مجموعة من البروتوكولات مثل Tcp/Ip لكي يتم نقل البيانات عبر الشبكة.
من مميزات هذا البروتوكول أنه باستطاعته إعادة تمهيد طريقه للبيانات إذا تم خلل في نقطة أو مكان أثناء نقلها، ويتم ذلك بسرعة شديدة.

عندما يطلب المستخدم من المستعرض أن يجلب له صفحة من الانترنت، فإن المستعرض يجلب هذه الأوامر باستخدام بروتوكول يدعى بروتوكول التحكم في نقل البيانات TCP. هذا البروتوكول هو بروتوكول نقل للبيانات وهو يضمن أن البيانات قد تم إرسالها ووصولها بشكل صحيح.

قبل أن يتم إرسال البيانات عبر الشبكة يجب عنونتها، والبروتوكول الذي يقوم بعنونه البيانات يدعى HTTP.
يقوم هذا البروتوكول بوضع عنونه للبيانات لكي يعرف البروتوكول TCP أين سينقل البيانات (فهو لايستطيع نقل البيانات إذا لم يكن لها هدف أو مكان).
يستخدم البروتوكول HTTP عن طريق الويب في عملية نقل البيانات من كمبيوتر إلى آخر.
عندما ترى الصفحة متبوعة بـ http:// فإنك تعلم مباشرة أن الانترنت يستخدم البرتوكول HTTP لإحضار هذه الصفحة، يمكنك أن تأخذ صورة بأن الTCP عبارة عن ساعي بريد الذي يقوم بإيصال رسالة.. هذه الرسالة فيها طابع بريد وعنوان وهو مانسميه بال HTTP.

يتم تمرير الطلب من المستعرض إلى ملقم أو سيرفر الويب وهو ما يعرف بـ HTTP request. ويقوم السيرفر برؤية مستودع البيانات لديه لكي يحصل على البيانات المطلوبة..
فإذا وجد الصفحة في المستودع قام بإرسالها على شكل حزم إلى الجهة التي قامت بالطلب باستخدام بروتوكول TCP وتُعنون هذه الحزم لمستعرض الانترنت لديك باستخدام بروتوكول http (ننبه دائماً إلى أنه يرسلها على شكل حزم لكي تعرف السبب عند عدم ظهور صفحة ويب كاملة أن هناك حزمة لم ترسل بشكل جيد)، ولكن إذا لم يجد السيرفر الصفحة المطلوبة فإنه يقوم بإرسال صفحة تحتوي على رسالة الخطأ 404، وهذه الصفحة التي أرسلت من ملقم الويب إلى المستعرض لديك تسمى HTTP response .

وهذه رسمة توضيحية لكي يتبين ما كنّا نرمي إليه أو نسعى إليه:



* بروتوكول ال HTTP :

رغم ما أخذناه من معلومات كثيرة وقصص كثيرة إلاّ أنه رغم ذلك يفوتنا الكثير من التفاصيل في هذا الموضوع، لذلك دعنا نغوص قليلاً في التفاصيل عن بروتوكول HTTP بشكل خاص.

عندما تقوم بعملية طلب لصفحة من السيرفر هناك أمور إضافيه ترسل مع عملية الطلب http request غير ال URL وهي ترسل كجزء من http request.
نفس الموضوع مع ال http response هناك أمور أخرى تصل معه كجزء منه.

الكثير من هذه المعلومات تولد تلقائياً في رسالة ال HTTP ولا يقوم المستخدم بالتعامل معها مباشرة.. إذن لا يحتاج أن تقلق نفسك بشأن هذه المعلومات إذا أنت لم تنشاها في الأصل ويجب أن تأخذ أيضاً في معلوماتك أن هذه المعلومات ترسل كجزء من ال HTTP request وال HTTP response لأن سكربت ال PHP الذي نصنعه يمنحنا تحكماً إضافياً بهذه المعلومات.

كل رسائل الHTTP تأخذ تنسيقاً معيناً سواء كانت Request أو Response. نستطيع أن نقوم بتقسيم هذا التنسيق إلى ثلاث أقسام:
1. Request/Response Line .
2. HTTP Header .
3. HTTP Body .

المحتوى من هذه الأشياء الثلاثة يعتمد على نوع الرسالة إذا كانت HTTP Request أو HTTP Response، لذلك سنتكلم عنهم بتعمق أكثر.

لنتوقف لحظات وننظر في الشكل التالي لكي يتوضح إلينا مفهوم المعاجلة التي تتم:



HTTP Request:

يجب أن يحتوي ال request على الأقل ال request line (سطر الطلب) وال HOST .

يرسل مستعرض الانترنت طلبيه (HTTP request) إلى ملقم الويب تحتوي على التالي:


1/ The Request Line:

السطر الأول من كل طلبيه (http request) هي Request Line الذي يحتوي على ثلاث أنواع من المعلومات:

أمر HTTP وهو مايسمى بـ method .

المسار من السيرفر إلى المصادر المطلوبة (صفحات الانترنت) المطلوبة من قبل العميل (المستعرض) .

إصدارة ال HTTP .

إذن كمثال على ال Request Line انظر إلى السطر التالي: (ال method يخبر السيرفر كيف يتعامل مع الطلب)

GET /testpage.htm HTTP/1.1

هناك ثلاث أنواع شائعة من ال method والتي تظهر في التالي:


GET
عبارة عن طلب لمعلومات تستقر في نفس صفحة الانترنت، وهذا الmethod الذي يستخدم. وهو المستخدم بكثرة في صفحات الانترنت ويعتبر الرئيسي فيهم. المعلومات التي تطلب بواسطة هذا الأمر قد تكون معلومات قد تكون أي شيء من: صفحة الhtml أو php إلى: مخرج من سكربت (برنامج) بيرل أو جافا أو ملفات تنفيذيه أخرى. يمكنك إرسال بعض المعلومات المحددة إلى مستعرض الانترنت لديك عبر نموذج (Form) في الصفحة.

HEAD
مثل الGET.. باستثناء أنه يقوم بعملية طلب للـheader فقط من غير بيانات (data).

POST
هذا الأمر يقوم بإرسال البيانات إلى السيرفر كجزء من HTTP body. هذه البيانات تعالج بواسطة برنامج مخصص لمعالجتها (perl or php) على السيرفر.

هناك أوامر عديدة أخرى مثل: ( PUT - DELETE - TRACE - CONNECT - OPTION )..
ولكنها تستخدم بقلة، ويمكنك أن تجد شرحاً موفياً لها باللغة الانجليزية على الرابط التالي: http://www.rfc.net (http://www.rfc.net/) .


2/ HTTP Header:

البت الثاني من المعلومات هو الهيدر HTTP Header.. الذي يحتوي على تفاصيل أو وثائق عن العميل مثل نوع المتصفح (نتسكيب أو اكسبلورر) الذي قام بطلب الصفحة والوقت والتاريخ والإعدادات العامة.

الHTTP Header يحتوي على معلومات نستطيع تقسيمها إلى ثلاث فئات وهي:

عامة General / تحتوي على معلومات إما عن العميل أو السيرفر ولا تخصص إلى فرد أو مجموعة .

شخصية Entity / تحتوي على معلومات عن البيانات التي أرسلت بين المتصفح والسيرفر .

مطلوبة Request / تحتوي على بيانات عن إعدادات العميل والأنواع المختلفة المقبولة من البيانات .

وهذا مثال:

Accept: * / *

Accept language: Arabic-KSA.
Connection: Keep -Alive.
Host : www.arabbuielder.com (http://www.arabbuielder.com/)
Referer: http://www.arabbuielder.com/index.php?something=132 (http://www.arabbuielder.com/index.php?something=132)
User -Agent :Iexploer (win98;.........)

مثلما ترى ال HTTP Header عبارة عن أعداد يتكون من عدة سطور، كل سطر يحتوي على قيم معينة.

هناك عدة سطور تشكل ال HTTP header وأكثرها اختياري. يقوم الHTTP بالإخبار عن انتهاء معلومات ال header بترك سطر فارغ (وهذا يكون في الHTTP1.1).


3/ The HTTP Body:

إذا تم استخدام الأمر POST في ال HTTP Request Line.. عندها يقوم ال HTTP بطلب المعلومات التي أرسلت في ال body إلى السيرفر.


HTTP Response:

يرسل من السيرفر إلى المستعرض، ويحتوي على ثلاث أشياء:

The Response Line .

HTTP Header .

HTTP Body .

1/ The Response Line:

ال Response line يحتوي فقط على نوعين من المعلومات:
1- رقم إصدارة ال HTTP .
2- شفرة أو كود ال http request التي تقوم بتحديد ما إذا كان ال request ناجحاً أم فاشل .

مثال:
HTTP/1.1 200 OK

في هذا المثال يقوم ال response line بإرجاع القيمة 200 متبوعة بالكلمة OK. هذه تشكل وتشير إلى نجاح ال request ويكون ال response يحتوي على الصفحة المطلوبة والبيانات من السيرفر.

ومثال آخر هو الشفرة 404.. وتظهر عندما تقوم بطلب صفحة ويفشل السيرفر في الحصول عليها.

هناك خمس فئات من الشفرات:

100 - 199
يتم إعطاء هذا الكود إذا كان الطلب (request) يتم معالجته حالياً.


200 - 299
يتم إعطاء هذا الكود إذا تم استقبال الطلب بنجاح.

300 - 399
يتم إعطاء هذا الكود إذا كانت البيانات قد تم تحويلها أو تحريكها من موضعها.

400 - 499
يتم إعطاء هذا الكود إذا الطلب فيه خطأ من قبل العميل (المستعرض).. غير كامل أو غير صحيح أو غير ممكن.

500 - 599
يتم إعطاء هذا الكود إذا كان الخطأ من قبل السيرفر. أي إذا كان الطلب صحيحاً وموجوداً لكن السيرفر فشل في معالجته وإخراجه.


2/ HTTP Header:

ال Response header يعتبر مشابه لـ Request header الذي ناقشناه في الأعلى. وتنقسم المعلومات التي فيه أيضاً إلى ثلاث أنواع:

عامة General / معلومات عن ال client أو السيرفر ولا تخصص إلى واحد منهما.

شخصية Entity / يحتوي على معلومات عن البيانات التي يتم إرسالها بين السيرفر والعميل .

الإجابة Response / يحتوي معلومات عن السيرفر الذي قام بإرسال الرد وكيفيه تعامله ومعاجلته للرد (Response) .

كما قلنا سابقاً.. يتكون من عدة سطور ويتم وضع سطر فارغ للإعلام عن انتهاء الهيدر (Header):

HTTP/1.1 200 OK -The satus line
Date: Mon; 1st Nov 1999, 16:12:23 GMT -General header
Server : Apache/1.3.12 (Unix) (SUSE/Linux) PHP/4.0.2 -The response
Last-modified: Fri, 29 Oct 1999, 12:08:03 GMT -Entity Header

السطر الأول ناقشناه، والسطر الثاني مفهوم من غير شرح، السطر الثالث يقوم بتحديد البرنامج تبع السيرفر ونوعه ونظام التشغيل القائم عليه، والسطر الأخير يقوم بتعريف آخر وقت تمّ فيه تعديل أو تجديد الصفحة.

* ملاحظة/ قد يحتوي الهيدر (Header) على أكثر من هذه المعلومات أو معلومات مختلفة وهذا يعتمد على نوع الشيء المطلوب من السيرفر.
إذا أردت معرفة معلومات أكثر عن هذه الأقسام.. تستطيع مراجعة المقالة رقم 2068 في الموقع التالي: http://www.rfc.net (http://www.rfc.net/) .


3/ The HTTP Body:

إذا تمت معالجة الطلب بنجاح.. فإن ال HTTP Response Body يحتوي على شفرة الHTML ويقوم مستعرض الانترنت بتفسيرها وتحويلها إلى الصفحة النهائية التي تراها.


أين سكربت الPHP من ذلك كله ؟

أصبح الآن لدينا مفهومية جيدة عن طريقة إرسال المستعرض طلب صفحة من السيرفر وكيفية استجابة السيرفر لهذا الطلب. دعنا نلخص ما تمّ رؤيته وشرحه في النقاط السابقة في صورة ثالثة ملخصّة:



تكلمنا عن أن سكربت ال php يتكون من ثلاث أشياء: نص وشفرة php وشفرة html.
لا نستطيع وصف ال html بأنها لغة برمجة بشكل جيد، ونستطيع أن نقول أن ال php لغة سكربتات ******ing Language.. لأنها تضيف قدرات html عليها مثل الجداول والفريمات بشفرة html بداخل شفرة ال php.

هناك لغات تسمى لغات سكربتات قد تكون متآلفاً معها مثل الجافا سكربت والفجول بيسك سكربت، باستثناء أن الفرق بينها وبين الphp هو أن الphp لغة تعتمد على جهة المزود أي السيرفر ويمكنك تخصيص المتصفح الذي يستعرضها.

تجعلنا الhtml نضمن سكربتات الphp فيها ضمن قواعد لذلك لكي نستطيع تشغيلها، ولكننا لا ننسى أن امتداد الملفات يظلّ كما هو php أو php3 بدون تغير فيه. لكي يتم إرسال السكربت إلى مكينة الترجمة (******ing Engine) التي تقوم بترجمة السكربت إلى html (كأنك تترجم من عربي إلى انجليزي أو العكس).



* مفهوم الـ Parsing والـ Execution :

يمكن أن نقسم عملية الترجمة التي يقوم بها سيرفر php إلى قسمين أو عمليتين:

العملية الأولى / هي أن السيرفر يقوم أولاً بفحص قواعد اللغة، وهذا لا يضمن أن السكربت صحيح مئة بالمائة ولكنه تدقيق في الأوامر وقواعد اللغة وهذا ما يسمونه بال Parsing.

العملية الثانية/ هي تنفيذ السكربت بعدها وإخراجه على شكل شفرة html، وهذا ما يسمى بال Execution .



بقي أن نقول أمراً معروفاً وهو أن السكربتات نوعين:

النوع الأول / وهو ما ينفذ من جهة المزود Server-Side ******ing .
النوع الثاني/ ما ينفذ من جهة المستعرض (صفحة انترنت). مثل: الجافا سكربت وغير ذلك.


3- دروس PHP للمبتدئين..


[ تشغيل ال PHP.. والسكربت الأول ]



درس اليوم يتكلم عن تجهيز جهازك ليعمل كمخدم لل php أو سيرفر يدعم php.. لكي تستطيع رؤية سكربتاتك وتنفيذها.
أيضاً ستقوم بصناعة السكربت الأول لك في لغة الـ PHP.

حسناً سنحتاج إلى:

أولاً / ملقم ويب (*** Server) .
ثانياً/ نحتاج إلى برنامج يقوم بتحويل جهازك إلى ملقم ويب.

وهناك عدة برامج لذلك الغرض منها: Apache *** server - Omni Httpd - Pws - IIS .

أيضاً هناك برنامج PHP Triad أكثر من ممتاز.. وسنقوم بشرحه.







* شرح برنامج PHPTriad :

تجدونه على الرابط التالي:
http://download.sourceforge.net/phpt...adsetup1-2.zip (http://download.sourceforge.net/phptriad/phptriadsetup1-2.zip)

ستأتي لك الشاشة التالية اضغط زر Next حتى تكمل عملية تنصيب البرنامج على الجهاز.



بعد نهاية التحميل.. قم بتشغيل الأباتشي من ( ابدأ ثم البرامج ثم PHPTriad for Windows ).



Start Apache:
لتشغيل سيرفر الأباتشي وستظهر لك شاشة دوس.

Start Mysql :
لتشغيل سيرفر ال mysql ويجب تشغيله إذا كان برنامج php يتطلب تشغيله.

الآن اكتب في المتصفح: http://localhost/phpinfo.php (http://localhost/phpinfo.php)



بقي عليك أن تعرف أن المجلد الذي يجب أن تضع فيه ال php هو: C:apachehtdocs
ويمكنك تغيير هذا الملف بواسطة تعديل الملف httpd.conf .

ولتفاصيل أكثر حيال هذا الموضوع يمكنك مراجعة موقع المطور العربي:
http://www.arabbuilder.com/learn/lessons/server2/ (http://www.arabbuilder.com/learn/lessons/server2/)

وأيضاً يمكنك مراجعة مجلة سوالف حيال طريقة أخرى:
http://www.swalif.net/softs/article.php?sid=179 (http://www.swalif.net/softs/article.php?sid=179)
http://www.swalif.net/softs/sections...rticle&artid=8 (http://www.swalif.net/softs/sections.php?op=viewarticle&artid=8)

الفائدة من تركيب البرنامج هي أن نستطيع تشغيل السكربتات التي نصنعها بالإضافة إلى مميزات كثيرة تجدها موجودة في موقع المطور العربي وسوالف بالتفصيل.



* صناعة السكربت الأول لك :

- ما هو المطلوب منك لصناعة السكربتات؟

كل ما هو مطلوب منك محرر نصوص بسيط مثل ال Notepad. أو محرر نصوص مخصص للعمل مع php.

وهناك الكثير منها ولكن الأفضل حتى الآن هو: PHP Corder .. وهو مجاني تماماً يمكنك تحميله من هنا:
http://www.php-ide.com/phpcoder/pr3setup.exe (http://www.php-ide.com/phpcoder/pr3setup.exe)

عند تشغيلك لهذا البرنامج ستأتيك الشاشة التالية:



تنفس الصعداء فلست أتمنى منك أن تفهم كل ما ترى http://www.traidnt.net/vb/images/smilies/cupidarrow.gif. ستجد الشفرة التالية مكتوبة وجاهزة:

<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
<title>Title here!</title>
</head>
<body>

</body>
</html>

قم بمسح الشفرة عن بكرة أبيها http://www.traidnt.net/vb/images/smilies/cupidarrow.gif. والآن عليك أن تعرف كيف تكتب الشفرة.

في الواقع شفرة php تبدأ بوسوم ولكن هذه الوسوم تختلف عن وسوم html، ويمكنك تطبيق أي من الوسوم التي تريدها.

والوسوم هي كالتالي:

<? ... ?>

<?php ... ?>

<****** language="php"> ... </******>

<% ... %>

الأخيرة تستخدم في سكربتات asp أيضاً. وفي الواقع يمكنك جعل البرنامج الذي نستخدمه يساعدك في كتابة الوسوم.



طريقة كتابة الأوامر:

لقد عرفت بأي وسم تبدأ الشفرة، وعليك الآن أن تعرف الصيغة العامة لأكثر الأوامر وهي:

أمر ( عوامل أو وسائط ) ; مثال:

Echo ("بسم الله الرحمن الرحيم") ;

أمر ثم أقواس -ولا يشترط تحتوي على وسائط أو قد لا تحتوي أحياناً- ثم فاصلة منقوطة (وضع تحت كلمة فاصلة منقوطة ; ألف خط لأهميتها).

- كتابة السكربت وتنفيذه:

الآن سنبدأ بكتابة السكربت.. ولنأخذ مثلاً الأمر phpinfo، ولنقم بتطبيقه.
إذن قم بكتابة الأسطر التالية:

<?
phpinfo ();
?>

* ملاحظة: لا تعتقد أنه عند كتابتك لهذه الشفرة يجب أن تكون بنفس الألوان (مشكلة الديكورات التعليمية عقدت الكثيرين) إنما هو من باب التوضيح فقط.

الآن لكي تقوم بتجربة سكربتك.. يجب أن تحفظه باسم. مثلاً: Test.php

وذلك باختيار الأمر Save as من قائمة ملف.



وقم بحفظه في المسار: C: apache htdocs



الآن قم بتشغيل السيرفر لديك، وقم بفتح مستعرض الإنترنت واكتب: http://localhost/test.php (http://localhost/test.php)
ستظهر لديك الشاشة التالية:



إذا ظهرت لديك فألف ألف مبارك عليك.. لقد قمت بعمل برنامج PHP.

ودعنا نرجع إلى الوراء ونقول هل المستخدم الآن يرى شفرتك التي استخدمتها ؟
لو قمت برؤية الشفرة المصدرية للصفحة ستجدها هكذا:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
<head><STYLE TYPE="****/css"><!--
A { ****-decoration: none; }
A:hover { ****-decoration: underline; }
H1 { font-family: arial,helvetica,sans-serif; font-size: 18pt; font-weight: bold;}
H2 { font-family: arial,helvetica,sans-serif; font-size: 14pt; font-weight: bold;}
BODY,TD { font-family: arial,helvetica,sans-serif; font-size: 10pt; }
TH { font-family: arial,helvetica,sans-serif; font-size: 11pt; font-weight: bold; }
//--></STYLE>

[ عندما يفتح مديرك في العمل الشفرة سيكون في رأسه التفكير في أن يزيد راتبك لأنك قد تعبت على شيء أنت لم تتعب عليه في الواقع :-) ].

وهناك طريقة أخرى تجعلك ترى النتيجة في نفس المحرر ولكنها لا تظهر الصور وتحتاج إلى إعداد.. قم بعمل ما يلي:

اختر من قائمة View الأمر Prefrences and Settings ..



الآن قم بكتابة مسار الملف التنفيذي للـ php في المربع الأول:



وقم بكتابة مسار ملف معين في الفراغ الثاني. ثم قم بضغط زر OK وسيقوم بتنفيذ الملف.

في المرات التالية.. سيكون عليك فقط ضغط ( F5 ) أو اعمل كما ترى في الصورة:



وستظهر لك النتيجة في المحرر.

عودة الى الصفحة الرئيسية لـ تعليم بي اتش بي PHP


وستظهر لك النتيجة في المحرر.

Bakenam
04-03-2009, 10:28 PM
اخواني
كيف الحال ان شاء الله تمام انا راح اكمل الموسوعة وهذي المتقدمة هي الموسوعة المتقدمة

فقبل ما تقراها لازم تقرى موسوعة المبتدئين وهي على الرابط التالى : -

http://www.traidnt.net/vb/showthread.php?t=125306 (http://www.traidnt.net/vb/showthread.php?t=125306)

اما الحين راح احط موسوعة المتقدمه

::::دروس متقدمة::::

المهام المجدولة باستخدام Cron ... : -


مقدمة
صبيحة كل يوم اتلقى في بريدي على العمل رسالة اليكترونية تحمل لي اخبار اليوم المهمة من موقع الجزيرة. لم اشترك في اي خدمة او موقع بل ان هذه الرسالة اتت من موقعي الخاص... كيف؟ ملف بي اتش بي لا يتعدى الثلاثين سطرا يقوم من النوم في السادسة تماما و يقرأ الاخبار من موقع الجزيرة ثم يرسل العنوانين بالروابط الى بريدي الخاص ....
في هذا المقال سوف نرى كيف يمكنك ان تنفذ ملفات PHP في اوقات معينة دون ان تطلب من المتصفح باستخدام ميزة لأنظمة تشغيل المزودات تدعى Cron Jobs و التي سنترجمها الى "المهام المجدولة"

في هذا الدرس سنرى النقاط التالية:

- التنفيذ التلقائي للملفات على مزودات لينكس
- كيف تصنع مهمة مجدولة على لينكس؟
- موقعي لا يدعم المهام المجدولة... هل هنالك حل؟
- تطبيق: اخبار موقع الجزيرة على بريدك كل صباح ...


التنفيذ التلقائي للملفات على مزودات لينكس

سؤال : ماهي الطرق التي يمكن ان تتنفذ بها صفحة بي اتش بي على الانترنت ؟

- ان يطلبها المستخدم مباشرة عبر كتابة الرابط الى الصفحة في متصفح ما ...
- ان يطلب المستخدم صفحة بي اتش بي تحتوي على تضمين include لتلك الصفحة...
- ان يطلب المستخدم صفحة ما تقرأ تلك الصفحة عبر البرمجة : فمثلا يمكنك قراءة صفحة بي اتش بي من خلال صفحة اخرى باستخدام fread كما هو دارج في جوالب الاخبار ..كما في (الكود من الدليل):
Code ..


<?php
$handle = fopen("http://www.example.com/MyPage.php", "rb");
$contents = "";
do {
$data = fread($handle, 8192);
if (strlen($data) == 0) {
break;
}
$contents .= $data;
} while (true);
fclose($handle);
?>






الملاحظ ان كل هذه الطرق تبدا في مرحلة ما من طلب المستخدم عبر متصفحه للصفحة مباشرة او لصفحة اخرى مرتبطة بها ...

لو حذفنا المستخدم من المعادلة فان هنالك طرفا واحد يمكنه الوصول الى الصفحة ! و فوق ذلك لده القدرة على متابعة الزمن .... انه نظام التشغيل المنصب على المزود ... فهو الوحيد القادر على الوصول الى تلك الصفحة ...
هنالك خاصية في نظام التشغيل ويندوز تتيح لك تشغيل البرامج تلقائيا و بصفة متكررة دون الحاجة الى ان تشغل انت ذلك البرنامج ... فلو اردت عمل فحص للفيروسات او الغاء تجزئة القرص الصلب كل ليلة او ليلة كل جمعة حيث لا تكون في مكتب العمل و لا تضطر الى ايقاف عملك فان ما عليك هو اضافة هذه المهمة الى برنامج "المهام المجدولة" ....
اين توجد خاصية المهام المجدولة على الويندوز ؟
اذهب الى "ابدأ" ثم "تشغيل" و اكتب tasks ... ستظهر لك نافذة البرنامج المسؤول عن جدولة و تنفيذ المهام في ويندوز ... بامكانك اضافة مهمة مثل تشغيل برنامج معين او عمل فحص فيروسات و تحديد متى تريد ان يتم و كيف يتكرر عمل ذلك ... جرب اضافة مهمة و تعرف على خصائص البرنامج...

نظام التشغيل لينكس ,الذي يعد الخيار الافضل و الأكثر شهرة بين المواقع التي تعتمد على بي اتش بي, يحتوي على ميزة تدعى cron jobs او المهام المجدولة كما عربناها... و التي تعمل تماما مثل المهام المجدولة على الويندوز فهذه الميزة تتيح للمستخدم ان يطلب من النظام تنفيذ امر command معين في وقت معين بصفة دورية .... يعمل البرنامج cron باستمرار على نظام التشغيل و ينفذ المهام متى ما حان وقتها ...

ملاحظة : اعتمادا على سياسات مقدم المساحة لموقعك فقد لا يكون لك الصلاحية بارسال المهام الى cron لتنفيذها .. قد تكون الميزة معطلة بشكل دائم و غير متوفرة مطلقا في عرض الاستضافة او يلزمك مخاطبة الدعم الفني و طلب اعداد تلك المهمة منهم ... لكن بعض المواقع تسمح لك باعداد المهام المجدولة من لوحة التحكم مثل Cpanel ... الطريق الوحيدة لتتأكد هي ان تخاطب الدعم الفني

كيف سيمكننا ان ننفذ الكود باستخدام المهام المجدولة على لينكس ؟
الجواب يعتمد على كيفية اعداد بي اتش بي على المزود ... ! انظر الى الشكل التالي :



تركب بي اتش بي على مزود الويب اباشي على شكلين :
الاول : بي اتش بي برنامج قائم بذاته
الثاني: بي اتش بي مدمجة في اباشي

الاول: ان تركب بي اتش بي مستقلة عن مزود الويب كبرنامج قائم بذاته لا يعتمد على غيره... و تضبط اعدادات مزود الويب "اباشي مثلا" بحيث يرسل كل الصفحات التي تنتهي بالامتداد php او phtml الى هذا البرنامج لكي ينفذها و يرجع النتيجة الى المستخدم ...
في هذه الحالة الامر سهل فكل ما علينا هو ان نطلب من مدير المهام المجدولة ان ينفذ الملف التنفيذي ,عادة php.exe, و يرسل له الصفحة ... تماما كما لو كنت كتبت الامر على المحث command prombt (في نافذة الدوس على الويندوز مثلا) كالتالي :
Code ..


php c:\files\index.php





طبعا مسار الملف سيكون مختلفا على اللينكس... لكن هذا يكفي ليقرب المعلومة ...

الثاني : ان تركب بي اتش بي مدمجة في اباشي .. اي ان يكون كود بي اتش بي قد اضيف الى كود اباشي قبل عمل الملف التنفيذي لاباشي ... وبهذا تعمل بي اتش بي على المزود بمجرد تشغيل اباشي و تكون دوال بي اتش بي مجرد دوال في اباشي فمثلا الدالة mysql_connect عندما يراها مترجم بي اتش بي في الكود يقوم بمناداة الدالة php_mysql_connect ...
و هنا مشكلة لان بي اتش بي الان لا يمكن الوصول لها الا عن طريق مزود الويب و مزود الويب لا يستمع الى الاوامر الا عن طريق منفذ معين على الجهاز و لا يمكننا ارسال الاوامر الى اباشي الا عن طريق ذلك المنفذ... اي ان الصفحة يجب ان تطلب من خلال بروتوكول HTTP .. بمعنى اخر : يجب ان تطلب الصفحة من خلال متصفح للانترنت ... فما العمل ؟

اذهب الى ابدأ ثم اختر تشغيل و اكتب الامر التالي :
Code ..


explorer http://www.islamway.net (http://www.islamway.net/)





ستجد ان متصفح الانترنت قد فتح نافذة جديدة و ذهب الى موقع اذاعة طريق الاسلام ... اذا لو وضعت هذا الامر "explorer

http://www.islamway.net/index.php" كمهمة متكررة في مدير المهام المجدولة فانك ستنفذ الصفحة index.php بشكل مستمر ... !

لتنفيذ نفس الفكرة على لينكس بامكانك استخدام متصفحات اخرى مثل lynx بالشكل التالي :
Code ..


lynx http://www.islamway.net/index.php (http://www.islamway.net/index.php)






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

كيف تعرف اي نسخة لديك؟
اطبع معلومات بي اتش بي باستخدام phpinfo ... في السطر الثالث تقريبا قيمة الخاصية Server API تحدد ذلك : اذا كانت apache فنسختك مدمجة اما اذا كانت CGI فنسختك مستقلة عن مزود الويب ...

دعنا نرى في القسم التالي كيف يمكننا ان نجعل لينكس ينفذ هذه الاوامر بشكل مستمر ...


كيف تصنع مهمة مجدولة على لينكس؟

كما اسلفنا فانه يوجد على نظام التشغيل لينكس برنامج يدير المهام المجدولة يدعى cron .. يصحو cron كل دقيقة لينفذ المهام الموجودة في ملفات تعليماته و التي تسمى crontabs ... تحتوي هذه الملفات على الاوامر التي يجب على مدير تنفيذها و على كيف سيتكرر تنفيذ هذه الاوامر... بشكل عام اكبر مدة يمكن ان تفصل بين تنفيذين للكود هي سنة ... دعنا نرى كيف نتخاطب مع مدير المهام المجدولة على لينكس :
Code ..


Minutes Hours Days Months WeekDay command





لاحظ ان الفاصل بين مكونات الامر هو فراغ ... المكونات هي كالتالي :
Minutes : الدقائق و هي من 00 الى 59
Hours : الساعات من 0 الى 23 حيث 23 هي الحادية عشرة من الليل
Days : الايام من 1 الى 31
Months : الاشهر من 1 الى 12
WeekDay : اليوم من الاسبوع وهي من 0 الى 6 حيث اليوم رقم 0 يرمز الى الاحد
command : ما تود من نظام التشغيل تنفيذه ... لاحظ ان هذا امر نظام تشغيل و ليس جملة بي اتش بي ...

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

ماذا تعني هذه الخانات ؟ تعني في اي شهر من السنة و اي يوم من ذلك الشهر و اي ساعة من ذلك اليوم ثم اي دقيقة من تلك الساعة تود ان ينفذ الامر المعطى ....
قيمة هذه الخانات يمكن ان تكون :
- رقما واحدا يدل على قيمة واحدة
- علامة * لتدل على اي قيمة حسب التعاريف التي ذكرناها في الاعلى
- مجموعة من الارقام مفصولة بفاصلة مثل 1,2,5,6 لتعني اي رقم فيها اي : 6 او 5 او 2 او 1
- فترة من الارقام عبارة عن رقمين مفصولين بشرطة ... فلو كانت قيمة Days هي 9-11 فان هذا يعني اليوم التاسع و اليوم العاشر و اليوم الحادي عشر..

مثال :
التعليمة التالية :
Code ..


0 0 15 3 * myprogram





ستنفذ البرنامج myprogram في الخامس عشر من شهر مارس (الشهر الثالث من السنة) عند الساعة الثانية عشرة من الليل تماما و ذلك في اي يوم من الاسبوع وافق ذلك ..
الصفر الاول : يعني الدقيقة اللاولى في الساعة
الصفر الثاني: يعني الساعة الثانية عشرة
15 : تعني اليوم الخامس عشر من الشهر
3: تعني الشهر الثالث من السنة اي مارس
* : تعني اي يوم في الاسبوع

لو عدلناه الى التالي :
Code ..


0 0 * * 1 myprogram





فان البرنامج سينفذ كل يوم اثنين (تذكر ان صفر يعني يوم الاحد) من كل شهر في السنة عند الساعة الثانية عشرة تماما
ولو عدلناه الى التالي فسينفذ الكود في تمام الساعة السابعة صباحا و الساعة السابعة مساء من كل يوم في شهر يناير و فبراير من كل سنة
Code ..


0 7,19 * 1,2 * myprogram





ولو عدلناه الى التالي فسينفذ البرنامج كل نصف ساعة كل ثلاثاء من كل شهر في السنة
Code ..


0,29 * * * 2 myprogram






لا تحتاج الى حفظ هذه الاشياء مع انها ليست صعبة ... فهنالك هذه الاداة التي تمكنك من صناعة هذه الجملة بسهولة على هذه الصفحة:
http://www.mtsdev.com/opensource/phpcrontab.php (http://www.mtsdev.com/opensource/phpcrontab.php)
و بامكانك الحصول على مصدره من:
http://www.mtsdev.com/opensource/php...utorial.tar.gz (http://www.mtsdev.com/opensource/phpcrontab-tutorial.tar.gz)

سأعرب هذه الاداة الجميلة ان شاء الله و اضعها لاحقا في قسم التعليقات على هذا الدرس ....

الان ... اذا وضعت اوامر البي اتش بي في ملف و ليكن MyCron.php و اردت ان تشغله كل يوم جمعة في تمام الساعة الحادية عشرة مساء من كل اسبوع فان الامر سيكون كالتالي :
اذا كانت نسخة بي اتش بي مدمجة فان علينا كما سبق ان نستخدم اي متصفحا على لينكس كالتالي ..
Code ..


0 23 * * 5 lynx http://www.example.com/path/to/your/MyCron.php (http://www.example.com/path/to/your/MyCron.php)





اذا كانت النسخة مستقلة فان بامكانك ايضا استعمال المترجم مباشرة كالتالي :
Code ..


0 23 * * 5 php /path/to/your/MyCron.php






هذا كل ما هنالك ... الان اذا كنت ستنفذ هذه المهمة على موقعك على الويب فتأكد من وجود الخدمة لديك ... اتصل بالدعم الفني و اسألهم عن كيفية وضع اوامر cron ... اما اذا كنت تريد اختبار هذه الحركة على جهازك اولا .. فضعها في مهمة مجدولة باستخدام مدير المهام المجدولة على ويندوز..
اذهب الى "ابدأ" ثم "تشغيل" و اكتب tasks ... ستظهر لك نافذة البرنامج المسؤول عن جدولة و تنفيذ المهام في ويندوز و اضف المهمة التالية
Code ..


explorer http://localhost/path/to/your/MyCron.php (http://localhost/path/to/your/MyCron.php)





سنرى في القسم التالي ماذا تعمل لو اكتشفت ان مزود مساحتك على الانترنت لا يدعم او عطل هذه الميزة ..



موقعي لا يدعم المهام المجدولة... هل هنالك حل؟

كما اسلفنا فان ميزة المهام المجدولة قد لا تكون مدعومة على موقعك او بنفس القدر من السوء قد يحدد مضيفك عددا قليلا من المهام التي يمكنك تنفيذها كواحدة او اثنتين و احيانا لا يمنحك الا مهمة في اليوم ... اي لا يمكنك تنفيذ اي مهمة كل ساعة او كل دقيقة ... و هذا يحد من مدى استفادتك من هذه الخدمة ... ماذا نعمل ؟

الفكرة هي ان تضع الاوامر التي تريد تنفيذها في ملف و تضمه باستخدام include في احد الملفات التي تنفذ بشكل مستمر على الموقع.. مثللا الصفحة الرئيسية او صفحة المقدمة header او الذيل footer ومن احدى الحركات الجيدة في ان تضع صورة في الموقع بطول بكسل في عرض بكسل ويكون قيمة الخاصية src هو http://www.example.com/image.php (http://www.example.com/image.php) و بذا لن تحتاج الى تعديل الى ملف من ملفات موقعك ...

لنفرض اننا وضعنا الاوامر التي نريد تنفيذها في الملف cron.php وعملنا لها تضمين في احد الملفات التي يتكرر استخدامها
Code ..


<?
include('cron.php');
?>





الان سيتنفذ الكود كل مرة يطلب فيها ذلك الملف .... هذا جيد ..لكنه ليس ما نريد ... لاننا قد نرغب في تنفيذ الكود كل شهر مثلا !
لذلك قام احد المبرمجين بكتابة برنامج يدعى Pseudo-cron تجده على الرابط
http://www.bitfolge.de/?l=en&s=pseudocron (http://www.bitfolge.de/?l=en&s=pseudocron)

يستخدم هذا البرنامج نفس الاوامر التي يستخدمها مدير المهام المجدولة cron .... و يقوم بتضمين الملفات متى اتى الوقت لذلك .. بينما انت تقوم بربط

البرنامج باحد الملفات التي يكثر استخدامها على موقعك ...

في القسم التالي سنرى تطبيقا عمليا ...


تطبيق: اخبار موقع الجزيرة على بريدك كل صباح ...

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

طباعته الى المستخدم ...هذا هو:
Code ..


<?
// News Grapper
$url = "http://www.aljazeera.net/news/arabic/";
$string = implode("\n", file($url));
$string2 = explode("<!--start second News-->", $string);
$string3 = explode("<!--end second News-->", $string2[1]);
$news = str_replace('href="../../news/arabic/',"href=\"$url",$string3[0]);
$news = str_replace('>- ',">",$news);

preg_match_all("/href[[:space:]]*=[[:space:]]*"."[\"']{0,1}([^\"'> ]+)/i",
$news,$arr,PREG_SET_ORDER);
preg_match_all("|>([^<]*)</a|i",$news,$arr_****,PREG_SET_ORDER);



$HTML = "LATEST JAZIRAH NEWS @ YOUR BOX !<br>";
for ($i=0;$i<count($arr);$i++)
{
if ($arr_****[$i][1]!="")
{
$HTML .= "- <a href='".$arr[$i][1]."'>".$arr_****[$i][1].'</a><br> \n';;
}
}


/* recipients */
$to = "alnutaifi@yahoo.com" ;
/* subject */
$subject = "Jazeera News Update...";

/* message */
$message = "
<html>
<head>
<title>Jazeera News Update...</title>
</head>
<body>
$HTML
</body>
</html>
";

/* To send HTML mail, you can set the Content-type header. */
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: ****/html; charset=windows-1256 \r\n";

/* additional headers */

$headers .= "Automated News <phpvillage@example.com>\r\n";

echo $message;
/* and now mail it */
mail($to, $subject, $message, $headers);
?>





كل ما عليك هو حفظ هذا الكود في ملف و اعداد موقعك لينفذه حسب المدة و التكرار الذي تريده بأي من الطرق التي رأيناها في هذا الدرس ...

Bakenam
04-03-2009, 10:31 PM
1-2 طريقة استخدام القوالب مع SmarTemplates : -


الدرس الأول - المتغيرات
تمهيد:
تعتبر هذه الدروس أن لديك خلفية معقولة عن كل من برمجة PHP و توصيف HTML، قم بالحصول على ملف محرك القوالب المتوفر مجاناً في الموقع http://smartemplates.php4arab.info، (http://smartemplates.php4arab.info،/) ضع الملف SmarTemplates.php داخل نفس المجلد الذي تعتزم كتابة برامجك فيه حتى يكون بالإمكان الوصول إليه من خلال الدالة include، استخدم المفكرة أو برنامجك المفضل لتحرير كل من ملفات php و ملفات القوالب على الشكل HTML.

تمثيل المتغيرات:
لنفترض أنه لديك المتغيرات التالية:
Code ..


<?
$a = "هذا البرنامج هو تجربة";
$b = 24500;
$c = time();

include "SmarTemplates.php";
print $ST->STTransFile("template.html", compact('a', 'b', 'c'));
?>






حيث يمثل $a متغيراً نصياً، ويمثل $b متغيراً عددياً، كما يمثل $c الوقت والتاريخ، فإن ملف القالب سيكون بالشكل التالي:

Code ..


<html>
<body>
a = <st-echo>$a</st-echo>
<br>
b = <st-echo>$b</st-echo>
<br>
c = <st-echo format="d-m-Y h:ia">$c</st-echo>
</body>
</html>






حيث تستخدم الواصفة st-echo لتمثل قيم المتغيرات، يمكنك وضع الواصفة st-echo في أي مكان تريد، كما يمكنك تخصيص صفة خاصة لطريقة كتابة المتغير كما استخدمنا في المثال الصفة format لتحديد شكل ظهور الوقت والتاريخ، حيث تعني d-m-Y h:ia أن التاريخ سيظهر على الشكل يوم-شهر-سنة ثم الساعة:الدقيقة وصباحاً أو مساءً.
لاحظ أن بإمكانك تغيير ملف القالب في أي وقت من خلال أي برنامج تصميم صفحات ويب، كما يمكنك نقل الواصفة من مكان إلى آخر وتكرارها وتغيير خصائصها، دون الحاجة إلى الرجوع إلى ملف البرمجة مرة أخرى.

خصائص تمثيل المتغيرات:
يمكنك استخدام العديد من خصائص الواصفة st-echo للحصول على إمكانية أخرى دون العودة إلى ملف البرمجة، تخيل مثلاً أنك تحتاج إلى عرض جزء من قيمة المتغير النصي إذا زاد عن طول معين فإنك عندئذ لا تحتاج إلا إلى إضافة الخاصية limit إلى الواصفة كما في المثال التالي:
Code ..


<st-echo limit="15">$a</st-echo>






حيث ستقوم الواصفة تلقائياً بعرض 15 حرفاً فقط من قيمة المتغير $a
توجد العديد من الخصائص للواصفة st-echo تعطيك إمكانيات عديدة يمكنك مراجعتها في الموقع http://smartemplates.php4arab.info/d...hp?lang=arabic (http://smartemplates.php4arab.info/********.php?lang=arabic)

الدعم للغة العربية:
يمكن للخاصية format أن تجعل الواصفة st-echo تقوم بعرض تاريخ مترجم باللغة العربية، أو محول للتقويم الهجري تلقائياً بمجرد استخدام الرمز ar: أو hj: في بداية الخاصية كما في الأمثلة التالية:
Code ..


<st-echo format="ar:l, d-F-Y">$c</st-echo>
<st-echo format="hj:l, d-F-Y">$c</st-echo>






كما يمكن وبسهولة استخدام خاصية الكميات المعدودة لضبط التمثيل الصحيح للقيم المعدودة باللغة العربية، فبدلاً من الطريقة المستهجنة التي تجدها في العديد من المواقع العربية للعد على الشكل (2 عضو/عضواً) أو على الشكل (24 ملفات) والتي تبدو وكأنها لغة مكسرة، يمكنك باستخدام الخاصية countable جعل محرك القوالب يضبط الشكل الصحيح للكمية المعدودة كما في المثال التالي:
Code ..


عدد الأعضاء المتواجدين الآن:
<st-echo countable="ar:لا أحد,عضو واحد,عضوان,أعضاء,عضواً">$X</st-echo>






حيث يقوم المحرك وبناءً على القيمة العددية للمتغير $X في انتقاء الكلمة المناسبة من بين الكلمات التي ذكرتها.

تمثيل قيم المصفوفات:
يمكن بسهولة أيضاً تمثيل قيمة ضمن مصفوفة، فإذا كان المتغير $Y عبارة عن مصفوفة على الشكل:
Code ..


<?
$Y = Array ('name'=>'Ahmad', 'telephone'=> 42399122);
?>





فإنك تستطيع عرض القيم بالشكل التالي:
Code ..


<st-echo>$Y[name]</st-echo>






الاختصارات:
يمكن أيضاً استخدام الشكل المختصر:
Code ..


<$Y>
بدلاً من
<st-echo>$Y</st-echo>






وذلك للاختصار أثناء الكتابة، كما يمكن أيضاً استخدام الشكل الثانوي للواصفات، عندما يحتاج الأمر إلى ذلك، ففي بعض الأحيان قد تحتاج إلى وضع قيمة متغير داخل واصفة HTML اعتيادية كما في المثال التالي:
Code ..


<font color="<$color>">
</font>






حيث لا تتقبل المحررات هذا الشكل وتعتبره خللاً في الهيكل لذلك يمكنك استخدام هذا الشكل:
Code ..


<font color="{$color}">
</font>






فالمحرك يعتبر أن الواصفات يمكنها أن تستخدم الأقواس { و } بدلاً من < و > إذا ما كانت داخل واصفة أخرى وذلك للتوافق مع محررات صفحات الويب

Bakenam
04-03-2009, 10:32 PM
استخدام برمجة الكائنات OOP : -


قبل OOP
قبل الـ OOP كانت البرامج تبدو ضخمه وكبيره جدا وتحتاج الى معماريين ومهندسين لتطوير هذه البرامج، وتحتاج ال مزيد من الوقت والمال للصيانة.

على سبيل المثال اذا اردنا ان نضيف بعض الميزات او التحسينات الى التطبيقات الموجوده نحتاج الى عدة اسابيع او اشهر احيانا لتحديثها وعملية تتبع الاخطاء تحتاج الى عدد كبير من المبرمجين .

وعملية تتبع الاخطاء الموجوده في هذه التطبيقات هي مشكله بحد ذاتها، عندما نريد تتبع الدوال Functions الموجوده تأخذ وقت اطول من عملية اضافة دوال اخرى، ويصبح البرنامج ضخم جدا وايضا يلزم عدد اكبر من المبرمجين. لذا تم ايجاد الـ OOP.

- الاختلاف بين Object Oriented Programs و Functional Programs :
عملية الاختلاف هي عندما نقوم بتصميم برنامج باستخدام الـ functions يتوجب علينا تصميم هذا البرنامج بان تقوم دالة باستدعاء دالة اخرى، البيانات ترسل كبيانات ادخال ثم تقوم الدالة بمعالجة هذه البيانات او المدخلات واعطاء النتيجة كـ output . بعبارة صغيره هي ان الـ functional programs -> code-centric .

الـ OOP تأخذ الطريقة العكسية وهي أن الـ objects التي تحتوي على البيانات تحتوي على دوال تسمى methods (الـ method شبيه بالـ Function).

عندما يقوم الـ Object بطلب خدمه من Object اخر فانه يقوم بارسال رسالة ويستقبل الرد .

رسمة توضح المقارنه بين الحالتين


في الحالة الاولى (Functional Program :: code-centric) :
1. يتم ادخال البيانات الى a()
2. تقوم a() باستدعاء b() باستخدام نتائج a()
3. b() تستدعي c() باستخدام نتائج b()
4. c() تقوم بارسال النتائج الى b() وبدورها b() تقوم بارسال النتائج الى a()
5. اظهار النتيجه النهائيه للبرنامج

في الحالة الثانية (Object-Oriented Program :: data-centric) :
Object1 يقوم بطلب الخدمه من object3 و هو بدوره يقوم بالطلب من object4 وهكذا حتى يقوم Object1 باستقبال الرد من object3 تحتوي على النتيجه النهائية.
الاختلاف بين الحالتين هو ان الـ Objects تحتوي على البيانات ةطرق معالجتها.
بينما تكون البيانات منفصله عن الـ functions هذا يجعل من OOP عملية سهله لتتبع البرنامج وسهولة عملية الصيانه والتحديث


اهمية OOP

ما هو مهم بالنسبه لك كمبرمج هو ان الـ OOP ليست الا تقنيه او طريقة ليست لغة برمجة.

PHP,C++ and **** جميع هذه اللغات هي لغات OOP لانها تطبق نفس الهدف ولكن البرمجه باستعمال **** و C++ تختلف .

يجب عليك كمبرمج ان تفهم مبدأ الـ OOP المشروح في الرسمه السابقه بشكل عام ثم تقوم بالتركيز على اللغة التي تنوي استعمالها. سنقوم في هذا الدرس بالتركيز على لغة PHP .

عندما نقوم بتطوير التطبيقات الخاصه بنا نستطيع ان نقسم هذه التطبيقات او البرامج الى اجزاء. على سبيل المثال طبقات عرض مختلفه
Data**** access objects, search engines, security components .

عند عملية التحديث للبرامج كوحدات صغيره ومجزئه تضمن ان التغييرات في Object معين لن تؤثر على بقية الـ Objects .


- مكونات Object-Oriented Program :
Classes : الـ class هو تعريف او عملية عرض لنوع معين من البيانات ، عندما نقوم بتعريف Object جديد يجب ان نستعمل كلمة class في PHP ******s.
توضيح بسيط بين object و class هو ان الـ classes تقوم بتعريف objects تقوم باستعمالها في تطبيقاتها .


- مكونات الـ Class في PHP :
اولاً : members .
على سبيل المثال سنقوم بتصميم class يسمى User، فان الـ members لهذا الـ class (المتغيرات التي يتم تعريفها لاستخدامها لاحقا)
Code ..


Firstname, lastname, email, username and password
var $firstname;
var $lastname;
var $email;
var $username;
var $password;





ثانيا : methods
الخدمات او الدوال الموجوده داخل الـ Object وهذه methods تقوم باستخدام الـ members او المتغيرات المعرفه سابقا.
على سبيل المثال لدينا الـ class السابق وهو الـ User وهذا الكلاس يوجد به methods مثلا method للتأكد من صلاحية البريد الالكتروني emailالمعرف في الـ members و method اخر للتأكد من عدد الاحرف المدخله لاسم المستخدم username وهكذا .

اخيرا : Constructor
هذه طريقه خاصه لعملية انشاء الـ object ليصبح جاهزا للاستعمال، يوجد منشئ واحد فقط للـ object في ال PHP.
على سبيل المثال class User من الضروري ان نقوم باخذ جميع المتغيرات التي تم تعريفها (members) سابقا.
يجب ان يكون اسم الـ constructor مساوي لل className
مثلا لدينا اسم class هو User يكون الـ constructorبالشكل التالي :
Code ..


<?
Class User
{
…………….

Void User() //constructor
{
…………..
}
?>






ملاحظة : الـ constructor يجي ان لا يعيد قيمة معينة هو فقط لجعل الـ class في مرحلة التشغيل(من غير المنطقي ان تجعل الـ class يعيد قيمة معينه return value).

الصيغة العامة او الشكل العام لكتابة الـ Class :



كما ترى أن الـ class ليس الا مجموعة من members (variables) و methods(functions) .
الـ members اما ان تكون integers او strings او ان تكون array او objects اخرى .

PHP لا يحتاج ان تقوم بتعريف انواع المتغيرات ما عليك سوى ان تقوم بعملية التسمية .


تطبيق عملي

ما رأيك ان نقوم بكتابة سكريبت صغير يشرح الـ class ؟

قبل البدأ عليك مراعاة الامور التالية :
- يجب ان يبدأ اسم الـ class بحرف كبير لعملية التفريق بين اسم الـ class و functions و variables .
- من المفيد ايضا ان تقوم بحفظ الملف بنفس اسم الـ class مثلا لدينا class User يجب حفظ الملف باسم user.php .
- الملف يجب ان يحتوي على class واحده وان كان لديك اكثر من ملف يفضل وضعهم في مكان واحد ونقوم باستدعاء الـ class من ملف اخر باستعمال include_once() او require_once() .
- يجب كتابة $this-> قبل الـ member name او variable .

والان لنحاول تطبيق المثال التالي .....

سنبدأ اولا بتعريف الـ class وتعريف الـ members(variables) لهذا الـ class


الان سنقوم بكتابة الـ constructor للـ class User
وظيفة الـ constructor : هي عملية تهيئة (بدء) لجميع عناصر الـ object للتأكد من ان جميع الخدمات يمكن استخدامها متى يطلب منها ذلك.
مثلا ..... لو لم نقم بكتابة الـ constructor لا نستطيع استخدام الدالة display() التي سنقوم بكتابتها.



في لغتي الـ C++ و **** تكون الـ this اختياريه ليست اجباريه، بينما في لغة PHP فانها اجباريه لان PHP ضعيف في التعامل مع scope of variables .
في لغة PHP 3 مستويات للـ namespace (مجموعه من variables names) مكان تخزيت الـ variables :

- المستوى الادنى (lowest level) يستعمل للـ local variables أي المتغيرات التي يتم تعريفها داخل الدوال (functions or methods).اي متغير (variable) يتم تعريفه داخل هذا المستوى يضاف الى local namespace .

- المستوى الثاني يتضمن جميع المتغيرات members للـ object .

- المستوى الاعلى يستعمل لـ global variables .
* $this تخبر الـ PHP انك تريد المتغير من المستوى الثاني.اذا لم تقم باضافة الـ $this فانك تود انشاء متغير جديد في local namespace كما تم الشرح سابقا.

الان سنقوم بكتابة الدالة display()



نلاحظ ايضا اننا قد اغلقنا الـ scope لل class ايضا ({) وبالتالي انتهينا من كتابة الـ class User .

الان سنقوم بانشاء الـ object لل class User :



هكذا نكون قد انتهينا من هذا الدرس وان شاء الله في الدرس القادم سأتناول مواضيع اخرى في OOP .ان شاء الله سنقوم بتغطية ...
1. Encapsulation
2. Inheritance
3. Polymorphism

Bakenam
04-03-2009, 10:33 PM
تعدد الصفحات ( ط 3 ) :-


إستخراج المتغير من الـ DB
هنا سوف نقوم بعرض كتل هذا السجل حسب عدد الاسطر
وقد اثار الموضوع بعض الاخوة في قرية بي اتش بي وكان منهم من قسمها على أساس عدد الاحرف والبعض على عدد الكلمات ..

فقررت أن أحاول حل الموضوع بحسب عدد الاسطر ووصلت لهذه النتيجة .

في البداية سنجري الاتصال بقاعدة البينات لكي نتمكن من جلب الإستعلام .


Code ..


<?
$result = mysql_query("SELECT * FROM rafia_forum
WHERE id='$id'");
?>





هذا الاستعلام يستخرج سجل من الجدول rafia_forum وهو الذي تمت التجربة عليه .

يحدد هذا السجل رقمه التسلسلي وهو المتغير id ، لتجربة الإستعلام قم بتبديل هذا المتغير برقم احد السجلات الموجودة في قاعدة بياناتك وقم بتعديل إسم الجدول لما يناسبك .

الان نقوم باستخراج كل الحقول الموجودة في هذا السجل
كما يلي :
Code ..


<?
$row = mysql_fetch_array($result);
?>





- ملاحظة :
لم نستخدم الحلقات في عملية استخراج النتيجة وهذا ما يقع فيه الكثير من الاخوة , لان الاستعلام على حقل واحد فقط , يكفي ان نضع الحقل في مصفوفة بشكل مباشر .

قبل معالجة البينات نتأكد من أن القيمة لعدد الاسطر موجودة , إن لم تكن تاخذ القيمة صفر :
Code ..


<?
if(!isset($line)){$line = 0;}
?>





بعد ذلك نضع متغير يحمل قيمة عدد الاسطر في كل صفحة :

Code ..


<?
$perpage = "10";
?>





ثم نقوم بتحرير الحقل الذي نريد تقسيمه لعدة أسطر من المتغير row :

Code ..


<?
$post = $row["post"];
?>



عملية التقسيم

الان نقوم بتقسيم المتغير post إلى اقسام بحسب عدد الاسطر :

Code ..


<?
$expline = explode("\n",$post);
?>





استخدمنا الدالة explode في التقسيم على أساس
n \ حرف السطر الجديد هو غير مرئي لكنه يأتي في نهاية كل سطر معبراً عن بداية سطر جديد ،ووضعنا الناتج من التقسيم في مصفوفة : expline .

تذكير :
explode : تقوم بتقسيم السلسلة وتحويلها الى مصفوفة .

الان نقوم بحساب عدد عناصر المصفوفة بستخدام الدالة
count :

Code ..


<?
$countlin = count($expline);
?>





countlin هو المتغير الذي حفظنا فيه مجموع عدد الاسطر ، الان نقوم بتجهيز العملية الحسابية في تقسيم الصفحات ..

( راجع الدرس الاول )
Code ..


<?
//تعيين رقم الصفحة السابقة بناء على عدد الاسطر
$previouspage = $line - $perpage;
//تعيين رقم الصفحة التالية
$nextpage = $line + $perpage;
?>





إلى هنا سنكون قد جهزنا جميع المتغيرات التي سوف تساعدنا في تقسيم العرض ولذلك سنبدأ في التقسيم .

نقوم بعرض الاسطر انطلاقاً من نقطة معينة في المتغير line وحتى نقطة نهاية معينة في المتغير nextpage مستخدمين في ذلك حلقة التكرار for :

Code ..


<?
for ( $i = $line; $i< $nextpage; $i++)
{
echo"$expline[$i]<br>";
}
?>





- ملاحظة :
اثناء الطباعة ستجد <br> في النهاية وهي شرط اساسي لنجاح العملية اما في البداية او النهاية ، لن تضطر لإستخدام الدالة nl2br ، السبب لان التعامل مع مصفوفة ، اعني مقسمة في اسطر جاهزة .

انتهينا ولم يبقى الى اظهار كلمة السابق والتالي ، مستخدمين في ذلك اربع شروط تم شرحها في الدرس الاول :

Code ..


<?
if(($line > 0) || ($countlin > ($line + $perpage)))
{
echo "<p align=center>";
}
if($line > 0)
{
echo "<a href=$PHP_SELF?line=$previouspage>
<<السابق</a>\n";
}
if($countlin >($line + $perpage))
{
echo "<a href=$PHP_SELF?line=$nextpage>
التالي>></a>\n";
}
if(($line > 0) || ($countlin > ($line + $perpage)))
{
echo "</p>";
}
?>



النتيجة النهائية

أخيرا تفضلوا المثال الذي نجح في التجربة :
Code ..


<?
$dbuser="";
$dbpword="";
$dbserver="localhost";
$dbname="rafiaphp";
echo "<HTML DIR=RTL LANG=AR-SA>";
function dbconnect(){
global $dbserver , $dbuser , $dbpword , $dbname ;
$result = mysql_pconnect("$dbserver", "$dbuser", "$dbpword");
if (!$result)
return false;
if (!mysql_select_db("$dbname"))
return false;
return $result;
}
dbconnect();
$result = mysql_query("SELECT * FROM rafia_forum
WHERE id='29'");
$row = mysql_fetch_array($result);
if(!isset($line)){$line = 0;}
$perpage = "10";
$post = $row["post"];
$expline = explode("\n",$post);
$countlin = count($expline);
$previouspage = $line - $perpage;
$nextpage = $line + $perpage;
for ( $i = $line; $i< $nextpage; $i++)
{
echo"$expline[$i]<br>";
}
if(($line > 0) || ($countlin > ($line + $perpage)))
{
echo "<p align=center>";
}
if($line > 0)
{
echo "<a href=$PHP_SELF?line=$previouspage>
<<السابق</a>\n";
}
if($countlin >($line + $perpage))
{
echo "<a href=$PHP_SELF?line=$nextpage>
التالي>></a>\n";
}
if(($line > 0) || ($countlin > ($line + $perpage)))
{
echo "</p>";
}
?>

Bakenam
04-03-2009, 10:34 PM
الفئات والكائنات : -


المقدمة
- التعريف للكائن ( Object ) باختصار :
هي عملية إنشاء سمات وعمليات على فئات يتم تطبيقها بعد ذلك على البيانات ، ليقوم بمعالجتها ، ووظائف الكائن مربوطة بالبينات التي يستعملها .

- توضيح لعمل الكائنات :
إنشاء كائن في فئة نقوم بمعالجتها و إضافة سمات على هذه الفئة ثم نقوم بإنشاء تواجد للفئات ونمرر عليه البيانات التي تريد أن تمر بالمعالجة التي مرت عليها الفئة إما معالجة كاملة أو جزئية بحسب الرغبة .


بداية انشاء فئة

بداية انشاء فئة نستخدم الكلمة الاساسية class ونمسي الفئة . على هذة الصورة :
Code ..


<?
class MyClass
{
}
?>






حيث MyClass اسم الفئة .

حتى نقوم باجراء عمليات يجب تعريف متغيرات داخل الفئة بستخدام var مثال :
Code ..


<?
var $a;
?>






ولكي نستخدم هذه المتغيرات داخل الدوال في الفئات لدينا مؤشر للوصول له على سبيل المثال نصل الى المتغير السابق

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


مثال التطبيق

مثال لتصريح متغير , ومثال بدون تصريح متغير كلاهما يقوم بنفس الوظيفة :

مثال 1 ( اختبار البريد ) :
Code ..


<?
class myclass
{
var $email;

function check_email(){
if(ereg("^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+
\.[a-zA-Z0-9\-\.]+$",$this->email))
return (true);
else
return (false);
}
}
// أنشاء تواجد للفئة
$newclass = new myclass;
// الوصول للبريد الذ سوف نختبره
$newclass->email = "you@hotmail.com";
//وضع الدالة في متغير
$check_email = $newclass->check_email();
// شرط لاظهار نتيجة مختلفة عند اختبار البريد
if(!$check_email){
echo "البريد الاكتروني غير صحيح";
} else {
echo "البريد الاكتروني صحيح";
}
?>






مثال 2 ( اختبار البريد ) :
Code ..


<?
class MyClass
{
function check_email($email){
if(ereg("^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+
\.[a-zA-Z0-9\-\.]+$", $email))
return (true);
else
return (false);
}
}
// أنشاء تواجد للفائة
$newclass = new MyClass;
// البريد الذي سوف نختبرة
$email = "you@hotmail.com";
// تمرير البريد على الدالة ثم حملها في متغير
$check_email = $newclass->check_email($eamil);
// شرط لاظهار نتيجة مختلفة عند اختبار البريد
if(!$check_email){
echo "البريد الاكتروني غير صحيح";
} else {
echo "البريد الاكتروني صحيح";
}
?>






ركز في الامثلة السابقة وتعرف على الفرق .

لكي تتحقق من النتيجة قم بتغيير البريد مرة ضع بريد صحيح ومرة خطأ ..

من الامثلة السابقة اتضح انشاء تواجد للفئة بستخدام الكلمة الاساسية new ، ثم وضعناها في متغير newclass ، هذا المتغير هو الذي سوف نصل عن طريقة لسمات الفئة .

وفي الامثلة السابقة وصنا لهذه السمات بهذه الصورة :
Code ..


<?
// الوصول لدالة الاختبار في المثال الاول
$newclass->check_email();

// الوصول لمتغير تم تصريحة في الفئة
$newclass->email

// الوصول لدالة وتمرير متغير في المثال الثاني
$newclass->check_email($eamil);
?>



دالة الوصول

في بعض الاحيان نحتاج لانشاء دالة وصول داخل الفئة
لمتغيرات تم تصريحها او لسمات معينة حتى نصل اليها بسهولة ، ولكي تساعد دالة الوصول اثناء انشاء التواجد .

وهنا مثال لفئة تحتوي على دالة وصول وفئة لا تحتوي على دالة وصول :

مثال 3 (الاتصال بقاعدة البينات ) بدون دالة وصول :
Code ..


<?
class mysql
{
var $dbserver;
var $dbuser;
var $dbpword;
var $dbname;
var $link;

// دالة الاتصال بالقاعدة
function connect()
{
$this->link= mysql_pconnect($this->dbserver,
$this->dbuser, $this->dbpword);
if (!$this->link)
die( "لايمكن الاتصال بقاعدة البينات" );
$dbselect = mysql_select_db($this->dbname,$this->link);
if (!$dbselect)
die( "لايمكن تحديد قاعدة البينات");
return $this->link;
}
} // نهاية الفائة

// التطبيق . انشاء التواجد
$db = new mysql;
$db->dbserver = "localhost";
$db->dbname = "dbrafia";
$db->dbuser = "root";
$db->dbpword = "";
$db->connect();
//بهذه الطريقة تمكنا من الاتصال
?>






مثال 4 (الاتصال بقاعدة البينات ) باستخدام دالة وصول :
Code ..


<?
class mysql
{
var $dbserver;
var $dbuser;
var $dbpword;
var $dbname;
var $link;

// دالة الوصول
function mysql($db_server,$db_name,$db_user,$db_pword)
{
$this->dbserver = $db_server;
$this->dbname = $db_name;
$this->dbuser = $db_user;
$this->dbpword = $db_pword;

}

// دالة الاتصال بالقاعدة
function connect()
{
$this->link= mysql_pconnect($this->dbserver,
$this->dbuser, $this->dbpword);
if (!$this->link)
die( "لايمكن الاتصال بقاعدة البينات" );
$dbselect = mysql_select_db($this->dbname,$this->link);
if (!$dbselect)
die( "لايمكن تحديد قاعدة البينات");
return $this->link;
}
} // نهاية الفئة

// التطبيق . انشاء التواجد
$db = new mysql("localhost","dbrafia","root","dbpword");
$db->connect();
//بهذه الطريقة تمكنا من الاتصال
?>






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

ما هو الجديد في المثال الرابع ؟
تسمية دالة الوصول لاحظ انها بنفس اسم الفئة mysql ، التسمية غير الازامية لكن هنا كي يتم تطبيق الدالة عند انشاء الفئة تطبيق تلقائي ، مثال :
Code ..


<?
$db = new mysql("localhost","dbrafia","root","dbpword");
?>






بهذا يتم انشاء الفئة مع تطبيق دالة الوصول .



كائن وأستخدامات متعددة

تعال وأنظر الى هذا المثال البسيط للجدول ، وانظر كيف قمنا بانشاء اربع جداول تختلف عن بعضها لكي تعرف الفائدة من الفئات :

Code ..


<?
class Table
{
// دالة الوان الصفوف
function setGrid($rows, $columns)
{
$this->rows = $rows;
$this->columns = $columns;
}

// دالة لون الخط
function setInterface($bcolor, $fcolor, $font)
{
$this->bcolor = $bcolor;
$this->fcolor = $fcolor;
$this->font = $font;
}

// دالة انشاء الجدول
function drawTable()
{
echo "<table border=1 bgcolor=" . $this->bcolor . ">";

for ($x=1; $x<=$this->rows;$x++)
{
echo "<tr>";

for ($y=1; $y<=$this->columns;$y++)
{
echo "<td><font face=\"" . $this->font . "\" color=" .
$this->fcolor .
">" . $x . ", " . $y . "</font></td>";
}
echo "</tr>";
}
echo "</table>";
}
}
?>
<html>
<head>
<****font face=Arial>
</head>
<body>
<?

// الجدول الاول
$alpha = new Table;
$alpha->setGrid(4,4);
$alpha->setInterface("green", "white", "Arial");
$alpha->drawTable();

?>
<p>
<?

// الجدول الثاني
$beta = new Table;
$beta->setGrid(1,9);
$beta->setInterface("blue", "white", "Arial Black");
$beta->drawTable();

?>
<p>
<?

// الجدول الثالث
$gamma = new Table;
$gamma->setGrid(2,4);
$gamma->setInterface("black", "white", "Verdana");
$gamma->drawTable();

// الجدول الرابع
$omega = new Table;
$omega->setGrid(4,2);
$omega->setInterface("white", "black", "Trebuchet MS");
$omega->drawTable();

?>
</body>
</html>

Bakenam
04-03-2009, 10:35 PM
تعميم قواعد البيانات Data**** Abstraction : -


مقدمة
بسم الله الرحمن الرحيم ...

تعتبر قواعد البيانات من مخازن المعلومات (Data Warehouses) المفضلة على مستوى تطبيقات الشبكة العنكبوتية و ذلك لفوائدها الواضحة في تخزين المعلومات بشكل منظم و تسهيل عمليات الادخال ، الاستعلام ، التعديل و الحذف عبر برامج أو أنظمة "إدارة قواعد البيانات" مثل MySql و Oracle و Microsoft SQLserver ....

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

إذاً كمبرمج يطور برامجاً موجهة للشبكة العنكبوتية أنت لا تدري أين سينتهى المطاف ببرنامجك ، هل سيستخدم قاعدة بيانات من نوع MySql أم من نوع Access أم ... أم ؟ هذه هي ما يعرف بخاصية "قابيلة التلائم" أو Portability ... فالبرنامج الذي بامكانه العمل على أربعة
من أنواع أنظمة قواعد البيانات مثلاً يقال عنه أنه أكثر قابلية للتلائم من برنامج كتب خصيصا لقواعد PostgreSQL ....

إذا كنت تتوقع أن برنامجك سيطلب من أناس يتعاملون مع قواعد بيانات مختلفة و يطلب منه العمل على أكثر من نوع فهذا المقال سيشرح لك كيف تبني برنامجك ليحقق ذلك و الا فإن المقال لا يحتوي على مايفيدك في الوقت الحالي ، لكن ربما تحتاجه قريبا ...!


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

إذا برنامجك يجب ان يكون مهيئاً للعمل مع أي نوع من قواعد البيانات ... أنت محظوظ ...فـ PHP تدعم الكثير من أنظمة قواعد البيانات ...

يبدو الامر سهلا !!

فبدلاً من استخدام الدالة mysql_pconnect للاتصال بقاعدة البيانات من نوع mysql ... سأستعمل الدالة pg_pconnect إذا كان نوع قاعدة البيانات من نوع PostgreSQL ، و على هذا فقس .... في كل الاوامر مثل تنفيذ الاستعلامات ، استرجاع السجلات ، تعديل هيئة القاعدة ... الخ .

سأترك تقرير نوع قاعدة البيانات للمستخدم و أجعل ذلك في ملف الاعدادات مثلاً ، و هذا بالضبط ما يعنيه "تعميم قواعد البيانات" ....

فمثلا لتحقيق "تعميم قواعد البيانات" بالامكان استخدام الكود التالي :
Code ..


<?
include('config.php');

//انشاء اتصال بقاعدة البيانات
switch($db_type)
{
case 'mysql':
$connection = mysql_connect(.....);
break;
case 'postgreSQL' :
$connection = pg_pconnect(.....);
break;
case 'mSQL':
$connection = msql_pconnect(....);
break;
}
.
.
.
// و بعد مدة http://www.traidnt.net/vb/images/smilies/cupidarrow.gif
.
.
.

// استرجاع بعض المعلومات
switch($db_type)
{
case 'mysql':
$result = mysql_query(.....);
break;
case 'postgreSQL' :
$result = pg_query(.....);
break;
case 'mSQL':
$result = msql_query(....);
break;
}
?>






و هكذا كل ما اردت التعامل مع قاعدة البيانات يتوجب عليك استخدام switch لتقرير أي دالة تستعمل ، طبعا كل دالة تستقبل مدخلات خاصة بها ، فلا يفكر احد في استخدام eval ;-) ...

هذا كل شئ ..... لكن .....

لن تحتاج الى طاهي فرنسي لكي يخبرك أن الكود السابق .... "غبي" ... فقد كتب لثلاثة أنواع من قواعد البيانات و هنالك الكثير منها ، لربما تعدى المجموع العشرة ، و هو أيضا يطول شفرة برنامجك بشكل كبير و يزيد من التكرار السمج فيه ... هب أنك ستنفذ عشرة استعلامات .. في كل واحد تريد التحقق من نوع القاعدة ... ستنتهي بمائة سطر !!!

من الطرق لتفادي هذه الجمل المتكررة أن نجعلها في دالة و نطلب الدالة متى اردنا ... مثال :
Code ..


<?
function bomuhammed_connect
($server='localhost',$user='root',$pass='',$db_typ e='mysql'){

switch($db_type)
{
case 'mysql':
$connection = mysql_connect(.....);
break;
case 'postgreSQL' :
$connection = pg_pconnect(.....);
break;
case 'mSQL':
$connection = msql_pconnect(....);
break;
}

return $connection;
}
?>






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



مرحبا بك في ADOdb

دعونا نراجع ما يحصل لطلب اتصال بقاعدة بيانات من نوع mysql من بداية الحديث الى اخر ما توصلنا اليه :

1- في البداية و قبل ان نتكلم عن اهمية "قابيلية التلائم" ، كان البرنامج يستخدم فقط الدالة mysql_pconnect ، وعندها يفتقد البرنامج قابيلة التلائم مع انظمة قواعد بيانات أخرى ... فسير العملية هو :

طلب الاتصال ---> استخدم mysql_pconnect مباشرة .

2- ثم قررنا ان قابلية التلائم مع اكثر انظمة قواعد البيانات (PostgreSQL, Oracle, Microzift, mSql) أمر مهم جداً
عندها قررنا استخدام switch ، و كان سير العملية كالتالي :

طلب الاتصال ---> استخدم switch لتقرير الدالة ---> استخدم الدالة المقررة .

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

3- عندها قررنا أن نضع التقرير و الاتصال في داخل دالة و نناديها متى شئنا و يكون من مهام الدالة تقرير الدالة المناسبة و استخدامها ، و ارجاع الناتج ...

طلب اتصال ---> اطلب الدالة bomuhammed_connect لتقرر نوع نظام قاعدة البيانات و القيام بالاتصال --> bomuhammed_connect ترجع قيمة الاتصال .

ممتاز .......

الكلام الان ... من منا لديه معرفة بجميع انواع انظمة قواعد البيانات لكي يقوم بكتابة الدوال الخاصة ؟ هنا يأتي دور ADOdb ....

ADOdb إختصـار لـ (Active Data Objects Data****) .. هذه الباقة من الكائنات objects تأتي لتسهل عليك أمر الاتصال بقاعدة البيانات و التعامل معها و أيضا تجعل برنامجك قابلاً للملائمة مع الانظمة التالية :
Code ..


MySQL, Oracle, Microsoft SQL Server,
Sy****, Sy**** SQL Anywhere,
Informix, PostgreSQL, Front****,
Inter**** (Firebird and Borland variants),
Foxpro, Access, ADO and ODBC



ماذا تتوقع ان ترى في ADOdb

الحقيقة لا شيء جديد .... ابداً ...

فبدلاً من استخدام دالة معينة ستجد نفسك تستخدم دالة اخرى !! .... العمل الفعلى لـ ADOdb يتم في الخلفية دون أن تشعر ... وهذا ما يجعل الانتقال اليها لنا امر سهلاً جداً ...

خطوات استخدام ADOdb :
صفر : نزل ADOdb من php.***log.com و فك ضغط الملف في مجلد مشروعك .

اولاً : ضم الملف adodb.inc.php للملفات التي تريد استخدام ADOdb فيها كالتالي :
Code ..


<?
include('./adodb/adodb.inc.php');
// المسار قد يتغير تبعا لحالتك
?>






هذا الملف يقوم بدوره بعمل تضمينات includes للملفات المهمة للكائن تلقائيا ...

ثانياً : انشئ كائناً باستخدام الدالة NewADOConnection ، و هي دالة معرفة من قبل ADOdb ، تأخذ الدالة متغيراً واحداً هو نوع نظام قاعدة البيانات .
Code ..


<?
$connection = NewADOConnection('mysql');
?>






عندما تذكر للدالة نوع قاعدة البيانات فانها تقوم بتضمين ملف يدعى "المشغل" driver و هو الملف المسؤول عن التعامل مع قاعدة البيانات ، كل المشغلات موجودة تحت المجلد drivers ... فمثلاً مشغل قواعد البيانات من نوع Sy**** هو adodb-sy****.inc.php .

ثالثاً : اتصل بقاعدة البيانات باستخدام الكائن كالتالي :
Code ..


<?
$connection->Connect('localhost','my_name',
'my password','my data**** name');
?>






أو استخدم الاتصال المستمر :
Code ..


<?
$connection->PConnect('localhost','my_name',
'my password','my data**** name');
?>






او استخدم الدالة NConnect لفرض اتصال جديد ، بي اتش بي أحيانا تقوم باستعمال اتصالات سابقة حتى لو استخدمت connect .
Code ..


<?
$connection->NConnect('localhost','my_name',
'my password','my data**** name');
?>






بعدها الكائن جاهز لاستقبال طلبات الاستعلامات باستخدام الامر Execute فيه ... كالتالي :
Code ..


<?
$result = $connection->Execute('select * from bogus_table');
?>






لاحظ أن نتيجة الاستعلام حفظت في المتغير result$ ، و ذلك على شكل كائن ايضا !!!

بعدها يبدأ التفنن في عرض النتيجة ، أحب الطريقة التالية :
Code ..


<?
$students = $connection->Execute("select name, email,
parent_tel from student");
if(!$students){die('لا يوجد طلاب');}

while(@extract($students->FetchRow())){

echo "the name is $name
and the email is $email
and his parent telephone # is $parent_tel <br>";

}
?>






أحياناً تريد قيمة واحدة مثل اسم الطالب إذا كان عندك رقمه في الجدول ... يمكنك إستخدام GetOne :
Code ..


<?
$name = $connection->GetOne("select name from student
where id=$id");
?>






بامكانك معرفة عدد السجلات المرجعة باستخدام RecordCount :
Code ..


<?
$students = $connection->Execute("select name, email,
parent_tel from student ");
if(!$student){die('لا يوجد طلاب');}
echo 'عدد الطلاب'.$students->RecordCount();
?>






هنالك ميزة جميلة جداً و هي قدرة هذا الكائن على إخراج السجلات كـقائمة منسدلة :
Code ..


<?
$students = $db->Execute('select name,id from student');
$menu= $students->GetMenu('stuid');

$search_form = "
<form name='search' method='post' action='stu_search.php'>
ابحث عن <input name='search_for' value=\"$search_for\" >
<input type='hidden' value='do_search' name='action'>
<input type='submit' value='ابحث'>
</form>
<form name=select method='get' action='stu_log.php'>
او اختر احد الطلبة
$menu
<input type=submit value='اعرض التقييمات '>
</form>
";
?>






أما إغلاق الاتصال يتم كالتالي :
Code ..


<?
$connection->Close();
?>






كما ترى ... لا شيء جديد ، و السبب ان كل العمل يتم في الخلفية ... و بالتحديد في المشغلات ...
في النهاية أنت الرابح ... لأن كل ما عليك فعله لتجعل الكود السابق يعمل على قاعدة من نوع Oracle مثلاً هو تغيير سطر واحد ، اي :
Code ..


<?
$connection = NewADOConnection('oracle');
?>






هذه المشغلات ليست جاهزة كلها ، لكن الكثير منها مجرب و يمكن الاعتماد عليه و البقية مازال تحت التطوير ، راجع هذه الصفحة للمزيد :
http://php.***logs.com/adodb_manual#drivers (http://php.***logs.com/adodb_manual#drivers)

سنعرّج على معظم الاشياء التي ذكرت بشيء من التفصيل ...



عرض السجلات و الادوات الخدمية

سنتكلم الان عن طرق عرض السجلات و عن بعض الادوات الخدمية ....

هنالك عدة طرق لعرض السجلات و هي :
1- استخدام المصفوفة fields في كائن الاستعلام .
2- استخدام دوال جلب السجلات .
3- جلب السجلات دفعة واحدة .

و من الادوات الخدمية :
1- الاستعلام المخزن Cached Query ؟
2- انشاء ارقام الصفحات .
3- عرض السجلات على شكل قائمة منسدلة .
4- معرفة قيمة المعرف التلقائي Auto-increment feild .
5- تصدير النتيجة باشكال مختلفة .

سنفرض أننا انتجنا الكائن و اتصلنا بقاعدة البيانات كالتالي :
Code ..


<?
$db = NewADOConnection($db_type);
$db->PConnect($db_server,$db_user,$db_pass,$db_name)
or display_error('مشكلة في مزود القاعدة');
?>






طبعا قيم المتغيرات أتت من مكان ما ، مثل ملف إعدادات أو فورم .. الخ


عرض النتائج : المصفوفة fields

كما ذكرنا .. فانك عندما تقوم بعمل استعلام كالتالي :
Code ..


<?
$students = $connection->Execute("select name, email,
parent_tel from student ");
if(!$students){die('لا يوجد طلاب');}
?>






فإن النتيجة التي ترجع عبارة عن كائن ، يمكنك فوراً أن تري أول السجلات و ذلك بقراءة المصفوفة fields داخله :
Code ..


<?
echo $students->fields;
?>






كما هو معلوم فإن المصفوفات في الـ PHP إما أن تكون رقمية أو إسمية أو مختلطة ( أي إسمية و رقمية في نفس الوقت ) ، إذا أردنا أن تكون هذه المصفوفة رقمية فان علينا استخدام الدالة SetFetchMode في كائن الاتصال قبل عمل الاستعلام ... كالتالي :
Code ..


<?
$db->SetFetchMode(ADODB_FETCH_NUM);
?>






ثم القيام بالاستعلام :
Code ..


<?
$students = $connection->Execute("select name, email,
parent_tel from student ");
if(!$students){die('لا يوجد طلاب');}
?>






و يمكنك جلب عدد معين من السجلات تبدأ من موضع معين باستخدام SelectLimit فمثلاً لجلب عشرة سجلات بعد السجل الخامس .. استعمل :
Code ..


<?
$students = $connection->SelectLimit("select name, email,
parent_tel from student ",5,10);
if(!$students){die('لا يوجد طلاب');}
?>






ثم عرض النتائج :
Code ..


<?
while(!$students->EOF){
echo "
الاسم ".$students->fields[0]."
البريد ".$students->fields[1]."
هاتف الاب".$students->fields[2];
//هذه مهمة للانتقال الى السجل التالي
$students->MoveNext();
}
?>






EOF تخبرنا هل وصلنا الى آخر سجل في سجلات النتائج أم لا ، عندما نصل الى آخر سجل فإن قيمته ستكون واحد .

أما اذا أردنا أن تكون المصفوفة اسمية فعلينا التالي :
Code ..


<?
$db->SetFetchMode(ADODB_FETCH_ASSOC);
?>






ثم القيام بالاستعلام :
Code ..


<?
$students = $connection->Execute("select name, email,
parent_tel from student ");
if(!$students){die('لا يوجد طلاب');}
?>






و عرض النتائج :
Code ..


<?
while(!$students->EOF){
echo "
الاسم ".$students->fields['name']."
البريد ".$students->fields['email']."
هاتف الاب".$students->fields['parent_tel'];
//هذه مهمة للانتقال الى السجل التالي
$students->MoveNext();
}
?>






أو طريقتي المفضلة :
Code ..


<?
while(!$students->EOF){
extract($students->fields);

echo "
الاسم : $name
البريد : $email
هاتف الاب : $parent_tel";

//هذه مهمة للانتقال الى السجل التالي
$students->MoveNext();
}
?>






بالامكان أيضاً أن تكون المصفوفة مختلطة يمكنك التعامل معها على أنها اسمية او رقمية .. كالتالي :
Code ..


<?
$db->SetFetchMode(ADODB_FETCH_BOTH);
?>






إذا لم تحدد نوع المصفوفة في سكربتك فإن نوع النتيجة سيعتمد على نوع نظام قواعد البيانات .. في MySql سيكون مصفوفة مختلطة .

ينصح دليل هذا الكائن أن نستعمل ADODB_FETCH_ASSOC أو ADODB_FETCH_NUM لان الكثير من المشغلات لا تدعم ADODB_FETCH_BOTH .


عرض النتائج : دوال جلب السجلات

في الطريقة السابقة استخدمنا مصفوفة لجلب السجلات و اضطررنا الى استخدام الدالة MoveNext في كائن النتيجة للانتقال الى السجل التالي ، لكن في هذا القسم سنرى بعض الدوال التي تجلب سجلات النتيجة ، و سنرى أن بعضها يقوم بالانتقال تلقائيا ...

1- الدالة : FetchRow .
تقوم بارجاع السجل على شكل مصفوفة و الانتقال الى السجل الذي يليه ... ترجع صفراً إذا كانت عند نهاية السجلات :
Code ..


<?
while($row = $students->FetchRow()){
extract($students->fields);

echo "
الاسم : $name
البريد : $email
هاتف الاب : $parent_tel";
}
?>






هذه هي الطريقة المشهورة لاغلب المبرمجين .

2- الدالة : FetchNextObject .
ترجع الدالة السجل الحالي على شكل كائن و تنتقل الى السجل الذي يليه ... ترجع صفراً إذا كانت عند آخر سجل :
Code ..


<?
while($row = $students->FetchNextObject()){

echo "
الاسم ".$row->name."
البريد ".$row->email."
هاتف الاب".$row->parent_tel;
}
?>






3- الدالة : CurrentRow .
وهي ترجع رقم السجل الحالى :
Code ..


<?
while($row = $students->FetchNextObject()){
echo "رقم تسلسلي".$students->CurrentRow();
//هذا ليس افضل استعمال :-)
echo "
الاسم ".$row->name."
البريد ".$row->email."
هاتف الاب".$row->parent_tel;
}
?>



عرض النتائج : جلب السجلات كاملة

بامكانك جلب السجلات دفعة واحدة بطريقتين :
الاولى : تنفيذ الاستعلام عن طريق الدالة GetAll في كائن الاتصال عوضا عن Execute :
Code ..


<?
$students = $connection->GetAll("select name, email from student ");
if(!$students){die('لا يوجد طلاب');}
?>






هنا $students ليست كائناً كما سبق ، و إنما مصفوفة ذات بعدين ... مثل :
Code ..


<?
array(2) {
[0]=>
array(2) {
[0]=>
string(5) "ahmad"
[1]=>
string(24) "ahmad@example.com"
}
[1]=>
array(2) {
[0]=>
string(4) "ali"
[1]=>
string(10) "ali@example.com"
}
}
?>






و بالامكان عرضها باستخدام foreach مع list كالتالي :
Code ..


<?
$students=$db->GetAll('select name,address from student')
or display_error('لا يوجد طلاب في الحلقة','طلاب الحلقة','لا يوجد طلاب');

foreach ($students as $student){
list($name,$email)=$student;
echo "$name < $email > <br>";
}
?>






عندما تستخدم هذه الطريقة فإن الاستعلام يُلغى تلقائياً و تعاد اليك المصفوفة - أو صفر في حالة الخطأ - لذلك يجب ان تستعمل الدالة sizeof لمعرفة عدد السجلات المرجعة .

الطريقة الثانية هي استخدام الدالة GetArray في كائن الاستعلام - انتبه ليس كائن الاتصال - و هي تعيد كذلك مصفوفة ذات بعدين ، الفرق أن كائن الاتصال مازال موجوداً و بامكانك استعماله ... كالتالي :
Code ..


<?
$students=$db->Execute('select name,address from student')
or display_error('لا يوجد طلاب في الحلقة','طلاب الحلقة','لا يوجد طلاب');

$students_list = $students->GetArray();
foreach ($students_list as $student){
list($name,$email)=$student;
echo "$name <$email> <br>";
}
echo "عدد الطلاب".$students->RecordCount();
?>






بامكانك إرجاع عدد معين من الصفوف فقط :
Code ..


<?
$students=$db->Execute('select name,address from student')
or display_error('لا يوجد طلاب في الحلقة','طلاب الحلقة','لا يوجد طلاب');

$students_list = $students->GetArray(2);
foreach ($students_list as $student){
list($name,$email)=$student;
echo "$name <$email> <br>";
}
echo "عدد الطلاب".$students->RecordCount();
?>






تطبع الدالة أول سجلين ... لاحظ ان RecordCount ستطبع العدد الكلي و ليس 2 .

Bakenam
04-03-2009, 10:35 PM
الادوات الخدمية : الاستعلام المخزن

بعض الاستعلامات نقوم بها كلما طلبت الصفحة مثل عدد الاعضاء في موقع معين ، كلما فتح أحدهم الموقع قام البرنامج بعمل الاستعلام ، مع أنه قد تمضي الساعات دون أن يسجل أحد جديد في الموقع ... اضرب هذا في عدد زوار الموقع .... لاشك إذاً أن تلك الاستعلامات كانت بلا فائدة لان عدد الاعضاء لم يتغير ..

هنا تاتي فكرة تخزين قيمة الاستعلام لفترة معينة ... خلالها لن يقوم البرنامج بالاستعلام من المزود و إنما سيقرأ نتيجة الاستعلام من ملف على الموقع ، وبهذا نقلل من عدد الاستعلامات المنفذة .

دعنا نفترض الان أن لدينا موقعا و نريد عرض الطلاب ... لنفرض انك يوميا تتلقى 12 عضواً أي بواقع نصف عضو تقريباً في الساعة http://www.traidnt.net/vb/images/smilies/cupidarrow.gif ، لكن الصفحة تطلب يوميا 5000 مرة ... إذاً دعنا نخزن قيمة الاستعلام لمدة مثلا 20 دقيقة ...

كل ما عليك هو أمرين : أخبر ADOdb أين تخزن الملفات المؤقتة و استعمل الدالة CacheExecute بدلا من Execute و باقي السكربت يظل عادياً :
Code ..


<?
$ADODB_CACHE_DIR="./cache/";
$students=$db->CacheExecute(1200,'select name,address from student');

while($row = $students->FetchRow()){
extract($students->fields);
echo "
الاسم : $name
البريد : $email
هاتف الاب : $parent_tel";
}
?>






CacheExecute تاخذ قيميتين : الاولى عدد الثواني التي سنخزن نتيجة الاستعلام فيها ، والثاني هو الاستعلام نفسه ، كل اوامر الاستعلام التي مرت معنا مثل SelectLimit و GetAll لها دوال تخزن النتيجة مثل CacheGetAll و CacheSelectLimit .




الادوات الخدمية : انشاء ارقام الصفحات

بامكانك طبع النتائج مع أدوات للتنقل : "السجل التالي -السجل السابق - آخر سجل - أول سجل" ، فقط تحتاج إلى تضمين الملف adodb-pager.inc.php و إنشاء كائن منه و استعماله كالتالي :
Code ..


<?
include('adodb.inc.php');
include_once('adodb-pager.inc.php');

$db = NewADOConnection($db_type);

$db->PConnect($db_server,$db_user,$db_pass,$db_name)
or display_error('مشكلة في مزود القاعدة');

$result = new ADODB_Pager($db,'select name,address from student');

$result->render(5);
?>






و هذه تخرج النتائج على شكل جدول و في كل مرة تطبع خمسة سجلات كما هو واضح في مناداة الدالة render في الكائن result ، الحقيقة أن هذه الكلاس لا تعطيك التحكم الذي تريده مباشرة ...


الادوات الخدمية : القائمة المنسدلة

احيانا تحتاج ان تصنع قائمة منسدلة لكي يختار منها المستخدم مؤلفاً أو قسماً من أقسام موقعك ... عادة يظهر للمستخدم إسم المؤلف أو إسم القسم لكن النموذج يرجع رقم المؤلف أو القسم في الجدول ... ADOdb تعطيك القدرة على عمل ذلك كما مر معنا ...
Code ..


<?
$students = $db->Execute('select name,id from student');
$menu= $students->GetMenu('stuid');

$search_form = "
<form name='search' method='post' action='stu_search.php'>
ابحث عن <input name='search_for' value=\"$search_for\" >
<input type='hidden' value='do_search' name='action'>
<input type='submit' value='ابحث'>
</form>
<form name=select method='get' action='stu_log.php'>
او اختر احد الطلبة
$menu
<input type=submit value='اعرض التقييمات '>
</form>
";
?>






استخدمنا هنا الدالة GetMenu في كائن الاستعلام ... هذا هو التعريف الكامل لهذه الدالة مع شرح مدخلاتها :
Code ..


GetMenu($name, [$default_str=''],
[$blank1stItem=true], [$multiple_select=false],
[$size=0], [$moreAttr=''])







name$ : اسم القائمة في النموذج أي <select name="?"> .
default_str$ : العنصر الذي سيكون مظللا في البداية ... بامكانك ارسال مصفوفة و عندها يتم تظليل- اي اختيار - جميع عناصر المصفوفة .
blank1stItem$ : هل تريد اول عنصر ان يكون فارغا .
multiple_select$ : هل تسمح باختيار اكثر من قيمة .
size$ : للقائمة HTML عدد العناصر المظهره ... هذه خاصية .
moreAttr$ : خصائص اخرى للقائمة .

كمثال :
Code ..


<?
$menu= $students->GetMenu('stuid','ahmad',1,0,1,
'style="background-color: Beige;"');
?>






و النتيجة :
Code ..


<select name="stuid" size=1
style="background-color: Beige;">
<option></option>
<option value="1">Ali</option>
<option selected value="7">ahmad</option>
<option value="13">Abdulaziz</option>
<option value="14">Masoud Alhasan</option>
<option value="8">Waleed</option>
</select>


الادوات الخدمية : المعرف التلقائي

احيانا تقوم بعملية إضافة في جدول ثم تحتاج قيمة المعرف سواءً للسجل الذي اضيف للتو أو للسجل الذي سيضاف بعده ...

الدالة Insert_ID في كائن الاتصال تمكنك من معرفة قيمة اخر معرف استخدم ... مثال :
Code ..


<?
$db = NewADOConnection($db_type);
//$db_type = 'mysql' in this case ...
$db->PConnect($db_server,$db_user,$db_pass,$db_name)
or display_error('مشكلة في مزود القاعدة');

$student = $db->Execute("insert into student
(id,name)values (\"\",\"mahmood\")");
echo "اخر معرف هو : ".$db->Insert_ID();
?>



الادوات الخدمية : التصدير

بامكانك تصدير نتيجة الاستعلام الى عدة انواع :
1- القيم المفصولة بفاصلة CSV باستخدام الدالة rs2csv .
2- القيم المفصولة بعلامة جدولة باستخدام الدالة rs2tab .
3- جدول HTML باستخدام الدالة rs2html .

هذه الدوال الاثنتين الأُول موجودات في الملف toexport.inc.php والاخيرة في tohtml.inc.php ، لذا يجب عليك تضمين هذه الملفات لتتمكن من استخدام الدوال ، كل ماعليك بعد ذالك هو القيام بالاستعلام و منادة الدالة المناسبة مع تمرير كائن النتيجة لها ...

لنرى امثلة :

التصدير الى CSV :
Code ..


<?
include('adodb.inc.php');
include_once('toexport.inc.php');
$db = NewADOConnection($db_type);
//$db_type = 'mysql' in this case ...
$db->PConnect($db_server,$db_user,$db_pass,$db_name)
or display_error('مشكلة في مزود القاعدة');

$student = $db->Execute("select name, home_tel from student");

echo rs2csv($student);
?>






و النتيجة :
Code ..


name,home_tel
ahmad,888
Abdulaziz,777
Masoud Alhasan,333
Waleed,222






بالامكان إلغاء السطر الأول بتعديل سطر مناداة الدالة الى :
Code ..


<?
echo rs2csv($student,false);
?>






و النتيجة :
Code ..


ahmad,888
Abdulaziz,777
Masoud Alhasan,333
Waleed,222






لمناداة الدالة rs2tab عوضاً عنها غير السطر ذاته الى :
Code ..


<?
echo rs2tab($student,false);
?>






و النتيجة :
Code ..


ahmad 888
Abdulaziz 777
Masoud Alhasan 333
Waleed 222






اخيراً يمكنك التصدير الى جدول HTML ، لكن يلزمك تضمين ملف اخر و هو tohtml.inc.php :
Code ..


<?
include('adodb.inc.php');
include_once('tohtml.inc.php');
$db = NewADOConnection($db_type);
//$db_type = 'mysql' in this case ...
$db->PConnect($db_server,$db_user,$db_pass,$db_name)
or display_error('مشكلة في مزود القاعدة');

$student = $db->Execute("select name, home_tel from student");

echo rs2html($student);
?>






النتيجة :
Code ..


<TABLE COLS=2 BORDER='1' WIDTH='98%'>
<TH>name</TH><TH>home_tel</TH>
<TR valign=top>
<TD>ahmad </TD>
<TD>888 </TD>
</TR>
<TR valign=top>
<TD>Abdulaziz </TD>
<TD>777 </TD>
</TR>
<TR valign=top>
<TD>Masoud Alhasan </TD>
<TD>333 </TD>
</TR>
<TR valign=top>
<TD>Waleed </TD>
<TD>222 </TD>
</TR>
</TABLE>





هنالك العديد من خيارات التصدير الاخرى الموجودة مع هذه الباقة ، اطلع عليها في هذين الملفين السابقين و في دليل الباقة .




مثال عملي

لا شئ يعدل مثال عملي :
عندما أردت تعلم هذه الباقة ، قمت بانشاء سكربت صغير يقوم بحفظ التقييمات في حلق تحفيظ القران الكريم
السكربت من جدولين : الاول للطلاب و الثاني للتقييمات و هي على شكل يومي ..

خزنت للطالب : إسمه و رقم هاتف منزله و رقم هاتف أبيه و عنوانه .
و للتقييم : رقم الطالب - موضع بداية الحفظ - موضع نهاية الحفظ - مستوى الحفظ - موضع بداية المراجعة - موضع نهاية المراجعة - مستوى المراجعة - تاريخ اليوم - ملاحظات .

في السكربت خمسة ملفات :
1- stu_list : قائمة الطلاب و معلوماتهم .
2- stu_manage : إضافة - تعديل - حذف الطلاب .
3- stu_log : التقييمات الخاصة بالطالب .
4- log_manage : اضافة - تعديل - حذف التقييمات .
5- stu_search : محرك بحث بالاسم .... استخدمت فيه كود القائمة المنسدلة الذي ذكرته سابقاً .

يستخدم السكربت FastTemplate كنظام قوالب ... لكني لم استعمله في بعض الاحيان ...

هيئة الجداول موجودة في ملف readme_dbSchema.txt ، و بالامكان تحميله من :
http://www.phpvillage.com/******s/tahfeez.zip (http://www.phpvillage.com/******s/tahfeez.zip)



في النهاية

رأينا في هذا الدرس أهمية تعميم استخدام قواعد البيانات في التطبيقات التي تنشأها ... كما رأينا كيف سهلت لنا باقة ADOdb عمل ذلك ، أيضا رأينا كيف وفرت لنا هذه الباقة خواصاً أخرى مهمة مثل تخزين نتائج و بعض الخدمات الجميلة الاخرى .

Bakenam
04-03-2009, 10:36 PM
دوال IMAP : -


دوال الإتصـال 1
1- الدالة imap_open :
Code ..


integer imap_open(string server, username,
password, int flag);






هذه الدالة تبدأ الاتصال بمزود البريد الإلكتروني وتعيد لك معرف الاتصال الذي ستستخدمه في الدوال الأخرى التي تتطلب معرف الاتصال.
المعطى server هو مزود البريد الالكتروني كما يلي على سبيل المثال :
Code ..


{mail.server.com}INBOX






السطر السابق يمثل الصورة الافتراضية وذلك باستخدام مزود IMAP والمنفذ 25 أما إذا كنت تستخدم منفذ آخر فإنك ستحتاج إلى كتابة رقم المنفذ كالتالي :
Code ..


{mail.server.com:143}INBOX






أما إذا كنت تستخدم نظام آخر للبريد الالكتروني كنظام POP3 يجب عليك كتابته كالتالي :
Code ..


{mail.server.com/pop3:110}INBOX






ومع مزود الأخبار NNTP كالتالي :
Code ..


{mail.server.com/nntp:199}INBOX






أرجو أن يكون واضحاً. وبعد ذلك اسم المستخدم وكلمة السر ، أما المعطى الأخير flag اختياري ويستخدم لتحديد طريقة الاتصال .

2- الدالة imap_popen :
Code ..


integer imap_popen(string server, username,
password, int flag);






هذه الدالة مثل الدالة السابقة مع فرق واحد وهو أن الاتصال هنا لن يقطع إلا باستخدام دالة قطع الاتصال. بمعنىأنه سيظل الاتصال مستمراً لكي تستخدمه في عدة صفحات .


دوال الإتصـال 2

3- الدالة imap_reopen :
Code ..


integer imap_popen(integer streem, string username,
password);






هذه الدالة تعاود الاتصال في حالة قطع الاتصال في حالة بمزود البريد الالكتروني ، في هذه الدالة لن تكتب المزود ولكن ستمرر معرف الاتصال السابق .

4- الدالة imap_ping :
Code ..


boolean imap_ping(integer streem);






هذه الدالة تخبرك فيما إذا كانت الاتصال لازال موجوداً أم أته مقطوع .

5- الدالة imap_close :
Code ..


boolean imap_close(integer streem);






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

هذه هي بعض الدوال التي تيسر ذكرها في هذا الدرس ، وفي نهاية السلسة التي سيتم وضع مثـال شـامل لاستخدام هذه الدوال أو الأهم منها

Bakenam
04-03-2009, 10:38 PM
البريد الاليكتروني في الـ PHP : -


مقدمة
بسم الله الرحمن الرحيم ..

البريد الإلكتروني من اروع خدمات الانترنت, يمكنك بضغطة زر ان تراسل و تتواصل مع احباءك و لو كانوا في الطرف الاخر من الارض ...

و لكن ليس هذا فقط : فالبريد الإلكتروني يعد من أهم الطرق - ان لم يكن الطريقة الوحيدة- التي يتواصل بها أي موقع مع زواره و مستخدميه .. لذلك سوف نرى في هذا الدرس كيف يمكنك تسخير هذه التقنية في مشروعك القادم ...

سيتناول هذا الدرس الامور التالية :

1- دالة ()mail .
2- ارسال نص بسيط .
3- واصفات البريد و وظائفها + زوائد البريد MIME
4- ارسال بريد على هيئة HTML .
5- ارسال رسالة بنسختين : نص و HTML .
6- ارسال ملحقات


الدالة ()mail

تقوم هذه الدالة بارسال بريد الكتروني حسب التعريف التالي :
Code ..


bool mail ( string to, string subject, string message
[, string additional_headers [, string additional_parameters]])






أداء الدالة كالتالي :
- ترسل الدالة الرسالة الموجودة في message الى العنوان او العناوين في to وموضوع البريد هو subject .
- ترجع الدالة صفرا عند الفشل و واحد عند النجاح .
- ترسل الدالة الى اكثر من بريد ... عندها فقط عليك ان تفصل البريد عن الاخر بفاصلة .
- بامكانك ارسال نصوص بسيطة و رسائل اكثر تعقيدا باستخدام هذه الدالة و ايضا بامكانك ارسال ملفات على شكل ملحقات ...
- لا حظ ان القيمة التي ترجعها الدالة لا تعكس هل وصل البريد او لا ... انما تعكس ان PHP استطاعت تمرير طلب الارسال الى مزودالبريد الموجود على الخادم ..

مثال :
Code ..


<?
$people = array('saad@bogus.com','ali@bogus.com',
'mahmood@bogus.com');
$to= implode(',',$people);
$subject="محاضرة مفيدة";
$message="
[الرافضة واليهود والواقع اليوم]
للشيخ سعد البريك
تجدها هنا في اذاعة طريق الاسلام
http://www.islamway.com/bindex.php?section=lessons& (http://www.islamway.com/bindex.php?section=lessons&)
lesson_id=14933&scholar_id=17";
mail($to,$subject,$message);
?>


ارسال نص بسيط

ارسال نص خالي من التنسيق من ابسط الامور عند استخدام الدالة mail كل ما عليك هو وضع النص في متغير و ارساله ... و اليك المثال التالي :
Code ..


<?
$subject='حكم الغناء';
$message='
السلام عليكم ...
احمد ... وجدت فتوى الشيخ ابن باز رحمه الله في تحريم الغناء
بعنوان : الأغاني هل هي حرام أم لا ،
رغم أستماعها بقصد التسلية فقط

راجعها على الرابط
http://www.ibnbaz.com/display.asp?f=bz00500.htm (http://www.ibnbaz.com/display.asp?f=bz00500.htm)

اخوك مفلح
';

mail('ahmad@islamway.net',$subject,$message);
?>






لا حظ أني لم استخدم n\ لوضع سطر جديد ... كل ما عليك هو وضع سطر جديد كما في المثال فهذا يعطي شكلا افضل للكود ... لكن اذا اردت استخدام العلامة n\ تأكد من انك تستخدم علامتي التنصيص المزدوجة( " " ) لا الفردية ( ' ' ) .




واصفات البريد و MIME

واصفات البريد ( Mail Headers ) هي معلومات اضافية تصف البريد ، تعطيك بعض المعلومات عن مصدر البريد , مرسل البريد , إلى من يرسل الرد و غيرها ...
يمكن أن نسميها تحسينات للخدمة الأساسية و التي لا يوجد بها سوى عنوان مرسل البريد , الموضوع , و البريد نفسه...

ومن ذلك نستخلص أن أي بريد إليكتروني يتكون من قسمين :
1) الواصفات . 2) نص الرسالة .

هنالك الكثير من واصفات البريد و بامكانك مراجعة المرجع التالي :
http://www.dsv.su.se/jpalme/ietf/mai...il-headers.txt (http://www.dsv.su.se/jpalme/ietf/mail-headers/mail-headers.txt)

دعنا نرى ما هي واصفات البريد الموجودة و المهمة بالنسبة لنا ...

هذه هي الواصفات التي استقبلها عادة في بريد جواب من رسائل المنتدى :
Code ..


Received: (qmail 62927 invoked by uid 0); 28 Nov 2002 13:17:43 -0000
Received: from nobody@linhost2.interservers.com (nobody@linhost2.interservers.com) by server1.gawab.com
by uid 1004 with qmail-scanner-1.12 (. Clear:. Processed in
0.154407 secs); 28 Nov 2002 13:17:43 -0000
Received: from unknown (HELO linhost2.interservers.com) (209.166.169.200)
by 209.61.185.20 with SMTP; 28 Nov 2002 13:17:42 -0000
Received: from nobody by linhost2.interservers.com with local (Exim 3.36 #1)
id 18HOXw-0000MJ-00 for abomuhammed@islamway.net (abomuhammed@islamway.net);
Thu, 28 Nov 2002 08:17:36 -0500
To : abomuhammed@islamway.net (abomuhammed@islamway.net)
From : support@phpvillage.com (support@phpvillage.com)
Message-Id:
X-Antiabuse: This header was added to track abuse, please include it
with any abuse report
X-Antiabuse: Primary Hostname - linhost2.interservers.com
X-Antiabuse: Original Domain - islamway.net
X-Antiabuse: Originator/Caller UID/GID - [99 99] / [99 99]
X-Antiabuse: Sender Address Domain - linhost2.interservers.com
Date : 28 Nov 2002, 03:17:36 PM
Subject : التبليغ برد على موضوعك - ...........






لاحظ ان الرسالة ليست جزءا من الواصفات ....

أيضاً لاحظ ان شكل ( تركيب ) الواصفة هو : اسم الواصفة ثم ":" ثم القيمة ، إذا احتاجت القيمة لاكثر من سطر فيجب ان تبدأ الاسطر الاضافية بمسافة .
بعض الاحيان قيمة الواصفة هي نص واحد مثل :

Code ..


Content-type : ****/html






و في بعض الاحيان أكثر من نص واحد و عندها يجب ان تفصل القيم بفاصلة منقوطة ، و لتصغير السطر يمكنك كتابته على سطرين كما قلنا و انتبه الى أن السطر الثاني يبدأ بفراغ :

Code ..


Content-Disposition : inline;filename=fatwa.gif,
creation-date="Sat,8 Jan 1997 16:00:00";
modification-date="Wed, 12 Feb 1997 16:29:51






ايضا لاحظ أن كل واصفة على سطر لوحدها .

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

كل واصفة لها دلالة :

Recieved : تحمل هذه الواصفة معلومات عن النقاط في الشبكة التي مر بها البريد قبل ان يصل الى المكان النهائي ... لاحظ وجود اكثر من واصفة من هذا النوع لان البريد قد يمر باكثر من نقطة و كل نقطة تدون معلوماتها .
To : البريد المراد ارسال الرسالة اليه .
From : البريد المرسل .
Message-Id : رمز تعريفي للرسالة يولده البرنامج المرسل و لا يتكرر مع اي رسالة اخرى .
X-Antiabuse : مجموعة معلومات للحيلولة دون ارسال بريد مزعج .
Date : يحدد هذا الواصف متى ارسلت الرسالة .
Subject : يحدد هذا الواصف عنوان الرسالة .

ومن الواصفات الاخرى :
Reply-To : البريد الذي ترسل اليه الردود على هذه الرسالة .
X-Mailer : اسم البرنامج الذي ارسل الرسالة .
MIME-Version : رقم نسخة "امتدادات البريد الاليكتروني متعددة الاغراض" المستخدمة .
Content-Type : النوع الرئيسي و النوع الفرعي للرسالة مثل : ****/html الرئيسي هو **** و الفرعي هو html .
Content-Transfer_Encoding : الترميز المستخدم لارسال الرسالة .

هنالك العديد من هذه الواصفات و معظمها متفق على معانيها ... لكن هنالك واصفات للاستخدام الخاص و هي التي تبدأ بـ -X ...

عندما تستخدم الدالة mail فان بعض هذه الواصفات تولد تلقائيا مثل To اما الاخريات فان بامكانك تحديدها ... ارجع الى تعريف الدالة ستجد ان
المدخل الرابع هو additional_headers وعن طريقه تستطيع تحديد ما يحلو لك من الواصفات ... فقط يجب الفصل بين كل واصفة و الاخرى بـ "n\" ( سطر جديد )
كمثال دعنا نضيف حقلا لـ From و Reply-To في بريدنا السابق .

Code ..


<?
$subject='حكم الغناء';
$message='
السلام عليكم ...

احمد ... وجدت فتوى الشيخ ابن باز رحمه الله في تحريم الغناء
بعنوان : الأغاني هل هي حرام أم لا، رغم أستماعها بقصد التسلية فقط

راجعها على الرابط
http://www.ibnbaz.com/display.asp?f=bz00500.htm (http://www.ibnbaz.com/display.asp?f=bz00500.htm)

اخوك مفلح
';
$header="From: abomuhammed <abomuhammed@islamway.net> \n
Reply-To: abomuhammed@islamway.net (abomuhammed@islamway.net) \n\n";
mail('ahmad@islamway.net',$subject,$message,$heade r);
?>





لاحظ استخدام علامة التنصيص المزدوجة و ليس الفردية لانها تتعرف على علامة السطر الجديد التي ذكرناها مسبقاً وهي n\ .

اذا تعاملنا بشكل سليم مع هذه الواصفات فسوف نتمكن من ارسال رسالة منسقة على شكل HTML و أيضاً سنتمكن من ارسال ملحقات ...

تابع القراءة .....


ارسال نصوص بتنسيق HTML

لكي نرسل رسالة بتنسيق HTML كل ماعلينا فعله هو أن نخبر البرنامج المستقبل أننا نستخدم امتدادت البريد ( أي أن هذا البريد ليس عادياً ) و أيضاً أن نخبره نوع محتوى الرسالة ...... كيف ؟!
سنستخدم الواصفتين : MIME-Version و Content-type
MIME-Version ستأخذ القيمة 1.0 لتخبر ابرنامج المستقبل للبريد اننا نستخدم امتددات البريد النسخة رقم 1.0 .
Content-type ستأخذ القيمة : ****/html و تخبر البرنامج ان الرسالة مكتوبة على شكل HTML .

دعنا نعدل المثال السابق بحيث يصبح الارتباط الى موقع الشيخ ابن باز عبارة عن رابط تشعبي :
Code ..


<?
$subject='حكم الغناء';
$message='
<html>
<body dir=rtl>
<h1>السلام عليكم ...</h1>
<br>
احمد ... وجدت فتوى الشيخ ابن باز رحمه الله في تحريم الغناء <br>
بعنوان : <font color=red> الأغاني هل هي حرام أم لا ،
رغم أستماعها بقصد التسلية فقط</font>
<br>
راجعها على الرابط
<br>
<a href="http://www.ibnbaz.com/display.asp?f=bz00500.htm">
من موقع الشيخ ابن باز رحمه الله</a>
<br>
اخوك مفلح
</body>
</html>
';
$header="From: abomuhammed <abomuhammed@islamway.net> \n".
"Reply-To: abomuhammed@islamway.net (abomuhammed@islamway.net) \n".
"MIME-Version : 1.0 \n".
"Content-type: ****/html ; charset=windows-1256 \n";
mail('ahmad@islamway.net',$subject,$message,$heade r);
?>






سهل ... أليس كذلك ؟!


ارسال رسالة بأكثر من تنسيق

يوجد العديد من برامج البريد غير قادرة على عرض نصوص HTML مثل برنامج pine على اليونكس ... لذلك قد يقال انه من الافضل ارسال رسائل
نصية من غير تنسيق تفاديا لهذه المشكلة ..
الحقيقة هي انه بامكاننا ارسال الرسالة بتنسيق و بدون تنسيق مرة واحدة... نعم سيكبر حجم الرسالة ... لكن تتفادى عدم قرائتها من بعض المستخدمين
و تستفيد من القدرات الموجودة لدى البعض الاخر فتجمل شكل الرسالة ...

لكي نتمكن من ذلك يجب ان نفصل الرسالتين (اي الرسالة النصية العادية و الرسالة بتنسيق HTML ) عن بعضهما و نخبر البرنامج المستقبل عن نوع كل رسالة ...

دعنا نرى كيف تبدو الرسالة عند دمج الرسالتين :

اولا : الواصفات :

Code ..


To: ahmad
From: abomuhammed
Subject: Fatwa about Singing
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="Boundry==587r5rs"






وهنـا بعض النقـاط الجديدة :
Content-type قيمتها multipart/alternative و هذا يعني ان الرسالة مرسلة باكثر من صيغة كل واحده مفصولة عن الاخرى : alternative تعني انه في حال الفشل في عرض احدهما جرب عرض الاخر ... لكنهما لن يعرضا في الوقت نفسه !
و من قيمة هذه الواصفة نرى ان اقسام الرسالة مفصولة بقيمة العنصر boundry و هي Boundry==587r5rs

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

لنرى الان كيف نفصل الرسالتين :
Code ..


<?
$message="
mime message هذه الرسالة تأتيك باكثر من تنسيق او صيغة
--Boundry==587r5rs
Content-type : ****/plain;charset=windows-1256
Content-Transfer-Encoding : 7bit

احمد راجع هذه الفتوى
http://www.ibnbaz.com/display.asp?f=bz00500.htm (http://www.ibnbaz.com/display.asp?f=bz00500.htm)
--Boundry==587r5rs
Content-type : ****/html
Content-Transfer-Encoding : 7bit

<html>
<body dir=rtl>
<h1>السلام عليكم ...</h1>
<br>
احمد ... وجدت فتوى الشيخ ابن باز رحمه الله في تحريم الغناء <br>
بعنوان : <font color=red> الأغاني هل هي حرام أم لا ،
رغم أستماعها بقصد التسلية فقط</font>
<br>
راجعها على الرابط
<br>
<a href=http://www.ibnbaz.com/display.asp?f=bz00500.htm target=new>
من موقع الشيخ ابن باز رحمه الله</a>
<br>
اخوك مفلح
</body>
</html>
--Boundry==587r5rs--";
?>






دعننا نفكك هذه الرسالة :
- تبدأ الرسالة بالجملة التحذيرية "هذه الرسالة تأتيك باكثر من تنسيق او صيغة" و فائدتها انها تعلم المستقبل بان الرسالة في صيغتين في حال فشل برنامجه في عرضهما ... غالبا لن ترى هذه الجملة الا في برامج البريد الاليكتروني القديمة و التي تفشل في فهم آليات البريد الاليكتروني متعدد الاغراض MIME .

- يأتي بعد ذلك الفاصل Boundry==587r5rs و لاحظ انه مسبوق بشرطتين .
- ثم نخبر البرنامج عن نوع الرسالة التالية و طريقة نقلها : بدأنا بالرسالة النصية لذلك وضعنا النوع ****/plain و تشفير النقل 7bit لاحظ السطر الفارغ بعد
واصفات كل قسم .... مهمة جدا !
- بعدها و ضعنا الرسالة .
- ثم الفاصل مسبوقا بشرطتين (Boundry==587r5rs--) .
- ثم اخبرنا البرنامج ان الرسالة التاليه من نوع HTML و ذلك باختيار النوع ****/html و تشفير النقل 7bit .
- و بعدها و ضعنا الرسالة .
- ثم وضعنا الفاصل Boundry==587r5rs مسبوقا بشرطتين و منتهيا ايضا بشرطتين لكي نخبر البرنامج بانتهاء الرسالة المركبة من رسالتين .

وهذا هو الكود كاملا :
Code ..


<?
$subject='حكم الغناء';

$header="To: ahmad <ahmad@acme.com>\n".
"From: abomuhammed<abomuhammed@islamway.net>\n".
"Subject: حكم الغناء\n".
"MIME-Version: 1.0\n".
"Content-Type: multipart/alternative; boundary=\"Boundry==587r5rs\"\n";

$message="this is a mime message -هذه الرسالة تأتيك باكثر من تنسيق او صيغة
--Boundry==587r5rs
Content-type : ****/plain
Content-Transfer-Encoding : 7bit

احمد راجع هذه الفتوى
http://www.ibnbaz.com/display.asp?f=bz00500.htm (http://www.ibnbaz.com/display.asp?f=bz00500.htm)
--Boundry==587r5rs
Content-type : ****/html
Content-Transfer-Encoding : 7bit

<html>
<body dir=rtl>
<h1>السلام عليكم ...</h1>
<br>
احمد ... وجدت فتوى الشيخ ابن باز رحمه الله في تحريم الغناء <br>
بعنوان : <font color=red> الأغاني هل هي حرام أم لا ،
رغم أستماعها بقصد التسلية فقط</font>
<br>
راجعها على الرابط
<br>
<a href=\"http://www.ibnbaz.com/display.asp?f=bz00500.htm target=new\">
من موقع الشيخ ابن باز رحمه الله</a>
<br>
اخوك مفلح
</body>
</html>
--Boundry==587r5rs--";

mail('ahmad@acme.com',$subject,$message,$header);
?>


ارسال ملحقات مع البريد

ارسال الملحقات مع البريد لا يختلف عن ارسال رسالة بصيغتين كما رأينا سابقا ... كل ما علينا عمله هو :
- اخبار البرنامج المستقبل ان الرسالة تحتوي على اجزاء مختلفة النوع : افرض انك سترسل رسالة نصية مع صورة او مقطع صوتي أو ملف وورد ... كل واحد له نوعه الخاص.... و يتم ذلك باعطاء الواصفة Content-type القيمة multipart/mixed ... تذكر اننا اعطيناه القيمة multipart/alternative
في الفقرة السابقة :
- فصل الاقسام المختلفة عن بعضها البعض بفاصل كما مر معنا .
- يجب ان نخبر البرنامج المستقبل كيف يتعامل مع الملحقات ... بعض الملحقات (مثل الصور) يمكن عرضها مع الرسالة و لايلزم ان تظهر كملحق و البعض الاخر يجب ان يعامل كملحق و لايمكن ان يظهر في الرسالة و لهذا سنستخدم واصفة الظهور (لانها تتحكم في ظهور الملحق) Content-Disposition ...
هذا لايلزم البرنامج بان يظهرها كما نحدد انما هو اقتراح منا لكيفية تقديم الرسالة... قد يقبله البرنامج او يرفضه .

شكل هذه الواصفة كالتالي :

Code ..


Content-Disposition ":" disposition-type *(";" disposition-parm)






تمكننا هذه الواصفة من تحديد التالي :
- كيفية التعامل : اظهار الملحق داخليا في الرسالة (dispostion-type قيمته inline) او ان يظهر كملحق عادي خارج الرسالة (dispostion-type قيمته attachment)
- معلومات عن الملف ( disposition-parm ) مثل :
filename : اسم الملف و فيه نقترح اسما للملف اذا اراد البرنامج تخزينه او كتابته لاي ملف و يجب ان يكون حاليا انجليزيا (راجع rfc2183 )
creation-date : الوقت الذي انشء فيه الملف
modification-date : اخر وقت عدل فيه الملف
read-date : اخر وقت تمتفيه قراءة الملف (لاحظ ان المعلومات الثلاث الاخيرة تفقد عند ارسال ملف على الانترنت و هذه هي اهمية هذه الخيارات)
size : حجم الملف

كمثال عند ارسال صورة يمكن ان يكون واصفة الظهور كالتالي :

Code ..


Content-Disposition: attachment; filename=genome.jpeg;
modification-date="Wed, 12 Feb 1997 16:29:51 -0500";






تلاحظ ان الواصفة يمكن ان تكون طويلة ... بامكانك وضعها على اكثر من سطر لكن تأكد من ان كل سطر اضافي يبدأ بمسافة فارغة على الاقل كما ذكرنا .

Code ..


Content-Disposition: attachment; filename=genome.jpeg;
modification-date="Wed, 12 Feb 1997 16:29:51 -0500";






هنالك امور يجب مراعاتها عند ارسال ملحقات و اهمها ان الملفات التي تحتوي بيانات ثنائية Binary Data يجب ان تشفر باستخدام الدالة ****64_encode لكي نتمكن من ارسالها عبر الانترنت اما النصوص العادية فلايلزم تشفيرها ...

لنرى الان كيف نرسل ملحقاً : في المثال الذي ذكرناه لنفرض اننا نريد ايضا ارسال صورة فتوى تحريم الغناء (ملف gif) و نصها (ملف وورد doc) الى احمد ...

اريدك ان ترى انني لا أرسل له رابطا للصورة و لكن ارسل الصورة نفسها !!!

الخطة :
أولاً : نقرأ ملف الصورة و الوورد و نشفره باستخدام ****64_encode و نقسمه الى اجزاء صغيرة باستخدام chunk_split ليوافق التعليمات في rfc 2045 .
ثانياً : نولد فاصلا عشوائيا لكي نستخدمه لفصل الكلام عن الصورة في الرسالة .
ثالثاً : ننشئ واصفات الرسالة العامة بحيث تبين اننا نرسل رسالة ذات انواع مختلفة ...
رابعاً : نولد الرسالة ...

تذكر : نوع mime لصور gif هو image/gif بينما لملفات الوورد هو application/octet-stream .

بسم الله ..

Code ..


<?
// general settings
$gif_name="fatwa.gif";
$doc_name="fatwa.doc";

// قراءة الملفين
$file=fopen($gif_name,'rb'); // لاننا نقرأ ملف ثنائي rb نستخدم
$gif_data=fread($file,filesize($gif_name));
fclose($file);

$file=fopen($doc_name,'rb');
$doc_data=fread($file,filesize($doc_name));
fclose($file);

// تشفير الملف و تقسيمه
$gif_data = chunk_split(****64_encode($gif_data));
$doc_data = chunk_split(****64_encode($doc_data));

// توليد فاصل
$random=md5(time());
$boundry="Boundry==$random";

// توليد واصفات الرسالة
$headers="To: ahmad <ahmad@acme.com>\n".
"From: abomuhammed<abomuhammed@islamway.net>\n".
"Subject: حكم الغناء\n".
"MIME-Version: 1.0\n".
"Content-Type: multipart/mixed; boundary=\"$boundry\"\n";

$message="
this is a mime message -هذه الرسالة تأتيك باكثر من تنسيق او صيغة
--$boundry
Content-type : ****/html
Content-Transfer-Encoding : 7bit

<html>
<body dir=rtl>
<h1>السلام عليكم ...</h1>
<br>
احمد ... وجدت فتوى الشيخ ابن باز رحمه الله في تحريم الغناء <br>
بعنوان : <font color=red> الأغاني هل هي حرام أم لا ،
رغم أستماعها بقصد التسلية فقط</font>
<br>
راجعها على الرابط
<br>
<a href=\"http://www.ibnbaz.com/display.asp?f=bz00500.htm target=new\">
من موقع الشيخ ابن باز رحمه الله</a>
<br>
اخوك مفلح
</body>
</html>

--$boundry
Content-type: image/gif
Content-Transfer-Encoding: ****64
Content-Disposition: inline;filename=\"fatwa.gif\"

$gif_data

--$boundry
Content-type: application/octet-stream
Content-Transfer-Encoding: ****64
Content-Disposition: attachment;filename=\"fatwa.doc\"

$doc_data

--$boundry--";
echo mail('ahmad@acme.com','حكم الغناء',$message,$headers);
?>





جربت هذا الكود على بريدي هوتميل و جواب و أدى المطلوب

Bakenam
04-03-2009, 10:39 PM
صمم موقعك بإستخدام القوالب : -


مقدمة
يعلم الجميع وخصوصاً مطوري المواقع أهمية نظام القوالب والذي أنتشر انتشاراً واسعاً لما له من فوائد كثيرة . حيث يتم باستخدام هذه الطريقة فصل الشفرة البرنامج عن شفرة HTML بمعنى آخر فصل البرنامج عن التصميم . وهذا بدورة يسهل عملية تغيير التصميم بدون المساس بمحتوى الشفرة . وكذلك يسهل هذه العملية عما لو كان التصميم مدمج مع شفرة البرنامج .
لقد قرأت في هذا المنتدى موضوع عن كيفية استخدام القوالب في تصميم المواقع وقام بعض الأعضاء مشكورين بإفادة السائل واشاروا عليه بإستخدام كلاس خاص بهذه المهمة اسمه FastTemplate ، ولقد قمت شخصياً بتحميل هذا الكلاس ولكن لم استطع التعامل معه لتعقيده وبدأت بالبحث عن كلاسات أخرى ، حتى وجدت المطلوب وهو مجموعه تحتوي على ثلاث كلاسات أحدهم للتاريخ والآخر لإرسال البريد والثالث ( وهو موضوعنا هنا ) خاص بالقوالب .

أولاً قم بتحميل الملف بزيارة الموقع الخاص به بالضغط هنا ، اسم الملف vLIB_3-0-10.zip .
قم بفك ضغط الملفات بأي مجلد من اختيارك ، ستجد ملف بإسم vlibIni.php-dist قم بتغيير اسمه إلى vlibIni.php ، هذا الملف يحتوي على متغيرات خاصة بالقوالب وقيم إفتراضية لها ( لا تقم بتغيير أي من تلك المتغيرات ) .

الآن لنقم بتصميم موقع بسيط يحتوي على نظام القوالب :
1- انشئ مجلد جديد وليكن اسمه mysite .
2- انسخ المجلد الخاص بالمجموعه ( Vlib ) داخل هذا المجلد بحيث يصبح عنوانه mysite/vilb .
3- تأكد من ان المجلد السابق ( Vlib ) يحتوي على جميع المجلدات والملفات الخاصة بالمجموعه .
4- انشئ مجلد جديد داخل مجلد mysite لحفظ القوالب به وليكن اسمه templates .


إنشاء ملف القالب

سنقوم الآن بإنشاء القالب للصفحة الرئيسية :
1- انشئ ملف جديد بإسم mainpage.tbl ( يمكنك اختيار أي امتداد غير tbl ولكن يفضل استخدام الإمتداد اللذي تختاره لجميع ملفات القوالب حتى تتفادى المشاكل ) مع التأكد من حفظ الملف داخل المجلد templates .
2- ضع هذه الشفرة داخل ملف القالب :
Code ..


<html dir=rtl>
<head>
<title><tmpl_var name='title'></title>
</head>
<body bgcolor="<tmpl_var name='bg'>">
<tmpl_var name='msg'>
<table border="1">
<tr>
<td>رقم المستخدم</td>
<td>اسم المستخدم</td>
</tr>
<tmpl_loop name='loop1'>
<tr>
<td><tmpl_var name='userid'></td>
<td><tmpl_var name='username'></td>
</tr>
</tmpl_loop>
</body>
</html>





- شرح الكود السابق :
كما تلاحظون بأن الكود السابق هو كود html عادي جداً ، ولكن هناك اوسمه tags جديده وهي :
1- <tmpl_var naem='VAR_NAME'>
2- <tmpl_loob name='LOOP_NAME'>
3- </tmpl_loop>
الوسم الأول خاص بالمتغيرات حيث سيتم إستبداله بقيمة معينه . مثل title سيتم إستبداله بقيمة title كما سنشاهده بعد قليل .

الوسم الثاني خاص بإنشاء دورة تكرارية أما الوسم الثالث فهو لإنهاء الدورة التكرارية ، بمعنى أن ما يكتب بين الوسم الثاني والثالث سيتم تكرارهما على حسب عدد مرات التكرار المطلوبه ( في مثالنا هذا سيتم تكرار كتابة رقم المستخدم واسمه حتى تنتهي البيانات ) .



إنشاء ملف PHP

الآن لننشئ الصفحة الرئيسية وليكن اسمها index.php واحفظها في المجلد الرئيسي للموقع ( mysite ) ، بعد ذلك قم بفتح الملف index.php وضع هذه الشفرة بداخله :
Code ..


<?
// إضافة ملف كلاس القوالب إلى هذا الملف
include("vlib/vlibTemplate.php");
// جلب ملف القالب المطلوب التعامل معه
$tmpl = new vlibTemplate("templates/mainpage.tbl");

// يقوم السطر التالي بتغيير وسم عنوان الصفحة إلى النص المحدد
$tmpl->setVar('title', 'عنوان الصفحة');

// إضافة رسالة إلى القالب
$tmpl->setVar('msg', 'مرحباً بك، هذه معلومات اسماء المستخدمين');

// لنفترض بأن لديك مصفوفه تحتوي على ارقام واسماء المستخدمين
$rows = array();
$rows[] = array('userid' => 1, 'username' => 'Mohammed');
$rows[] = array('userid' => 2, 'username' => 'Ali');
$rows[] = array('userid' => 3, 'username' => 'Khaled Al-Omar');
$rows[] = array('userid' => 4, 'username' => 'Saud Ahmad');
$rows[] = array('userid' => 5, 'username' => 'Mobarak');
$rows[] = array('userid' => 6, 'username' => 'Hashem');

// بدء الدورة مع تحديد الإسم الذي اخترناه في القالب
$tmpl->newLoop('loop1');

foreach ($rows as $row) {
// إضافة بيان واحد إلى القالب
// سيتم التكرار حتى تنتهي البيانات من المصفوفه
$tmpl->addRow($row);
}
// إنهاء الدورة وإدخال البيانات إلى القالب
$tmpl->addLoop();

// طباعة القالب مع المحتويات الجديدة
$tmpl->pparse();
?>





- شرح الكود السابق :
1- يتم في السطر الأول جلب ملف الكلاس الذي سيتم استخدامه في تغيير قيم المتغيرات في القالب .
2- بعد ذلك يتم جلب ملف القالب المراد استخدامه .
3- يتم تعيين قيمة "عنوان الصفحة" بدل الوسم <tmpl_var name='title'> .
4- بـعد ذلـك يتـم تعيـين قيـمة "مرحباً بك ، هذه معلـومات اسماء المتسخدمين" بـدل الوسـم التالي <tmpl_var name='msg'> .
5- يقوم النظام ببدء الدورة .
6- يتم تعيين القيم المدرجة في المصفوفة داخل الدورة الموجودة في القالب بحيث تتكرر حتى نهاية البيانات .
7- في السطر الأخير يتم طباعة القالب بعد تغيير قيم المتغيرات ليظهر بشكله النهائي .

عند فتح الصفحة الرئيسية index.php سيتم جلب القالب وتغيير قيم المتغيرات وطباعة الشكل النهائي ( قم بفتح مصدر الملف الناتج واطلع على شكل شفرة html ، ستلاحظ بأنها نفس الموجودة بالقالب ما عدا تكرار الأوسمه الخاصة بالجدول بعدد ارقام واسماء المتسخدمين ) .

يوجد عدة أمثله ( للتاريخ والبريد والقوالب ) مرفقه مع المجموع تجدونها في مجلد vlib/examles أرجو الإطلاع عليها ومحاولة فهمها وتطبيقها ( خصوصاً أمثلة القوالب ) ، كذلك يوجد شرح وافٍ لأنواع المتغيرات والخواص ( باللغة الإنجليزية ) في الموقع الرسمي للمجموعه وعنوانه هو http://vlib.activefish.com (http://vlib.activefish.com/) .

Bakenam
04-03-2009, 10:40 PM
السلام عليمك ورحمة الله وبركاته

اخواني ان حاب اتعلم هذي اللغه وشده حبي لتعلمي لها جمعت موسوعه وراح اطرحها لتعم الفائدة للجميع ان شاء الله رب العالمين

ويارب انها تحوز على رضاكم اخواني

بسم الله نبدأ : -

::::دروس مبتدئين::::

درس: -

تركيب Apache و PHP و MySQL على Linux



الجزء الاول : Apache
1.1 ما هو الـ Apache ؟

هو برنامج خادم الويب الأكثر شعبيه في العالم طبقاً لدراسة NetCraft *** Server Survey ويمكنك الأطلاع عليها على العنوان التالي :
http://www.netcraft.com/survey/ (http://www.netcraft.com/survey/)

أي برنامج خادم ويب هو عباره عن برنامج يخدم الوثائق والصور و أي ماده أخرى في موقعك الى العالم الخارجي . هو في الاساس برنامج أرسال الملفات . يقبل الطلبات و وينجزها أذا يستطيع .
( الخادم لا يستطيع أرسال صفحة ويب غير موجوده في الموقع )

1.2 لماذا نحتاج إلى Apache ؟

في الأساس يستعمل الـ Apache من قبل شركات الأستضافه لتقديم خدمة إستضافة مواقع الويب .

أيضاً عندما يتعلق الامر بتطوير صفحات الويب المتقدمه مع جانب الخادم والذي يكتب بواسطة PHP مثلاً , أنت سوف تحتاج الى خادم ويب على جهازك الشخصي لكي تقوم بتطوير صفحات موقعك أو مشروعك , بدون الخام أنت لا تستطيع تنفيذ كود الـ PHP , من ناحيه أخر أنت يمكن أن تكتب تطبيقاتك وتقوم بتنفذها من خلال خادم الشركه المستضيف مواقع ويبك لديهم بأستعمال Telnet أو SSH على أي حال هذه الطريقه غير عمليه لسببين :

1 - هو الوقت المستغرق في نقل الملفات والبطئ الناتج من خلال مقدم خدمة الانترنت لديك أو بطى الخادم للمستضيف بالاضافه الى التكلفه الماديه من خلال إتصالك بالانترنت .

2 - هو أسهل كثيراً من خلال وجود نسخه مماثله لموقعك في جهازك . وتستعملها كخادم إنتاج لمشاريعك , وتقوم بنسخها الى موقعك من خلال الـ FTP بعد التأكد من أن الموقع يعمل بشكل صحيح في جهازك .

1.3 حسناً .. أنا مقتنع بما تقول لكن ! كيف أحصل عليه ؟

طبعاً بما أن الـ Apache يمكن تركيبه على أي نظام مثل Windows أو Linux فسوف يكون هذا الدرس مقتصر على نظام Linux لاننا قمنا سابقاً بشرح تركيبه كامل على نظام Windows وتجد الدرس على شكل ملف في المنتدى .

يمكن الحصول عليه من خلال هذا العنوان :
http://www.mysql.com/Downloads/ (http://www.mysql.com/Downloads/)

قم بتحميل أخر نسخه يفضل ذالك .

من خلال الرابط أعلاه يمكنك تحميل النسخ binaries (already compiled, executable versions) أي قابله لتنفيذ بشكل مختصر , يمكنك تحميل هذه النسخه apache_1.3.xx.tar.gz هي ليست الاحدث ولكن الجديد هو الاصدار رقم 2 , لا تقلق فطريقة التركيب واحده لا يوجد أختلاف , بمناسبه xx هو يدل على أخر أصدار منه وهو الافضل لك في تحميله , الان سوف أوضح لكم عملية التركيب خطوه خطوه .

1.4 كيف يمكن تركيبه ؟

أولاً يمكن الحصول عليه من خلال وضع هذا في المتصفح
Code ..

wget http://httpd.apache.org/dist/apache_1.3.xx.tar.gz (http://httpd.apache.org/dist/apache_1.3.xx.tar.gz)





طبعاً xx أخر أطلاق تم أصداره , أو من خلال تحميله من الموقع مباشره بذهاب الى الموقع .

الأن بعد الحصول على الملف يجب علينا فك ضغطه طبعاً سوف نستخدم هذه الامر , لكن قبل هذا يفضل نقل هذا الملف الى المسار التالي : (/usr/local ) .

Code ..

gunzip -c apache_1.3.xx.tar.gz | tar -xvf -





طبعاً هذا الامر سوف يقوم بأنشاء دليل بهذا الاسم apache_1.3.xx توجد به الملفات يمكنك تغيير أسمه أذا أحببت الى apache في هذا الدرس سوف نقوم بتغيير أسمه الى apache , الان سوف ننتقل الى هذا الدليل من خلال هذا الامر طبعاً الذين يتعاملون مع نظام Linux معروف لديهم هذا الامر البسيط وهو للانتقال الى داخل الدليل الخاص بالـ apache

Code ..

cd apache





بعد الانتقال داخل الدليل قم بتنفيذ هذا الامر وهو الخاص بأعداد apache

Code ..

./configure --enable-module=most --enable-shared=max





هذا الجزء
Code ..

--enable-module=most




هو أختياري سوف يقوم بتركيب كل الوحدات الديناميكيه بإستثناء الوحدات الصعبه .

وهذا الجزء
Code ..

--enable-shared=max




لتحميل الوحدات الى الذاكره فقط عندما يحتاج

الان سوف نقوم بتجميع الـ apache من خلال تنفيذ هذا الامر
Code ..

make





لان بعد التجميع سوف نقوم بتنصيبه من خلال هذا الامر
Code ..

make install





الان نستطيع أن نقول لك مبروك على تركيب الـ Apache على نظام Linux

1.5 كيف نقوم بتشغيل Apache ؟

الان لتشغيل الخادم كل ما عليك هو أن تقوم بتنفيذ هذا الامر وهو لتشغيل الـ Apache

Code ..

./bin/apachectl start





ملاحظه : لتنفيذ الامر السابق يجب أن تكون داخل الدليل التالي apache أذا لم تكن داخل هذا الدليل لديك أختيارين أما أن تكتب المسار كامل

Code ..

/usr/local/apache/bin/apachectl start





او الانتقال الى الديل من خلال الامر التالي

Code ..

cd /usr/local/apache





الان بعد تشغيل الخادم سوف نفتح المتصفح ونكتب التالي :
Code ..

localhost أو 127.0.0.1





1.6 كيف نقوم بإعداد Apache ؟

أن ملف الاعداد لـ Apache يسمى httpd.conf ويمكن الوصول إليه من خلال المسار التالي
Code ..

/usr/local/apache/conf





في نظام Linux يوجد أكثر من محرر سهل الاستخدام من أشهرها هو VI طبعاً لن أقوم بشرحه لان أغلب مستخدمين Liunx يعرفون طريقة إستخدامه

الان بعد فتح هذا الملف أبحث عن هذا ServerName وقم بإزالة هذه العلامه من أمامها (#) أذا كان لديك أسم خادم خاص بك أنت يمكن أن تضعه لنفرض أن قريتنا الحبيبه لديها خادم خاص بها نكتب الاتي :
Code ..

ServerName www.phpvillage.com (http://www.phpvillage.com/)





أما أذا لم يكن لديك أسم خادم أنت يمكن أن تضع التالي وهو الافتراضي أعتقد أذا كنت تريد تركيبه على خادم إنتاجك أي جهازك الشخصي .

Code ..

ServerName localhost





أيضاً قم بالبحث عن هذا ********Root سوف تجده بعد ServerName مباشرتاً , هذا الجزء يجب أن يشير الى الدليل الذي سوف تضع به ملفات HTML لإستخدامها هذا الدليل سوف يكون الدليل الرئيسي لخادم ويبك . وهذا مثال

Code ..

********Root "/home/phpvillage/my_***_site"





ملاحظه مهمه : الشرطه يجب أن تكون أماميه مثل هذا ( / )

مثال : لو وضعنا ملف html في هذا المسار /home/phpvillage/my_***_site أسمه example.html سوف نقوم بتصفحه كتالي localhost/example.html

لان بعد عمل التعديلات الازمه مهم جداً جداً أن تقوم بإعادة تشغيل Apache مرى أخر من خلال هذا الامر

Code ..

./bin/apachectl restart





1.7 مصادر Apache على الإنترنت ؟

Apache *** Server ********ation
http://httpd.apache.org/docs/ (http://httpd.apache.org/docs/)

Apache Today
http://apachetoday.com (http://apachetoday.com/)

Apache Week
http://www.apacheweek.com (http://www.apacheweek.com/)


الجزء الثاني : PHP

2.1 ما هي الـ PHP ؟
هي لغة برمجه للويب قويه جداً .. وقد قمنا بكتابة تفصيل عنها في دروس سابقه وأيضاً في المنتدى يمكن الاطلاع عليه لتعرف الكثير عن هذه الغه .

2.2 كيف يمكن الحصول عليها ؟

يمكنك الحصول على ملف PHP من خلال هذا الرابط
http://www.php.net/downloads.php (http://www.php.net/downloads.php)

لاحظ أن هناك أكثر من نسخه للـ PHP يجب أن تختار النسخه التي تخص نظام التشغيل Liunx

كيف يمكن تركيبه ؟

أولاً تأكد أن الـ Apache منصب على جهازك , لان الـ PHP تحتاج الى Apache لتشغيلها .

يمكنك الحصول على الـ PHP بوضع هذا السطر في المتصفح
Code ..

wget http://www.php.net/do_download.php?d...p-4.x.x.tar.gz (http://www.php.net/do_download.php?download_file=php-4.x.x.tar.gz)





أو من خلال الموقع مباشرتاً

الان بعد الحصول على ملف الـ PHP يجب عليك فك الضغط عنه لكن قبل هذا ضع الملف في هذا المسار /usr/local ثم أكتب هذا الامر :
Code ..

gunzip -c php-4.x.x.tar.gz | tar -xvf -





بعد فك الضغط سوف يتم إنشاء مجلد بهذا الاسم php-4.x.x سوف نقوم بتغيير أسمه الى php وهو الافضل في نظري

الان سوف نقوم بإعداد الـ PHP من خلال هذا الامر
Code ..

./configure --with-mysql --with-apxs=/usr/local/apache/bin/apxs





سوف أوضح بعض السطور في هذا الامر

Code ..

--with-mysql




هذا الخيار سوف يقوم بتنشيط دعم الـ MySQL الداخلي

Code ..

--with-apxs




يحتاج PHP لمعرفة موقع أداة إمتداد apxs لكي ينصب نفسه كوحدة Apache ونحن سوف نخبره بالمسار /usr/local/apache/bin/apxs

لكن أذا غيرت مسار تركيب الـ Apache تحتاج الى تغيير المسار . أذا قم شخص بهذا العمل ممكن يضع أستفسار لنرد عليه .

الان لتجميع PHP نقوم بكتابة هذا الامر
Code ..

make





ثم نكتب هذا الامر لتنصيبه
Code ..

make install





مبروك لقد تم التركيب بنجاح الان .

على أي حال بقي شي واحد يجب أن تعمله وهو أن تقوم بنسخ هذا الملف php.ini-dist وتضعه في هذا المسار /usr/local/lib وتقوم بتغيير أسمه الى php.ini هذا سوف يكون ملف إعداد الـ PHP

والامر الذي يقوم بعملية النسخ هو التالي
Code ..

cp php.ini-dist /usr/local/lib/php.ini





2.4 كيف أقوم بإعداد الـ PHP ؟

في نظام Linux كل ما عليك هو أن تقوم بإعادة تشغيل Apache كما فعلنا سابقاً كتالي :
Code ..

/usr/local/apache/bin/apachectl restart





الان قم بإنشاء ملف وضع به هذا الكود وقم بتسمية phpinfo.php
Code ..

<?php phpinfo() ?>




الان قم بحفظ هذا الملف في المجلد الرئيسي لموقعك كما عرفنا سابقاً وقم بتشغيله من المتصفح كتالي
Code ..

localhost/phpinfo.php





2.5 كيف أقوم برفع أداء الـ PHP ؟

أولاً أنت تحتاج الى تحميل Optimizer من خلال موقع zend وبعد الحصول على هذا الملف نقوم بفك الضغط عنه من خلال الامر التالي :
Code ..

gunzip -c ZendOptimizer-1\[1\].0.0-PHP_4.0.4-Linux_glibc21-i386.tar.gz | tar -xvf -





أنا أعرف أن الاسم طويل لكن لا تقلق ممكن تجرب أن تغير أسمه فأنا قمت بفك الضغط بدون تغيير الاسم أي كما هو لذالك لا أحب أن أشوش أفكاركم

الان إنتقل الى داخل هذا الدليل من خلال الامر التالي :
Code ..

cd ZendOptimizer-1.0.0-PHP_4.0.4-Linux_glibc21-i386





الان قم بإنشاء مجلد جديد في هذا المسار /usr/local/lib وقم بكتابة هذا الامر الخاص بإنشاء مجلد جديد

Code ..

mkdir /usr/local/lib/ZendOptimizer





الان قم بنسخ هذا الملف ZendOptimer.so وقم بوضعه في المجلد الجديد الذي قمت بإنشأه قبل قليل من خلال الامر التالي :

Code ..

cp ZendOptimizer.so /usr/local/lib/ZendOptimizer





الان قم بأضافة السطرين التاليين الى ملف الـ php.ini

Code ..

zend.optimizer.optimization_level=15
zend_extension="/usr/local/lib/ZendOptimizer/ZendOptimizer.so"





مصادر الـ PHP على الإنترنت ؟

PHP ********ation
http://www.php.net/docs.php (http://www.php.net/docs.php)

PHPBuilder.com
http://www.phpbuilder.com (http://www.phpbuilder.com/)

About Perl/PHP
http://perl.about.com (http://perl.about.com/)

Zend
http://www.zend.com (http://www.zend.com/)

DevShed - PHP
http://www.devshed.com/Server_Side/PHP/ (http://www.devshed.com/Server_Side/PHP/)



الجزء الثالث : MySQL

3.1 ماهو الـ MySQL ؟

هو خادم قواعد البيانات SQL متعدد المستعملين و متعدد المواضيع وهو سريع جداً

3.2 كيف يمكن الحصول عليه ؟

يمكن زيارت هذا الموقع وتحميل النسخه مجاناً
http://www.mysql.com/Downloads/ (http://www.mysql.com/Downloads/)
قم بتحميل النسخه binaries فهي قابله لتجميع والتنفيذ وتركيبها أسرع كما في نسخة php عندما قمنا بتحميلها وتركيبها . أنت يمكن أن تحميل هذه النسخه mysql-3.23.xx.tar.gz و xx يدل على أخر أصدار

3.3 كيف يمكن تركيبه ؟

يمكن الحصول عليه من خلال المستعرض كما قلنا سابقاً
Code ..

wget http://www.mysql.com/Downloads/MySQL...3.23.xx.tar.gz (http://www.mysql.com/Downloads/MySQL-3.23/mysql-3.23.xx.tar.gz)





او من الموقع مباشرتاً

الان بعد الحصول عليه نقوم بفك الضغط من خلال الامر التالي :
Code ..

gunzip -c mysql-3.23.xx.tar.gz | tar -xvf -





الان سوف يت أنشاء مجلد بهذا الاسم mysql-3.23.xx سوف نقوم بتغيير أسمه الى mysql , الان ننتقل الى داخل هذا المجلد من خلال الامر التالي :
Code ..

cd mysql





الان نقوم بإنشاء مجموعه جديدهبأسم mysql من خلال الامر التالي :
Code ..

groupadd mysql





الان نقوم بإنشاء أسم مستخدم mysql للمجموعة mysql من خلال الامر التالي :

Code ..

useradd -g mysql mysql





الان قم بتنفيذ هذا الامر

Code ..

./configure --prefix=/usr/local/mysql --with-low-memory





سوف أوضح بعض السطور
Code ..

--prefix=/usr/local/mysql





هذا يحدد منطقة التي سوف يركب بها

Code ..

--with-low-memory





هذا يحافظ على عدم فقدان البيانات فعند عدم أستخدامها مهما كانت الذاكر كبيره لديك من المتوقع سوف يستخدمها وهذا ما أعنيه أذا لم تستخدمه

الان نقوم بتحميعه من خلال الامر
Code ..

make





الان نقوم بتركيبه من خلال الامر التالي :
Code ..

make install





ثم أستخدم هذا الامر لتركيب الجداول
Code ..

******s/mysql_install_db





الان قم بتغير ملكية التركيب إلى المستعمل mysql الذي إنشأناه قبل قليل من خلال الامر التالي :

Code ..

chown -R mysql /usr/local/mysql
chgrp -R mysql /usr/local/mysql





3.4 كيف يمكن تشغيله ؟

من خلال هذا الامر يمكنك تشغيل قاعدة البيانات
Code ..

/usr/local/mysql/bin/safe_mysqld --user=mysql &





3.5 مصادر الـ MySQL ؟

Official MySQL Tutorial
http://www.mysql.com/doc/T/u/Tutorial.html (http://www.mysql.com/doc/T/u/Tutorial.html)

Building a Data****-Driven *** Site Using PHP and MySQL
http://www.mysql.com/articles/ddws/ (http://www.mysql.com/articles/ddws/)

MySQL ********ation
http://www.mysql.com/doc/ (http://www.mysql.com/doc/)

SQL Interpreter & Tutorial
http://www.sqlcourse.com (http://www.sqlcourse.com/)

Bakenam
04-03-2009, 10:42 PM
كيف نقوم بإرسال بريد جماعي !!


سنتطرق في هذا الدرس عن كيفية عمل ملف خاص لارسال رساله للاعضاء ...

مثلا في المنتديات الكبيرة مثل ال VBZooM & vBulletin ... هنالك صفحة في الادمن من خلالها يمكنك مراسلة اعضاء المنتدى .. اذا كنت تتمنى ان يكن في برنامجك مثل هذة الميزه تابع الدرس ... http://www.traidnt.net/vb/images/smilies/cupidarrow.gif

أولاً :
قبل البدء يجب عليك التجربة اولا و بعدها التطبيق على برنامجك .. الآن طبق مع الدرس للتجربه فقط لكي تستطيع تصليح اخطائك ...

يجب ان يكون لدينا جدول في قاعدة البيانات يحتوي على الايميلات .. لنفترض ان لدينا جدول Mail ...
Code ..


CREATE TABLE Mail (
id int(9) NOT NULL auto_increment ,
email blob NOT NULL ,
primary key (id));





حسناً هذا هو الجدول الذي سنحتاجه في عملنا ... لنضيف 4 ايميلات مثلاً :
Code ..


INSERT INTO Mail(id , email)
VALUES('NULL' , PhpVillage@microsoft.com (PhpVillage@microsoft.com));
INSERT INTO Mail(id , email)
VALUES('NULL' , PhpVillage@yahoo.com (PhpVillage@yahoo.com));
INSERT INTO Mail(id , email)
VALUES('NULL' , PhpVillage@hotmail.com (PhpVillage@hotmail.com));
INSERT INTO Mail(id , email)
VALUES('NULL' , PhpVillage@PhpVillage.com (PhpVillage@PhpVillage.com));





الآن اصبح لدينا جدول يحتوي على 4 ايميلات .. و نعتبرهم القائمه البريدية التي سنطبق درس اليوم عليها ....

بعد الانتهاء من تعبئة البيانات نقوم بفتح ملف PHP جديد و نسميه مثلا MailList.php .. سنستخدم بإذن الله الدالة mail في هذا الملف ...

الآن نحتاج إلى الاتصال بقاعدة البيانات و استخراج الايميلات من الجدول ... بواسطة هذا الكود ....
Code ..


<?
//هنا الاتصال بقاعدة البيانات و لا تنسى تغيير المعلومات
mysql_pconnect("localhost", "user", "pass") or die (mysql_error());
//هنا اختيار قاعدة البيانات Mailist
mysql_select_db ("Mailist");
?>





حسناً الآن و قد قمنا بالاتصال بقاعدة البيانات و اخترنا قاعدة البيانات التي تحتوي على جدول الايميلات ... تبقى علينا ان نقوم بإستخراج المعلومات او الايميلات من الجدول ... بواسطة هذا الكود ...
Code ..


<?
//هنا نقوم بطلب المعلومات من الجدول ...
$Select = mysql_query("SELECT * FROM Mail");

//هنا نقوم بإستخراج المعلومات لاستعمالها
while ($row = mysql_fetch_array($Select)) {

/* $to هنا نقوم بتحديد قيمه للمتغير
و هي جميع الايميلات الموجوده في الجدول*/
$to = $row[Mail];

//هذا السطر يبدأ بإرسال الايميلات
$Send = mail($to, "PHPVillage.com" ,"Welcome All To PHPVillage");
}

//و اخيرا التحقق اذا تم الارسال بنجاح !!
if ($Send) {
echo "تم إرسال الرسائل بنجاح !!";
}
else {
echo "هنالك خطأ : لم يتم ارسال الرسال";
}
?>





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

ملاحظه مهمة : الداله mail لا تعمل في السيرفر الشخصي إلا باستخدام أحد البرامج التي تسمح بذلك ..

Bakenam
04-03-2009, 10:43 PM
كيف تصنع دالة خاصة بك


كتـابة الدوال
الدرس الأول : كيفية صنع دالة خاصة بك ..
الدالة هي ما يسمى بالـ Function و لها عدة فوائد منها تصغير الكود البرمجي و التسهيل عليك من كتابة بعض المهام التي تتكرر باستمرار و غيرها كثير ..

شروط عمل دالة خاصة بك :
1 - أن تكون الدالة غير موجودة مسبقاً ، لأنها لو كانت موجودة فعلاً فليس هناك سبب يدعوا لتكرار الجهد ، بل يمكنك إستخدام الدوال الجاهزة في دليل الـ php.net ..
2- لا يمكن أن يبدأ اسم الدالة بعدد .

صنع الدالة أمر سهل مثلا ، وكمثال على ذلك قم بإنشـاء ملف وليكن إسمه Function.php ، ولتكن محتوياته كالتالي :
Code ..


<?
Function Mr_Muslem ( )
{
echo "Mr.Muslem The Muslem Man";
}
?>






نأتي للشرح :
1- ?> ، وسم بداية الكود البرمجي .
2- Function ، أي دالة يجب أن تبدأ بهذه الكلمة وهي كتصريح لبداية الدالة التي نريد تعريفها .
3- Mr_Muslem ، هذا اسم الدالة التي سنقوم بتعريفها ، وتستطيع أن تكتب أي إسم آخر باستثنـاء الدوال المعرفة فعلاً ، ولكن يفضّل أن يكون الإسم دالاً على معنى الدالة ، ليسهل تذكرها عند استدعاءها فيما بعد .
4- } ، بداية الدالة ، فكل ما يكتب بعدها لن يتم تنفيذه مبـاشرة ، بل سيتم ذلك عند استدعاء الدالة .
5- أوامر الدالة وهو كما يلي :
Code ..


<?
echo " Mr.Muslem The Muslem Man ";
?>





هذا السطر الأول من أوامر الدالة ( وهو الوحيد هنا ) ، يقوم هذا السطر بطبـاعة جملة :
Mr.Muslem The Muslem Man
مع ملاحظة أن عملية الطباعة لن تتم قبل أن نستدعى الدالة !

6- { ، وهي علامة نهاية عمل الدالة .
7- <? ، هذا وسم نهاية الكود البرمجي .




إستدعاء الدوال


الآن الجزء الثاني من الدرس كيف يتم إدراج هذه الدالة ، أفتح ملف وسمه Muslem.php ، و أكتب فيه التالي :

Code ..


<?
require_once('Function.php');
Mr_Muslem ( );
?>






نأتي للشرح :
1- ?> ، وسم بداية الكود البرمجي .
2- السطر التالي :
Code ..


<?
require_once('Function.php');
?>





وهذه الدالة ( require_once ) تقوم بإدراج الملف الذي توجد به الدالة التي قمنا بتعريفها في ملف Function.php .

3- السطر التالي يقوم باستدعاء الدالة :
Code ..


<?
Mr_Muslem( );
?>





4- <? ، هذا وسم نهاية الكود البرمجي .

تلاحظ أن جملة Mr.Muslem The Muslem Man قد ظهرت بعد إستدعـاء الدالة ، وهذه هي الفكرة الأسـاسية للدوال مع أن المثـال يعتبر بسيطاً ، لكن الدوال تقوم بأكثر من ذلك بكثير ..

Bakenam
04-03-2009, 10:44 PM
إدراج الملفـات في الـ PHP


مقدمة
بسم الله الرحمن الرحيم والصلاة والسلام على أشرف الانبياء والمرسلين عليه وعلى آله و صحبه أفضل الصلاة والتسليم ، أما بعد ..

لو افترضنـا أن لدينا موقع فيه 10 صفحـات ، كل صفحة تحتوي على صورة للموقع أعلى الصفحة ، وعنـاوين البريد في نهاية الصفحة ، وفي المنتصف تختلف المعلومات المعروضة من صفحة الى أخرى .

عند أي تعديل على محتويات أي صفحة وأقصد هنـا الجزء المتغير ( منتصف الصفحة ) ، سنقوم بالتعديل على نفس الملف وهذا شي طبيعي ، لكن لو أردنا تغيير الصورة أو عناوين البريد المتكررة في كل صفحة فهل من المنطقي أن نقوم بذلك في كل الصفحات ؟

هذا المثـال البسيط يوضح مدى أهمية تنظيم الملفات وعمليات الإدراج ( includes ) ، وقد نختلف في الإجـابة على السؤال إعتماداً على عدد الصفحات التي ذكرتها ، لكن ماذا لو كانت الصفحات بالعشرات أو بالمئـات ؟ بالـتأكيد لن نختلف على الإجـابة .

إذا فالمبرمج المتميز هو الذي يفعل ما يريد بعمليات أقل وبأسطر أقل من غيره ، تقليلاً للحمل على الخـادم ( Server ) ، وتنظيماً للعمل ، وتسهيلاً للتعديل ، وهنـا يجب أن نبين أن عملية تقسيم الصفحة لجزء علوي وأوسط وسفلي ليس هو المقصود فقط ! لكن الكلام هنـا عـام عن أي إدراج لأي ملف ، ليس مهماً أن تراه على الشـاشة ، فبعض عمليات الإدارج نحتاج اليها في مسألة التحقق من هوية الشخص أو رقم الآي بي أو خلاف ذلك .

الـ PHP تقدم دالتين مختلفتين لعملية الإدراج ، الدالة الأولى هي require والثانية هي include ، بإستخدام أي دالة منهن يمكن إدراح أي كود يحتوي على جمل PHP ـ أو نص ، أو HTML ، وغير ذلك من الـ functions ( الدوال المعرفة ) أو الـ classes ( الكائنات ) .

وكنظرة سريعة لمحتويات الدرس ، سنتطرق لما يلي :
- إستخدام دالـة ()require .
- إمتدادات الملفات والإدراج التلقـائي .
- إستخدام دالـة ()include .
- أسـاليب تقسيم الصفحات .

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


إستخدام دالـة ()require

قم بتخزين الكود التالي في ملف php ، وليكن إسمه file1.php :
Code ..


<?
Echo 'تجربة إدراج نص من ملف آخر<br>";
?>





وأيضـاً قم بتخزين الكود التالي في ملف إسمه main.php "
Code ..


<?
Echo "السطر الأول<br>";
Require("file1.php");
Echo "السطر الأخير";
?>




ما نريد الوصول إليه هو أنه عند تنفيذ الملف main.php ستجد أنه يحتوي على 3 جمل بينما لم نكتب إلا جملتين ! ، والذي حدث بإختصـار أن الجملة التي في المنتصف جاءت من الملف الآخر وكانها جزء من الملف main.php ، وهذه هي الطريقة بإختصـار .

لكن عمليات الإدراج عموماً لا تقف على هذه المثـال البسيط ، فإذا كان لديك برنامج يحتوي على عشرة آلاف سطر أو أكثر ، ستجد أنك مجبر على إستخدام هذه الطريقة ، هذا بالإضـافة إلى ما قلناه سـابقاً من أهمية عمليات الإدراج لتنظيم العمل وسهولة التعديل .



إمتدادات الملفات والإدراج التلقـائي


- إمتدادات الملفات :
في الـ PHP لا يتم التحقق من إمتداد الملف ( ما بعد النقطة من الإسم ) إلا في حالة طلب الملف بشكل مبـاشر ، فلو كان لدينا ملف للصفحة الرئيسية مثلاً فيجب أن يكون إمتداده بأحد إمتدادت PHP المعروفة ( php php3 phtml .. الخ ) ، لاننـا نقوم بطلب الملف مبـاشرة ، لكن ماذا لو كان لدينا في ملف الصفحة الرئيسية عدة ملفات مدرجة ، ولتكن ملفين على سبيل المثـال ، file1.php و file2.php ، هنـا يمكن أن نغير في إمتدادات الملفين السـابقين بالشكل الذي يناسبنا ، لذلك نجد أغلب البرامج التي اطلعنا عليها كالمنتديات مثلاً تستخدم إمتدادت مثل .inc ، لكن تأكد من عدم إمكانية الوصول لهذه الملفات كأن تكون في مجلد خاص بالملفات المدرجة ( include مثلاً ) وإلا سيمكن للمستخدم أن يشـاهد الكود الذي كتبته على شكل نص ، وهذا ما لا تريده في ظني ..

ملاحظة يجب التطرق لها ، وهي أنه يجب أن نضع علامات PHP <? و ?> في الملف الذي يتم إستدعاءه بأحد الدالتين ، وإلا سيتم التعـامل معه كنص عادي ويتم طباعته كما هو .

- الإدراج التلقائي :
ببسـاطة يمكنك أن تحدد الملف العلوي ( header ) والسفلي ( footer ) ليتم إدراجهما تلقائياً في أي صفحة في موقعك ، وذلك يتم عن طريق الملف php.ini ، والخيارين هما :
Code ..


auto_prepend_file =
auto_append_file =





الخيـار الأول للملف العلوي أيـاً كان إسمه وعنوانه ، والخيـار الثاني للملف السفلي الذي سيتم إدراجه ، أياً كان إسمه وعنوانه أيضـاً ، ولنرى كيف يمكن تعديل الخيـار على الـ Windows :
Code ..


auto_prepend_file = "C:\Apache\htdocs\include\header.inc"
auto_append_file = "C:\Apache\htdocs\include\footeer.inc"






وعلى الـ Unix كما يلي :
Code ..


auto_prepend_file = "/home/user/include/header.inc"
auto_append_file = "/home/user/include/footeer.inc"






في هذه الحالة سيتم إدراج الملف header.inc الى كافة الملفات التي يتم تنفيذها ، لذا ليس هناك حاجة لإستدعاء أي ملف بالدالة require أو include ، ورأيي أن لا تقوم بإستخدام هذه الطريقة ، لكننا هنا نحـاول أن نتطرق لجميع جوانب الموضوع .

قد لا يسمح لك المستضيف بعملية تحرير لملف الـ php.ini ولذا عليك فتح ملف نصي فارغ وتسميته بـ .htaccess وضع فيه ما يلي :
Code ..


php_value auto_prepend_file "/home/user/include/header.inc"
php_value auto_append_file "/home/user/include/footeer.inc"



إستخدام دالـة ()include

كل ما ذكرناه بالنسبة للدالة require ينطبق على الدالة Include لكن مع بعض الإضـافات البسيطة لدالة Include هي ما يلي :

1- لو كان لدينا شرط يتحقق من قيمة ما ، وبناء على هذه القيمة سيتم إدراج ملف سواء بـ require أو بـ include ، يفضّل هنـا أن يتم إستخدام الدالة include لأنها ستقلل الحمل على المستضيف بمنعى أنه لو كان لدينا الكود التالي :
Code ..


<?
if ($var == 1) {
include("file1.php");
} else {
include("file2.php");
?>





هنا سيقوم مترجم اللغة بتحميل أحد الملفين ومن ثم عرضه متى ما تحقق شرطه ، لكن لو كان لدينا المثـال السابق بإستخدام الدالة require فإن المترجم سيقوم بتحميل الملفين ، ومن ثم يقوم بعرض أحدهما متى ما تحقق الشرط ، وهذا الفرق البسيط في الحمل قد لا يكون هاماً لي ولك ، ولكنه مهم في تصميم مواقع كبيرة نسبياً تتأثر بالحمل الزائد أثناء تنفيذ الصفحة وبالتالي مع أجتماع هذا الحمل قد يشكل فرقاً آن ذاك ..

2- دالة الـ include يمكن أن نسترجع منها قيماً وتسندها إلى متغير آخر ( نجاح أو فشل مثلاً ) ، بينما دالة الـ require لا يمكنها القيـام بذلك ، ولتوضيح الفكرة قم بفتح ملف جديد وأعطه الإسم fp.inc ، واحفظ فيه ما يلي :
Code ..


<?
@$fp = fopen($name, $mode);
if (!$fp) {
echo "يوجد مشكلة في فتح الملف ..";
return 0;
} else {
return 1;
}
?>





وكذلك أفتح ملفاً جديداً وسمه main2.php واحفظ فيه ما يلي :
Code ..


<?
$name = "main.php";
$mode ="r";
$result = include("fp.inc");
if ($result == 1) { echo "تم الوصول الى الملف ..";}
?>





بإفتراض أنك قمت بتطبيق المثـال الأول ، وحفظت الملفين السابقين في نفس المجلد الذي يحتوي على ملف الـ main.php ، عند تنفيذك المثـال السـابق ( أقصد ملف الـ main2.php ) ستجد أن كلمة ( تم الوصول الى الملف ) قد ظهرت لك ، ما يهمني هنا سواء ظهرت نفس الجملة أو الجمل الأخرى ( يوجد مشكلة في فتح الملف ) أن الدالة include قد تفاعلت معنا وقمنا باسترجاع قيمة الشرط فيها والتي تتحكم فيها دالة return ، وقمنا بإسنـادها الى متغير ( في مثالنا كان المتغير هو result$ ) ، بينما دالة الـ require لا يمكن أن تفعل ذلك ، جرب ذلك بنفسك وغير دالة include في ملف الـ main2.php الى require ولن يتم طباعة شي سواء تمت العملية أو لو تتم .


أسـاليب تقسيم الصفحات

كيف يمكن تقسيم الصفحات لتخدم موقعك ؟ هذا السؤال يمكن الإجـابة عليه بسهولة بعدما عرفنا أساليب البرمجة في ذلك ، ولتأكيد المفهوم فإن الغالب في تقسيم الصفحات أن يتم بالشكل التالي :
- ملف يحتوي على مقدمة الموقع والبلوكـات التي على اليمين ويكون إسمه غالباً header .
- ملف يحتوي على البلوكات التي على اليسـار ( إن وجدت ) ويحتوي أيضـاً على تذييل الصفحة ( نهايتها من الأسفل ) .

وهنا يجب أن نتطرق إلى مثـال بسيط لنرى كيف يمكن أن نقسم الصفحة بإستخدام الجدوال وكيف لنا أن نتحكم في هذا التقسيم ، وسأذكر عدة أمثلة مع الكود الخاص بكل مثـال :

1- صفحة تحتوي على عنوان الموقع أعلى الصفحة ، وبلوكـات على يمين الصفحة ، وتحتوي على تذييل الصفحة ( نهايتها ) ، بدون بلوكات على اليسـار ، سيحتوي الكود على ملفين رئيسيين هما header.inc و footer.inc ، وسأبداً بـملف الـ header.inc :
Code ..


<HTML>
<HEAD>
<table width=759 border=1 align=center dir=rtl>
<tr><td>هنا تضع ما تريد أن يظهر في أعلى الصفحة
</td></tr></table>
<table width=759 border=1 align=center dir=rtl>
<tr><td width=139>
هنا تضع البلوكات على اليمين ، كل بلوك في جدول جديد ..
</td>
<td width=620>





الملف الثاني هو footer.inc وسيحتوي على :
Code ..


</td></tr></table>
<table width=759 border=1 align=center dir=rtl>
<tr><td>هنا تضع ما تريد أن يظهر في أسفل الصفحة
</td></tr></table>






بعد ذلك قم بفتح ملف جديد وسمه ( index.php ) وأحفظ فيها ما يلي :
Code ..


<?
Include("header.inc");
Echo "هنا تضع ما تريد أن يظهر في منتصف الصفحة ..";
Include("footer.inc");
?>






ملاحظة : في ملف الـ header.inc حددنا قيمة عرض الجداول بـ 759 ، وهي طريقة من الطرق التي يمكن لنا بها أن نحدد ذلك ، أما هذه الطريقة فتفيد في عدم تأثر شكل الصفحة بدقة الشاشة ، سواء كانت 800×600 أو أكثر ، وأقصد هنا أن شكل الموقع سيبقى ثابت بقيمة معينة ولن يتم توسيع العرض مع إختلاف دقة الشاشة .

الطريقة الأخرى هي وضع العرض بالنسبة المئوية ، وهنا سيتم توسيع العرض على حسب دقة الشـاشة .

2- صفحة تحتوي على عنوان الموقع أعلى الصفحة ، وبلوكـات على يمين الصفحة ويسـارها ، وتحتوي على تذييل الصفحة ( نهايتها ) ، سيحتوي الكود على ملفين رئيسيين هما header.inc و footer.inc ، وسأبداً بـملف الـ header.inc :
Code ..


<HTML>
<HEAD>
<table width=759 border=1 align=center dir=rtl>
<tr><td>هنا تضع ما تريد أن يظهر في أعلى الصفحة
</td></tr></table>
<table width=759 border=1 align=center dir=rtl>
<tr><td width=139>
هنا تضع البلوكات على اليمين ، كل بلوك في جدول جديد ..
</td>
<td width=481>





الملف الثاني هو footer.inc وسيحتوي على :
Code ..


</td>
<td width=139>
هنا تضع البلوكات على اليسـار ، كل بلوك في جدول جديد ..
</td></tr>
</table>
<table width=759 border=1 align=center dir=rtl>
<tr><td>هنا تضع ما تريد أن يظهر في أسفل الصفحة
</td></tr></table>






بعد ذلك جرب نفس الطريقة السـابقة للملف index.php .

هذا كل شي في هذا الدرس ، أتمنى أن يكون مفيداً للجميع ..

Bakenam
04-03-2009, 10:45 PM
إستخدام الـ ******s


مقدمة
تعد الكعكات ( الـ ******s ) من الوسائل المفيدة في انشاء مواقع اكثر تفاعلية ، فبواسطتها ستتمكن من معرفة هل قام المتصفح بزيارة موقعك من قبل ام لا ..

في هذا الدرس سنتعرف على الكعكات و كيف يمكننا استخدامها ...

اقسام الدرس :
1- معلومات عامة .
2- زراعة الكعكات على جهاز العميل .
3- قراءة الكعكات من جهاز العميل .
4- تطبيق : تخصيص لون الخلفية .

المصادر :
http://www.geocities.com/paledu5/issues.htm (http://www.geocities.com/paledu5/issues.htm)
http://totalquality.dubaipolice.gov....nternash36.htm (http://totalquality.dubaipolice.gov.ae/ara/ara_Internet/internash36.htm)
http://urnotalone.8m.com/******s.htm (http://urnotalone.8m.com/******s.htm)
http://www.hotuae.com/et/******s.html (http://www.hotuae.com/et/******s.html)
http://www.free***s.com/paz1/******s.htm (http://www.free***s.com/paz1/******s.htm)
http://www.planet-source-code.com/vb...d=357&lngWId=8 (http://www.planet-source-code.com/vb/******s/ShowCode.asp?txtCodeId=357&lngWId=8)
http://www.devshed.com/Server_Side/PHP/******s (http://www.devshed.com/Server_Side/PHP/******s)
http://www.free2code.net/tutorials/php/******2 (http://www.free2code.net/tutorials/php/******2)


معلومات عامة

- ما هي ملفات الكوكيز ؟
ملفات الكوكيز عبارة عن ملفات نصية ، تقوم المواقع التي تزورها بإيداعها على القرص الصلب في جهازك ، وتحتوي هذه الملفات النصية على معلومات تتيح للموقع الذي أودعها أن يسترجعها عند الحاجة ، أي عند زيارتك المقبلة للموقع .

وتختلف المعلومات التي تخزن ضمن ملفات الكوكيز من موقع لآخر ، ولكن ليس بإمكان هذه المواقع استرجاع أي معلومات إضافية عنك أو عن جهازك ، باستثناء تلك المعلومات المخزنة في الملف النصي الخاص بها ، والتي تم إرسالها من قبل الموقع ، وبذلك لا تستطيع هذه المواقع الاطلاع على مضمون ملفات الكوكيز الأخرى ، أو أي ملفات خاصة على جهازك .

- كيف يتم إيداع ملفات الكوكيز على جهازك ؟
يرسل المتصفح ، عند إدخالك عنوان موقع في شريط العناوين ، طلباً إلى الموقع الذي حددته ، متضمناً عنوان IP الخاص به ، ونوع المتصفح الذي تستخدمه ، ونظام التشغيل الذي يدير جهازك . تخزّن هذه المعلومات في ملفات خاصة بالمزود Log Files ، ولا علاقة للكوكيز بالمعلومات التي يتم إرسالها . وفي الوقت ذاته يبحث المتصفح عن ملفات كوكيز ، التي تخص الموقع المطلوب ، فإذا وجدها يتم إرسالها مع طلب مشاهدة الموقع ، وإذا لم توجد ، فإن الموقع سيدرك أن هذه زيارتك الأولى إليه ، فيقوم بإرسال ملفات الكوكيز إلى جهازك لتخزن عليه .

وبإمكان الموقع تغيير المعلومات الموجودة ضمن ملفات الكوكيز أو إضافة معلومات جديدة كلما قمت بزيارة الموقع . يتم تخزين بعض ملفات الكوكيز في الذاكرة فقط ، بحيث يجري حذفها مباشرة عند إغلاقك المتصفح ، ولكن معظمها وتسمى "ملفات الكوكيز المثابرة"، يتم تخزينها لفترة محددة على القرص الصلب لحين انتهاء صلاحيتها وقد تدوم صلاحيتها مدة أشهر أو حتى سنوات . أما بعض ملفات الكوكيز التي تعرض تاريخ صلاحية لتاريخ سابق ، فإنها تُحذف مباشرة ولا تُخزَّن على قرصك الصلب . وتعود المعلومات المخزنة في ملفات الكوكيز إلى مزودات الموقع الذي أصدرها فقط ، وقد تعمم بعض الشركات الكبرى ملفات الكوكيز التي تصدرها على جميع مزوداتها ، لتنسيق المعلومات المتضمنة ، ولكي لا تصدر كل من مزوداتها ملفات كوكيز للمستخدم ذاته ، عند زيارته لصفحات مختلفة في الموقع .

----- [ معيلق]

- مكونات ملف الكوكيز :
يتكون عادة من عدة اجزاء هي اسم الملف ، قيمته ، تاريخ انتهاء مفعوله ، الموقع المالك له ...


زراعة الكعكات على جهاز العميل

أولا : كيف تزرع ملفات الكعكات :
يتم ذلك باستخدام الدالة set****** و تعريفها بالشكل التالي :
Code ..


boolean set****** ( string name [, string value [, int expire
[, string path [, string domain [, int secure]]]]])






تهمنا المدخلات الثلاث الاولى و هي :
name : اي اسم الكعكة ... فبامكانك ارسال اكثر من كعكة الى متصفح واحد و عندها يصبح الاسم هو الطريقة الوحيدة للتمييز .

value : القيمة ... فقط قيم نصية ... لا يمكنك وضع مصفوفة كقيمة و هذا أامر مهم ... لكن انتبه بامكانك وضع مصفوفة لكن بطريقة اخرى ... ؟ كيف ؟ : استخدم الدالة serialize لتحويل اي متغير في بي اتش بي الى شكل نصي و من ثم استخدم unserialize لاعادته الى الشكل الطبيعي .

expire : اي عدد الثواني من بدية عصر اليونكس ( 1 يناير 1970 ) و التي بعدها سيقوم المتصفح على جهاز المستخدم بحذف الكعكة ... و هنا ثلاث حالات :
--> أولاً : أن يكون الوقت المعطى كمدخل اكثر من الوقت الحالي على جهاز العميل و عندها تخزن الكعكة على جهاز العميل و تحذف عند انقضاء المدة .
--> ثانياً : أن يكون الوقت المعطى كمدخل اقل من الوقت على جهاز العميل و عندها لا يقوم المتصفح على جهاز العميل بتخزينها و اذا وجدت كعكة بنفس الاسم فانه يحذفها حتى لو لم تنتهي المدة .
--> ثالثاً : إذا لم تحدد وقتا فان الكعكة تخزن في ذاكرة المتصفح و تفقد حالما يغلق المستخدم الموقع .

مثال :
Code ..


<?
set******('site','http://www.albrhan.com/',time()+3600);
?>





من الدوال المفيدة دالة time و التي ترجع الوقت الحالي على شكل عدد الثواني من بداية عصر اليونكس (1 يناير 1970) .

ثانيا كيف تحذف او تعدل كعكة:
لكي تحذف كعكة عليك أن ترسل كعكة بنفس الاسم و خالية القيمة و ذات وقت اقل من الوقت على جهاز المستخدم

مثال :
Code ..


<?
set******('site','',time()-360000);
?>






ملاحظات :
1- عندما تحدد زمنا ماضياً اجعله قيمة كبيرة لكي تتفادى فارق التوقيت بين الخادم و العميل .
2- لكي تعدل أي كعكة عليك حذفها و إرسالها من جديد .

ملاحظة مهمة :
يجب ان تستدعي الدالة set****** قبل أن ترسل اي شيء الى المتصفح .. فمثلا الكود التالي لن ينجح :
Code ..


<html>
<body>
<?
set******('site','islamway.net',time()+20000);
echo " Alfjr.com : the best islamic forum";
?>
</body>
</html>





بل لو كان هنالك مجرد سطر فارغ قبل علامة البداية ?> فلن تعمل الدالة set****** ...

المثال السابق كان من الممكن ان يكون :
Code ..


<? set******('site','islamway.net',time()+20000);
?>
<html>
<body>
<? echo " Alfjr.com : the best islamic forum"; ?>
</body>
</html>



قراءة الكعكات من جهاز العميل

- كيف تستقبل المتغيرات من الكعكة :
كما قلنا بانه بامكانك ارسال اكثر من كعكة الى متصفح واحد ..
عندما يطلب المستخدم من متصفحهِ صفحة على موقعك فان المتصفح يقوم بارسال جميع الكعكات التي قمت انت بزراعتها عند المستخدم ... PHP تسهل عليك قراءة هذه الكعكات و تخزنها في مصفوفة اسمها ******_$ و هي مصفوفة من النوع Associative Arrays بحيث ان المفتاح هو اسم الكعكة و القيمة قيمة الكعكة كما ارسلتها .

مثال :
Code ..


<?
echo $_******['site'];
?>






و هذه تطبع :
Code ..


islamway.net



تطبيق : تخصيص لون الخلفية

كمثال بسيط دعنا نقوم بانشاء موقع مبسط و نستخدم الكعكات لكي نحفظ لون الخلفية المحببة الى الشخص ..

- ماذا لدينا ؟
1- الملف user.php : يقوم الملف بعمليتين :
--> الاولى : تحديد اللون الذي اختاره الزائر .
--> الثانية : عرض نموذج اختيار الللون و حفظ اللون المختار

2- الملف index.php إحدى صفحات الموقع و التي تستفيد من خدمات الملف user.php .

وإليك الكود الخاص بكل ملف :
1- الملف user.php :
Code ..


<?
/*-----------------------
******s-****d Background Selector..
Created By : "abomuhammed"<abomuhammed@islamway.net>
For : PHPvillage.com
-------------------------*/

function display_form(){
?>
<html>
<body>
<!-- Color setting Form -->
<form name=color_select method="GET">
<INPUT type="hidden" name="do" value="set_color">
<INPUT name="color" type="****" value="
<? echo get_color(); ?>">
<INPUT type="submit" value="احفظ اللون">
</FORM>
<!-- Color Clearing Form -->
<form name=color_clear method="GET">
<INPUT type="hidden" name="do" value="clear_color">
<INPUT type="submit" value="لا تتذكر لوني المفضل">
</FORM>
<?

}

function set_color(){
global $_GET;
set******('color',$_GET['color'],time()+36000);
header('Location:index.php');

}

function get_color(){
global $_******;
if(isset($_******['color'])){
return $_******['color'];
}else{
return "#FFFFFF";
}
}

function clear_color(){
set******('color',$_GET['color'],time()-36000);
header('Location:index.php');
}

// selection

if ($do=='display_form'){
display_form();
}elseif ($do=="set_color"){
set_color();
}elseif ($do=="clear_color"){
clear_color();
}
?>






- الدالة الاولى display_form تقوم فقط بعرض نموذج اختيار اللون .
- الدالة الثانية set_color تقوم بحفظ اللون المختار في كعكة و ترجع المستخدم الى الصفحة الرئيسية .
- الدالة الثالثة get_color ترجع قيمة اللون من الكعكة و اذا لم يكن هنالك قيمة فانها ترجع لون افتراضي وهو الابيض .
- الدالة الرابعة clear_color تقوم بمسح الكعكة بالطريقة التي ذكرناها في الدرس .

2- ملف الـ index.php :
ملف عادي جداً الا انه يطلب الدالة get_color من ملف user.php كما يلي :
Code ..


<html>
<BODY bgcolor="<? include('user.php');
echo get_color() ?>">
<h1>مرحبا بك .....</h1>
<br>
يمكنك تخصيص لون الخلفية من هنا
<br>

<a href="user.php?do=display_form"> صفحة تخصيص اللون</a>
</body>
</html>

Bakenam
04-03-2009, 10:46 PM
نـقل قواعد البيـانات


في البداية قم بفتح قاعدة البيانات التي تريد نقلها من نفس الموقع عن طريق لوحة التحكم الخاصة بموقعك وبالتحديد من الـ phpmyadmin ، ستشـاهد صفحة مقسمة الى قسمين الأولى على اليمين والثانية على اليسار فيها اسم قاعدة البيانات قم بالضغط عليه ، ستشـاهد في يمين الصفحة قائمة بالجدوال الموجودة في قاعدة البيـانات التي قمت باختيـارها ..

في مثالنا هنا سنقوم بشرح طريقة نقل قاعدة بيـانات منتدى الـ VB الشهير ، لذلك ستجد مجموعة كبيرة من الجدوال تقريباً 49 جدولاً ، ولإن القاعدة ستكون كبيرة نسبياً سنقوم بتخفيف بعض البيـانات منها فسنقوم بالتـالي :

تفريغ الجداول التـالية ( عن طريق فتح الجدول واختيـار Empty ) ..
1- adminlog
2- search
3- searchindex
4- word

لكن تأكد من أن الجدول المذكورة فقط قد تم مسح البيـانات التي فيها لأن أي بيـانات أخرى في جداول المنتدى الأخرى سيسبب مشكلة في نقله ..

بعد تفريغ الجدوال قم بالرجوع الى الصفحة التي يتم استعراض جميع الجداول فيها ، وستجد أسفل الصفحة العنوان التـالي View dump (schema) of data**** وبجانبه الخيـارات التـالية
1- Structure only
2- Structure and data
3- Data only

قم باختيار الخيار الثاني Structure and data .

بعد ذلك ستجد أسفل المربع الأبيض الذي يحتوي على اسماء الجداول الخيـارات التـالية :
1- Add 'drop table'
2- Complete inserts
3- Extended inserts
4- Use backquotes with tables and fields' names
5- Save as file

قم بوضع الاختيـار على الخيـار الأخير وهو حفظ بيانات قاعدة البيانات في ملف خارجي Save as file . في النهاية إضغط على Go وأختر الإسم المناسب الذي تراه وانتظر تحميل كامل الملف ..

الآن إذهب الى الموقع الجديد الذي تريد ان تنقل قاعدة البيانات اليه ، على سبيل المثـال http://www.123.com (http://www.123.com/) ، ستقوم بالتأكيد بعملية تركيب جديدة للمنتدى عن طريق الـ install ، ما يهمنا هنا هو طريقة استرجاع قاعدة البيانات التي قمنا بحفظها في ملف sql الى الموقع الجديد ، كل ما عليك فعله هو فتح الـ phpmyadmin في الموقع الذي تريد أن تنقل القـاعدة اليه ، وتقوم بما يلي :

إذهب الى قاعدة البيانات التي تم انشـاءها بعملية الـ install وستجد أن أغلب الجدوال فارغة ، قم بتحديد كافة الجداول وأختر delete او drop لكن تأكد أنك في قاعدة البيـانات الصحيحة التي تريدها ، بعد عملية الحذف ستجد في الأسفل مربع فارغ وتحته زر Browse ، قم بالضغط عليه واختر الملف الذي قم بحفظه سـابقاً ، وسيتم تحميل البيـانات الى قاعدة البيـانات الجديدة ..

نقطة أخيرة ستسهل عليك نقل قاعدة البيـانات وهي تقسم الملف إن كان كبيراً ، والطريقة ببسـاطة عن طريق فتح الملف واقتطاع إجزاء منه حسب الحاجة التي تراها ووضع الأقسـام في ملفات ذات امتداد sql ، مثلا 1.sql و 2.sql الخ .. لكن تأكد من أن كل ملف يبدأ بالجملة insert into ، وأن حجمه ليس كبيراً ، 50kb ستكون مناسبة .

Bakenam
04-03-2009, 10:48 PM
لماذا لغة PHP ?


قد يتساءل احدكم لماذا أتعلم لغة برمجة الوب PHP ؟ والجواب على ذلك بسيط فلو كنت صاحب موقع فبكل تأكيد تواجهك مشكلة تحديث المحتويات بشكل دائم . اذ أن صفحات الـ HTML العادية لاتتيح لك فرصة لتحديث المحتويات دون ان تقوم بالعمل الروتيني المعروف ، تصمم الصفحات المطلوبة ثم تقوم ببعض التعديلات على الصفحات الرئيسية لموقع ثم تقوم بعمل upload لكل هذه الصفحات وترفع يديك داعيا وراجيا ألا تكون هناك أية أخطاء تجبرك على إعادة العملية المتعبة مرة أخرى . أما مع لغات برمجة الوب وخصوصاً بي إتش بي ستجد الراحة من كل هذا العناء بجعل الموقع يعمل بشكل تلقائي وماعليك إلا أن تجتهد في إضافة المحتويات الجديدة فقط .

البعض يقول هذه العملية سهلة وسريعة خصوصاً مع البرامج الحديثة ، وربما موقعي صغير ولايحتاج إلى كل هذا التعب . فماذا أستفيد أيضا ؟

نقول : تستفيد منها في اضافة بعض البرامج التفاعلية الضرورية لموقعك . ألا ترغب في أن تتعرف على رأي زوارك في موقعك وأن تحصل على مقترحات عملية منهم ؟ الحل أن تضيف سجل زوار يتيح لزوارك كتابة آرائهم ومقترحاتهم ، وبي إتش بي تتيح لك ذلك .

هذا مثال بسيط ، وكذلك تستطيع الاستفادة منها في اضافة برامج كثيرة مثل :
1- عداد زوار لمعرفة عدد زوار موقعك . والعدادات المتقدمة منها تعطيك تفاصيل إحصائية مفيدة .
2- منتدى . والمنتديات معروفة لدى الجميع تقريبا ، وفوائدها معروفة ، فهي التي تزيد من زوار موقعك ، وتفيد زوار موقعك في الاجتماع في مكان واحد وتبادل الخبرات والفوائد .
3- برنامج لمشاركة الزوار ، بحيث يضع الزائر مقالته أو مشاركته في موقعك بدون تدخل منك وبذلك تجد المحتويات الجديدة على موقعك دائما .
4- برنامج للبطاقات وهذا معروف ..

بالإضـافة الى أنواع لاحصر لها من البرامج ..

الآن دعونا نشرح قليلا ماهي لغة بي إتش بي ، هناك لغات كثيرة تشابه هذه اللغة منها لغة Perl أو ASP ، وهي لغات تعمل من جهة المستضيف أو ما يسمى بالـ ServerSide language ، أي أنها تعمل من قبل المستضيف الذي تعمل عليه وتقوم بإخراج النتائج على شكل HTML يفهمها المتصفح ، وهي بذلك لا تثقل حاسوب زائر الموقع بأية أعباء . وكذلك توفر مرونة عالية في البرمجة لا تتوفر في لغات HTML و **** ****** والتي تعمل على حاسوب زائر الموقع .

بدأت لغة البي إتش بي بفكرة أحد الهواة Ramsus Ledrof الذي فكر في كيفية تضمين شفرات ال HTML شفرات أكثر تعقيدا ، إلى أن بدأت هذه اللغة بالنمو وأصبحت أغلب المواقع لاتخلو من برنامج واحد على الأقل مصمم بالـ PHP .

ولايمكن حصر فوائد هذه اللغة حيث يمكن عمل ملف صغير ذو مهمة معينة خاصة باختيار غيرك ولكن إذا أخذنا الاغراض الأساسية التي يتم استخدام هذه البرامج فيها فيمكننا القول أن معظم قوائم المراسلات التي تنتشر في المواقع لابد أن تستخدم ملف بي إتش بي لإتمام عملها ، كذلك بعض البواحث العالمية كانت ومازالت تعتمد على ملفات بي إتش بي ، أيضا المنتديات المشهورة والمنتشرة تعتمد على ملفات البي إتش بي بل أنها لاتعتمد على شيء غيره ، أيضا من الأمثلة عليها البريد الإلكتروني فبعض المواقع مازالت تعتمد على ملفات البي إتش بي في الوقت نفسه وهذا مايحدث في البريد الإلكتروني حيث تزدحم طلبات الإرسال ، ومن الأمثلة عليها مواقع بطاقات التهنئة ومواقع المحادثات ومواقع التعارف ... وغيرها .

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

تتابع تطوير اللغة حتى صدور النسخة PHP 4 والذي احتوى على تكنولوجيا تسمى Zend وتساعد على تسريع الصفحات المعتمدة على بي إتش بي وأيضا الإصدار الجديد يدعم خدمات مختلفة والتي في السابق كانت تدعم فقط برنامج الخادمات الشهيرة Apache . حاليا هنالك أكثر من مليون ونصف المليون صفحة في عالم الإنترنت الواسع تعتمد على تطبيقات لغة بي إتش بي وأيضا الكثير من المواقع العربية إعتمدت تطبيقات هذه اللغة .

لماذا وما الدافع في اختيار تعلم لغة بي إتش بي مع وجود الكثير من اللغات المنتشرة مثل Perl و CGI و**** ****** و Cold Fusion و ASP . الأمرفي غاية البساطة . لغة PHP لغة سهلة ، قوية ، متماسكة وتستطيع عمل كل شيء نريده .

هل تعلم لغة بي إتش بي صعبة ؟ أكيد ليست بصعوبة لغة البيرل ، ونستطيع القول أن من يملك أساسيات لغة الـ C يستطيع بكل سهولة استيعاب عمل أوامر لغة PHP لأنها اعتمدت على طريقة الأوامر في لغة السي ، وأما الأشخاص الذين لم يحالفهم الحظ في تعلم لغات البرمجة فلا تقلقوا فالأمر ليس صعبا في تعلم اللغة وفقط تحتاج للمواصلة وفهم الأوامر .

وهدفنا هو تعليمكم أساسيات اللغة لاستخدامها في صفحاتكم ، ولانحتاج منك إلا معرفة القليل من لغة HTML ..

Bakenam
04-03-2009, 10:49 PM
العوامل:


العوامل
- العمليات الرياضية :
هي نفسها العمليات التي درستها في المرحلة الابتدائية من ( جمع + ، طرح - ، ضرب * ، قسمة / ) والزائد عليهم التي لم تدرسه تقريبا هو باقي القسمة ( % ) ..

مثال شامل على كل العمليات في الـ PHP :

Code ..


<?
$a = 6;
$b=2;
$c= $a +$b;
// سوف نحصل على ناتج الجمع 8

$c= $a -$b;
// سوف نحصل على ناتج الطرح 4

$c= $a * $b;
// سوف نحصل على ناتج الضرب 12

$c= $a /$b;
// سوف نحصل على ناتج القسمة 3

$a = 7;
$b=2;
$c= $a % $b;
// سوف نحصل على باقي القسمة 1
?>



عمليات Assignment

- عمليات Assignment :

=
احفظ القيمة في المتغير ، بمعنى خزن القيمة 3 في المتغير a$ :
Code ..


<?
$a = 3;
print $a;
// يطبع 3
?>






=+
إضافة قيمة إلى قيمة في نفس المتغير :
Code ..


<?
$a = 3;
$a += 3;
print $a;
// يطبع 6
?>






=-
اطرح المقدار واحد من المقدار ثلاثة في المتغير $a
Code ..


<?
$a = 3;
$a -= 1;
print $a;
// يطبع 2
?>






=*
يضرب القيمة 3 بالقيمة 2 ويكون الناتج مخزن في نفس المتغير :
Code ..


<?
$a = 3;
$a *= 2;
print $a;
// يطبع الناتج 6
?>






=/
يقسم قيمة على قيمه أخرى :
Code ..


<?
$a = 6;
$a /= 2;
print $a;
// يطبع ناتج القسمة 3
?>






=.
دمج سلسلة حرفية :
Code ..


<?
$a = "This is ";
$a .= "a test.";
print $a;
// : يطبع الجملة التالية
// This is a test.
?>



- عوامل الإضافة و الطرح

- عوامل الإضافة و الطرح :
لو افترضنا أننا لدينا المتغير $a=3 و أردنا إضافة واحد إليه بحيث يصبح 4 أو طرح واحد منه بحيث يصبح 2 ، لدينا العوامل التالية :

$a++ ارجع قيمة a ثم اضف واحد إليها
++$a اضف واحد إليها ثم ارجع القيمة
$a-- ارجع القيمة ثم اطرح واحد منها
--$a اطرح واحد ثم ارجع القيمة

++value ..
يتم إضافة واحد إلى الرقم خمسة :
Code ..


<?
$a = 5;
print ++$a;
// يطبع القيمة 6
?>






value++ ..
يرجع القيمة نفسها وفي استخدام ثاني تزيد القيمة واحد :
Code ..


<?
$a = 5;
print $a++;
// طباعة الرقم 6
print "<br>";
print $a;
// طباعة الرقم 5
?>






--value ..
يطرح من القيمة واحد :
Code ..


<?
$a = 5;
print --$a;
// يطبع الرقم 4
?>






value-- ..
يرجع القيمة نفسها وفي استخدام ثاني يطرح منها واحد :
Code ..


<?
$a = 5;
print $a--;
// يطبع الرقم 4
print "<br>";
print $a;
// يطبع الرقم 5
?>



عمليات المقارنة 1

- عمليات المقارنة Comparasion Operators :

$a == $b المتغيران متساويان ..
$a ===$b المتغيران متساويان و من نفس النوع ..
$a !=$b المتغير الاول لا يساوي الثاني ..
$a !==$b المتغير الاول لا يساوي الثاني وليس من نفس النوع ..
$a > $b أكبر من ..
$a < $b أصغر من ..
$a >=$b أكبر من او يساوي ..
$a <=$b أصغر من او يساوي ..

== (تساوي) ..
تساوي القيمة المخزنة في المتغير الأول بالقيمة المخزنة في المتغير الثاني :
Code ..


<?
$x = 7;
$y = "7";
if ($x == $y) print $x . " تساوي " . $y;
// يطبع 7 تساوي 7
?>






=== ( تساوي ومن نفس النوع ) ..
تساوي القيمة المخزنة في المتغير الأول بالقيمة المخزنة في المتغير الثاني وتكون القيم من نفس النوع ( حرفية – عددية ) :
Code ..


<?
$x = 7;
$y = 7;
if ($x === $y) print $x . " is identical to " . $y;
// يطبع 7 is identical to 7
?>






!= ( لا تساوي ) ..
إذا كانت القيم المخزنة في المتغيرين غير متساويين :
Code ..


<?
$x = 8;
$y = 4;
if ($x != $y) print $x . " لا تساوي " . $y;
// يطبع 8 لا تساوي 4
?>






!== ( لا تساوي ولا من نفس النوع ) ..
إذا كانت القيم المخزنة في المتغيرين غير متساويين وليست من نفس النوع :
Code ..


<?
$x = 8;
$y = 9;
if ($x !== $y) print $x . " iليست من نفس نوع " . $y;
// يطبع 8 ليست من نفس نوع 9
?>



عمليات المقارنة 2

< ( أقل من ) ..
مقارنة بين قيمتين واحدة أقل من الاخرى :
Code ..


<?
$x = 5;
$y = 9;
if ($x < $y) print $x . " أقل من " . $y;
// يطبع 5 أقل من 9
?>






> ( أكبر من ) ..
مقارنة بين قيمتين واحدة أكبر من الاخرى :
Code ..


<?
$x = 9 ;
$y = 5;
if ($x > $y) print $x . " اكبر من " . $y;
// يطبع 9 أكبر من 5
?>






<= ( أقل من ويساوي ) ..
مقارنة بين قيمتين واحدة أقل من الاخرى أو مساوية لها :
Code ..


<?
$x = 5;
$y = 5;
if ($x <= $y) print $x;
// يطبع القيمة 5
?>






>= ( أكبر من ويساوي ) ..
مقارنة بين قيمتين واحدة أكبر من الاخرى و مساوية لها :
Code ..


<?
$x = 7;
$y = 5;
if ($x >= $y) print $x;
// يطبع القيمة 7
?>



العمليات المنطقية

العمليات المنطقية Logical Operations :
لكي تكون قيمة الشرط صحيحة فيجب أن تنطبق القواعد التالية الخاصة بكل عامل منطقي على حدة ، والعوامل هي :
( and ) يجب تحقق الاثنين $a and $b
( or ) يجب تحقق كلاهما او احدهما $a or $b
( Xor ) يجب تحقق احدهما و ليس كلاهما $a xor $b
( ! ) نفي تحقق الشرط نفي لقيمة a !$a

ملاحظة : يمكن كتابة الـ ( and ) بالشكل التالي ( & ) والـ ( or ) بالشكل التالي ( | ) والـ ( Xor ) بالشكل التالي ( ^ ) ..

And ( و ) ..
إذا تحقق الشرطان ، بمعنى المتغير الأول يساوي 7 والمتغير الثاني يساوي 5 نفذ أمر الطباعة واطبع صحيح :
Code ..


<?
$x = 7;
$y = 5;
if (($x == 7) and ($y == 5)) print "صحيح";
// يتم طباعة صحيح
?>






Or ( أو ) ..
إذا كان أحد الشرطين صحيح أو الاثنين صحيحين نفذ أمر الطباعة :
Code ..


<?
$x = 7;
$y = 5;
if (($x == 7) or ($y == 8)) print "True";
// True يطبع
?>






Xor ..
إذا تحقق أحد الشرطين وليس الاثنين معا ينفذ أمر الطباعة :
Code ..


<?
$x = 7;
$y = 5;
if (($x == 7) xor ($y == 8)) print "True";
// True تحقق شرط واحد فقط فيتم طباعة كلمة
?>






! ( النفي ) ..
إذا كانت جملة الشرط غير صحيحة نفذ أمر الطباعة :
Code ..


<?
$y = 5;
if (! ($y == 10)) print "True";
يطبع True لأن المتغير القيمة المخزنة فيه غير صحيحة
?>



العمليات المنطقية

&& ..
المعامل && له نفس وظيفة ( and ) لكن الاختلاف في ترتيب تنفيذ أولويات العمليات :
Code ..


<?
$x = 7;
$y = 5;
if (($x == 7) && ($y == 5)) print "True";
// True يطبع
?>






|| ..
المعامل || له نفس وظيفة ( or ) لكن الاختلاف في ترتيب تنفيذ أولويات العمليات :
Code ..


<?
$x = 7;
$y = 5;
if (($x == 7) || ($y == 5)) print "True";
// True يطبع
?>

Bakenam
04-03-2009, 10:50 PM
قواعد البيانات :


قواعد البيانات
بسم الله الرحمن الرحيم والصلاة والسلام على اشرف الانبياء والمرسلين اما بعد ، ففي هذا الدرس بمشيئة الله تعالى سنتطرق الى مفاهيم عامة عن قواعد البيانات عموما وعن الـ Mysql خصوصاً ، لتكون بداية فهم لقواعد البيانات الهامة لأي لغة برمجة .

في البداية سنتعرف على مصطلح الـ RDBMS ، ونعني بذلك قواعد البيانات العلائقية ، والتي من خصائصها سهولة الوصول الى البيانات المخزنة فيها ، وسرعة اتمام عمليات الاستعلام المختلفة ، وبالاضافة الى المميزات الأخرى فان هذه النوع يعتبر الأكثر استخداماً في جميع التطبيقات سواء المستخدمة فيي الانترنت أو ذات الطابع البرمجي الخاص ، وبطبيعة الحال فإن الـ Mysql من هذا النوع .

ومن المهم معرفة بعض الاساسيات في الـ RDBMS ، والتي من شأنها تسهيل عملية فهمك التام لطريقة عملها والتعامل معها ..

1- الجداول Tables :
تعتبر أكبر جزء في قاعد البيانات ، وهي عبارة عن أعمدة وصفوف تحتوي على قيم معينة .

2- الأعمدة Columns :
لكل عمود في الجدول أسم خاص يختلف عن أسماء الأعمدة الأخرى في نفس الجدول ، ويجب ان يكون لكل عمود نوع خاص به يصف نوع البيانات التي ستخزن فيه ، وكم يظهر في الصورة ، فان عمود الرقم من النوع الرقمي Integer ، اما الحقلين الآخرين فهي نصوص **** .

3- الصفوف Rows :
كل صف من صفوف الجدول يحتوي على قيم مختلفة ويمثل معلومات متكاملة عن قطاع معين ، وفي مثالنا يمثل معلومات متكاملة عن سخص معين .

4- القيم Values :
وهي ما تحتوي عليه تقاطعات الصفوف بالاعمدة .

5- المفاتيح Keys :
وتعتبر من اساليب تسهيل الوصول الى المعومات في قواعد البيانات ، وفي مثالنا السابق نرى أن العمود Id يحتوي على ارقام متسلسلة لا تتكرر نهائياً بل أنها تتكون بشكل تلقائي عند ادراج أي صف جديد للجدول ، وبالتالي فإنها تعتبر المفتاح المناسب لكل صف من صفوف الجدول لضمان عدم الالتباس في اختيار الصفوف .


الاتصال بالـ Mysql

فلو افترضنا أن لدينا جدولين في قاعدة بيانات ، يحتوي الجدول الأول على معلومات عن الدروس مفصلة على عدة حقول لتلك الدروس ، على سبيل المثال :
الرقم ( id ) ، الدرس ( lesson ) ، رقم الكاتب ( Key_author ) ..
ويحتوي الجدول الثاني على بيانات الأعضـاء كما يلي :
الرقم ( Key_author ) ، الاسم ( name ) ..

والمطلوب هو طريقة لربط الجدولين ، بحيث أن رقم الكاتب في جدول الدروس ( Key_author ) يدل على اسم الكاتب في جدول الاعضـاء ( name ) .

بالتدقيق في المثال يتضح أن الحقلين ( أو العمودين ) Key_author في كلا الجدولين هو مفتاح الربط بينهما ، ولذلك يمكن الوصول الى اسم الكاتب اعتماداً على رقمه من جدول الدروس ، وبالتالي الربط بين الجدولين .

لن اتحدث طويلاً عن مقدمات قواعد البيانات Mysql ، ولكن بهذه المقدمة البسيطة يمكن على الاقل تصور بعض الاساسيات حول قواعد البيانات عموماً والـ Mysql خصوصاً ، ومن وجهة نظري فالاهم هو كيفية التعامل مع قواعد البيانات بما يخدم احتاجاتنا مع الـ PHP ، ولذلك ساتطرق في هذ الدرس الى نقطة هامة جداً وهي ادارة قواعد البيانات ، وأعني بذلك عملية انشاء قواعد البيانات والجداول والتحكم في الحقول والبيانات وغيرها ، لتكون الاسـاس للتعامل مع قواعد البيانات لاحقاً عن طريق الـ PHP ، ولعمل ذلك يوجد عدة طرق من اهمها الطريقة التقليدية المباشرة بالاعتماد على نظام الدوس في ذلك وبدون استخدام أي برامج أخرى للادارة .

الاتصال بالـ Mysql ، والتعامل معها :
كما قلنا أن الطريقة التقليدية هي الاتصال بقواعد البيانات عن طريق سيرفر الـ Mysql وبدون استخدام أي مكونات أخرى ، ولعمل ذلك نحتاج أن نعرف مسار سيرفر الـ Mysql على الجهاز المستخدم بعد عملية التثبيت ، كما قمنا بذلك في درس المقدمة ، وعادة يكون المسـار كالتالي ( C:\mysql\bin ) ، وبذلك يمكن تشغيل البرنامج mysql.exe من داخل الـ Dos .

عموماً طريقة الاتصال بقاعدة البيانات هي كالتالي :

Code ..


mysql –h HostName –u UserName –p






مع استبدال الـ HostName باسم السيرفر لديك ، سواء كان السيرفر على نفس الجهاز وفي هذه الحالية تكتب localhost ، أو أن السيرفر الذي تود الاتصال به ليس على نفس الجهاز وبذلك تكتب المسار الكامل لاسم الـسيرفر ( HostName ) ، ومع استبدال الـ UserName باسم المستخدم الخاص بالـ Mysql لديك ، بعد ذلك سيتم طلب كلمة المرور الخاصة بقاعدة البيانات بعد الضغط على Enter ، قم بادخالها وسيتم فتح الاتصال بالـ Mysql ، كما يمكن كتابة mysql فقط ليتم فتح الاتصال بقاعدة البيانات فقط اذا كنت تعمل على نفس الجهاز وليس جهاز أخر .

سيظهر المؤشر الخاص باوامر الـ Mysql كالتالي :

Code ..


mysql>






وبهذا نكون وصلنا الى المكان المطلوب لكتابة اوامر الـ Mysql والتحكم بها .



show - create - use

الأمر الأول الذي سنقوم بكتابته يقوم باستعراض قواعد البيانات الموجودة على السيرفر والامر هو :

Code ..


show data****s;






بعد كتابة هذا الأمر ( بعد مؤشر الـ mysql> ) ، سيتم استعراض قواعد البيانات في السيرفر الذي قمنا بالاتصال به ، وفي حالة عدم وجود أي قاعدة بيانات قمت باعدادها من قبل ، فان من الطبيعي أن تجد قاعدتي بيانات موجودة بشكل تلقائي عند تثبيت السيرفر Mysql ، وتلك القاعدتان هي test – mysql .

ولمحاولة فهم الموضوع بشكل أكبر ، سنقوم بالتطرق الى مثـال يبين كيفية انشاء قاعدة بيانات ، وكيفية الدخول لها والتعامل معها وانشاء الجداول ، ومن ثم حذفها ..

بعد استعراض قواعد البيانات بالأمر السابق ، سنقوم بانشاء قاعدة بيانات باسم PHP ، ولعمل ذلك قم بكتابة الأمر التالي :

Code ..


create data**** PHP;






لو قمنا بكتابة الأمر السابق ( show data**** ) سنرى أن قواعد البيانات أصبحت 3 باضافة القاعدة PHP الى القاعدتين mysql – test ، ولاستخدام اي منها نقوم بكتابة الأمر التالي في مثالنا مع القاعدة PHP :

Code ..


use PHP;






وهذه يعني الدخول في قاعدة البيانات PHP واستخدام المؤشر ( mysql> ) لكتابة الأوامر المتعلقة بالتعامل مع قاعدة بيانات بعينها .




create tables

أول هذه الاوامر هو أمر انشاء جدول في قاعدة البيانات ، وهذه الأمر يحتاج الى تفصيل دقيق لبعض الخصائص مثل اسماء الحقول وانواع البيانات فيها ، وبعض الاشياء الأخرى ، عموماً قم بكتابة الأمر التالي وساقوم بشرح كافة التفاصيل بعد المثال :

Code ..


create table users (
id Int not null auto_increment Primary Key,
name **** not null,
counter int
);






شرح المثال :
- قمنا بكتابة ( create table users ) وهذا يعني انشاء جدول باسم users .
- القوس ) يعني بداية تسمية حقول الجدول وخصائص تلك الحقول .
- السطر الأول من اسماء الحقول هو ( id ) والرمز ( int ) يعني وصف نوع البيانات التي ستخزن في الـحقل ( id ) ، وهي في هذه الحالة تعني نوع البيانات الرقمية ، اما الرمز ( not null ) فيعني عدم امكانية أن يكون هذا الحقل فـارغاً ، بل يجب أن يحتوي على قيمة ، والـ ( auto_increment ) يجعل الحقل يحتوي على قيم متسلسلة يستحيل تكرارها ، وسيبدأ من الرقم 1 ويبدأ بالزيادة بمقدار واحد في كل مرة يتم ادخال صف جديد الى هذا الجدول ، وفي النهاية الرمز ( Primary Key ) يعني أن الحقل هو المفتاح الرئيسي لهذا الجدول أو بمعني أنه سيتم التفريق بين صفوف الجدول اعتماداً على هذا الحقل ولهذا وضعنا ( auto_increment ) لضمان عدم اختلاط البيانات .
- السطر الثاني يحتوي على اسم الحقل ( name ) ونوع البيانات ( **** ) أي نصي ، ونفس الرمز السابق الذي ذكرناه وهو ( not null ) .
- السطر الثالث يحتوي على اسم الحقل ( counter ) ونوع البيانات ( int ) ، ولاحظ أننا لم نذكر ( not null ) وبالتالي يمكن أن يكون هذا الحقل فارغاً لا يحتوي على أي قيمة ، ولن يكون هناك أي تعارض أو مشكلة بعكس الحقلين السابقتين .
- في السطر قبل الأخير ، أي قبل علامة الاغلاق ( ، سيكون بدون فاصلة .
- السطر الأخير يحتوي على اقفال عملية انشاء الجدول بالعلامة ); .

عموماً هذا المثال يعطي نبذة بسيطة عن كيفية اجراء مثل هذه الاوامر ، وسنتطرق الى بقية الأوامر في الأسطر القليلة القادمة .



show - describe - insert

يمكنك استعراض الجداول الموجودة في قاعدة بيانات عن طريق الأمر :

Code ..


show tables;






ولو قمت بتطبيق ذلك على المثال السابق فسترى أن الجدول users موجود في قاعدة البيانات PHP التي قمنا بانشاءها .

يمكن كذلك استعراض خصائص الجدول السابق users الذي قمنا بانشاءه في المثال السابق ، عن طريق الأمر التالي :

Code ..


describe users;






سترى أن حقول الجدول وخصائص كل جدول ظهرت لك بشكل واضح .

- التعامل مع بيانات الجداول :
بقي أن نذكر الطرق التي يمكن من خلالها ادخال البيانات الى الجدول users ، بل وكيفية التعامل مع تلك البيانات بالتعديل والحذف وغير ذلك ، وكما قلنا سابقاً أن هذه الاساسيات مفيدة جداً في البرمجة بلغة الـ PHP ، بل إن فهم هذه الطرق هو المفتاح الاساسي للتعامل مع قواعد البيانات عن طريق البي اتش بي ،

عموماً أول تلك الأوامر هو اضافة صف جديد الى الجدول ، وهذا ما يبينه المثال التالي :

Code ..


insert into users set
name = “Ahmad”;
counter = 3
;






مع ملاحظة أن users هو اسم الجدول ، name اسم الحقل ( العمود ) الأول ، counter اسم الحقل ( العمود ) الثاني ، كما تلاحظ أن الحقل id لم نتطرق له ، لاننا في اعدادنا للجدول ذكرنا أن الحقل id ( auto_increment ) أي ستضاف اليه القيم بشكل تلقائي وبشكل منظم ، كما قلنا في كل مرة يزيد العداد بقيمة 1 ، و بطبعية الحال يمكنك القياس على هذا المثال باستبدال ما يجب استبداله من اسم الجدول ( users ) واسماء الحقول ( name – counter ) وكذلك البيانات بما يناسب الذي تريد القيام به .

Bakenam
04-03-2009, 10:51 PM
select

هذا بالنسبة لاضافة بيانات جديدة الى جدول معين ، اما بالنسبة لاستعراض البيانات في الجدول فكما يلي :

Code ..


select * from users;






ومعني select ( اختر ) ، ولذلك ستجد أن جميع البيانات التي في الجدول users قد تم سردها ، واذا كنت ملتزماً بالمثال السابق حرفياً فستجد أن البيانات التي اضفناها في المثال السابق ظهرت على شكل صف من صفوف الجدول ، وبالتالي كلما اضفت صفاً جديداً الى الجدول وقمت باستعراض البيانات تجد أن بياناتك قد تم تخزينها ، وينطبق الكلام السابق حول الاستبدال هنا ايضا ، فيمكن استبدال اسم الجدول users باي اسم لجدول في قاعدة البيانات المستخدمة ، وللتاكد من اسماء الجداول قم باستخدام الطريقة السابق ذكرها وهي ( show tables ) .

النقطة الأخيرة التي ساتطرق لها هي ما يجب معرفته حول الأمر select وهو كثرت استخدامه في التعامل عن طريق البي اتش بي ، وبالتالي يجب عليك فهم طريقة كتابته بشكل كامل ، بالاضافة الى خيارات الاختيار إن صح التعبير ، وهي ما يتم كتابته بعد الجملة السابقة من خيارات تحدد طريقة اختيار البيانات من شروط وترتيب وحدود وهذا ما ساذكره في الاسطر القليلة القادمة .

فلفترض أن الجدول السابق يحتوي على أكثر من صف من البيانات بالشكل التالي :

اما البيانات التي نود جلبها فهي كما يلي لكل نقطة على حدة :
1- بيانات الاعضاء الذين ليس لهم أي موضوع .
2- بيانات الاعضاء الذين لهم مواضيع أكثر من 5 مرتبين من الاكثر الى الاقل .
3- بيانات العضو Ahmed .
4- بيانات جميع الاعضاء مرتبين حسب الاسم .
5- بيانات العضو الأكثر مواضيعاً .

سنأخذ كل حالة على حدة ، أما الحالة الأولى فيمكن التعامل معها كما يلي :
Code ..


select * from users where counter=0;





الزيـادة التي قمنا بوضعها هي ( where counter=0 ) أي بحيث أن الحقل ( counter ) يساوي صفر ، وبالتالي سيتم اهمال أي صف من البيانات التي لا يحتوي الحقل ( counter ) فيها على القيمة صفر ، وسيتم جلب البيانات التي يحتوي هذا الحقل فيها على صفر .


أمثلة على select

الحالة الثانية :
Code ..


select * from users where counter >= 5 order by counter;





في هذا المثال اضفنا الشرط ( where counter >= 5 ) وهو واضح كما في المثال السابق ولكن تم تغيير الشرط لا اقل ولا اكثر ، اما الاضافة الأخرى فهي طريقة الترتيب وهي ( order by counter ) وتعني ( قم بترتيب البيانات المختارة بحسب الحقل counter ) ، وهناك طريقة أخرى للتحكم في الترتيب اما تصاعدي أو تنازلي وذلك باضافة كلمة asc ليكون الترتيب تنازلياً كما هو الحال في المثال السابق ، فسواء ذكرت ذلك أو سيتم اعتبارها تنازلياً بشكل تلقائي ، اما الاهم فهو طريقة الترتيب التصاعدي من الاقل الى الاكبر ويتم ذلك عن طريق كتابة الكلمة desc بعد الترتيب مباشرة لتصبح كما يلي :

Code ..


select * from users where counter >= 5 order by counter desc;






الحالة الثالثة :

Code ..


select * from users where name = “Ahmed”;






لاحظ أن الفرق الوحيد هنا هو استخدام علامات التنصيص ، لان نوع البيانات نصية .

الحالة الرابعة :

Code ..


select * from users order by name;






وقد أوردت هذا المثال لبيان أنه يمكن استخدام أحد الخيارات لجلب البيانات وترك باقي الخيارات ، فيمكن كما في المثال استخدام خيار الترتيب ( order ) وعدم استخدام الخيارات الباقية ( where – limit ) ، اما الخيار where فقد تطرقنا لنا سابقاً وتعرفنا على فائدته ، والخيـار الأخر limit هي ما سيتم التطرق اليه في المثال التالي الخاص بالحالة الخامسة :

الحالة الخامسة :

Code ..


select * from users order by counter limit 1;






والـ limit تعني عدد الصفوف المختارة ، أي لو قمنا بكتابة المثال السابق بدون الـ limit ستجد أن جميع البيانات سيتم اختيارها ، ولكن باستخدام الـ limit نقوم بتحديد عدد الصفوف التي سيتم اختيارها استناداً على طريقة ترتيبنا للبيانات ، فكما تلاحظ قمنا بترتيب البيانات بحسب الحقل counter ولم نذكر ( desc ) ولذلك فالبيانات يتم ترتيبها من الاكبر الى الاصغر ، وبالتالي فاختيارنا للحقل الأول يقضي باختيار بيانات الشخص الأكثر كتابة للمواضيع .


delete - update

بقي أن نذكر طريقي التعديل والحذف ليكتمل الدرس ، وسنبدأ بطريقة التعديل على البيانات الموجودة في الجدول users من قاعدة البيانات PHP ، والمثال التالي يوضح الطريقة التي سيتم شرحها بعد المثال :

Code ..


update users set
name = “Naser”,
counter = 30
where name=”Ahmad”;






الجملة update تعني تحدبث أو ( قم بتحديث ) ، والـ users هو اسم الجدول الذي نعمل عليه ، وفي السطر الثاني قمنا باسناد القيمة Naser الى الحقل name ، والسطر الذي يليه قمنا باسناد القيمة 30 الى الحقل counter ، ولكن لو توقفنا هنا بدون ذكر الصف الذي سيتم التعديل عليه ، سيتم تعديل كافة الصفوف في الجدول مهما كان عددها ، ولذلك كتبنا في النهاية where name=”Ahmad” ، بمعنى أن التغيرات السابقة ستحدث فقط على الصف من البيانات التي يحتوي فيها الحقل name على القيمة Ahmad .

ربما يكون المثال غير واضح بشكل كافي ، ولكن مع التمرس والمحاولة ستجد أن المسألة منطقية وواضحة بشكل كبير ، عموماً لم يبقى لدينا الا طريقة الحذف ، سواء كان لكل البيانات في الجدول ، أو لصف معين من البيانات وسنرى ذلك في المثالين التاليين ، وهما ما سنختم به هذا الدرس :

Code ..


delete from users;






الأمر السابق كفيل بالغاء جميع الصفوف في الجدول users كما هو واضح ، ولذلك كن متأكداً من أن التجارب التي تقوم بها هي على بيانات غير هامة .

Code ..


delete from users
where id = 1 ;






وهذا الحذف سيتم على الصف الذي يتحقق عليه الشرط ، وفي هذه الحالة على الصف من البيانات التي يحتوي فيها الحقل id على القيمة 1 .

Bakenam
04-03-2009, 10:52 PM
دوال قواعد البيانات Mysql: -



دوال قواعد البيانات Mysql
لاهمية موضوع قواعد البيانات ، سوف نقوم في هذه الدورة بتغطية دوال قواعد البيانات وهي اثنتان وثلاثون دالة فإلى الدرس الأول :

1- الدالة mysql_connect :

Code ..


integer mysql_connect(string host, string username,
string password);






تقوم هذه الدالة بالاتصال مع قاعدة البيانات وتعيد لك رقم يفيدك اذا كان لديك أكثر من اتصال بقواعد البيانات ، احتفظ به لاستخدامه في دوال أخرى تالية اذا كان هناك حاجة لذلك كما قلنا ، اما الوضع الطبيعي فلا يحتاج الا الى الاتصال بالطريقة السابقة فقط وبدون الاحتفاظ بأي رقم ، فقط مرر للدالة اسم الخادم واسم المستخدم وكلمة المرور ، ولكن يتوجب عليك بعد الانتهاء أن تغلق الاتصال باستخدام الدالة mysql_close
مثال :

Code ..


<?
$link = mysql_connect("db.azzozhsn.f2s.com","mag","Pass");
?>






2- الدالة mysql_pconnect :

Code ..


integer mysql_pconnect(string host, string username,
strin password);






هذه الدالة تقوم بما تقوم به الدلة السابقة إلا أنه لا يتوجب عليك إغلاق الاتصال ، مثال:

Code ..


<?
$link = mysql_pconnect("db.azzozhsn.f2s.com","mag","Pass") ;
?>






3- الدالة mysql_select_db :

Code ..


boolean mysql_select_db(string data****, integer link);






تقوم هذه الدالة باختيار قاعد البيانات المحدد لها. مثال:

Code ..


<?
mysql_select_db(string data****, integer link);
?>


mysql_db_query - mysql_close ..

4- الدالة mysql_db_query :

Code ..


boolean mysql_db_query(string data****, string query,
integer link);






تقوم هذه الدالة بتنفيذ سطر SQL على قاعدة البيانات المفتوحة بالمعطى data**** مثال:

Code ..


<?
$link = mysql_connect("db.azzozhsn.f2s.com","mag","Pass");
$Query = "DELETE FROM magazine";
$result = mysql_db_query("mag", $Query, $link);
?>






5- الدالة mysql_close :

Code ..


boolean mysql_close(integer link);






تقوم هذه الدالة بقطع ( إغلاق) قاعدة البيانات ، مرر لها رقم الاتصال المعاد من الدالة mysql_connect
مثال:

Code ..


<?
// الاتصال بقاعدة البيانات ..
$link = mysql_connect("localhost","mag","Pass");
// اغلاق الاتصال بقاعدة البيانات ..
mysql_close($link);
?>






6- الدالة mysql_query:

Code ..


integer = mysql_query(string query, integer link);






تقوم هذه الدالة بما تقوم به الدالة mysql_db_query تقريباً إلا أن الدالة mysql_query يقتصر عملها على قاعدة البيانات المحددة بالدالة mysql_select_db .
في حالة عدم تمرير رقم الاتصال فستعمل الدالة على الاتصال الأخير.
مثال:

Code ..


<?
$link = mysql_connect("localhost","mag","Pass");
$query = "DELETE FROM magazine";
$result = mysql_query($query, $link);
?>



mysql_errno - mysql_error

7- الدالة mysql_errno :

Code ..


integer mysql_errno(integer link);






تقوم هذه الدالة بإعادة رقم آخر خطأ حدث في التعامل مع قاعدة البيانات.
8- الدالة mysql_error :

Code ..


string mysql_error(integer link);






تعيد هذه الدالة رسالة الخطأ الحاصل في قاعدة البيانات

Bakenam
04-03-2009, 10:53 PM
التعليقات : -


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

ولكي نتمكن من إضافة تعليق لمعرفة ما هي وظيفة البرنامج مثلاً ، أو كملاحظات في البرنامج بحيث لا يدير لها البرنامج بالاً ولا يقوم بترجمتها ، يمكن إضافة تعليقات في سطر واحد أو تعليقات في عدة أسطر ، بالطريقة التالية :

- لكي نضيف تعليق من سطر واحد نستخدم :
Code ..


// هنا التعليق في سطر واحد






- ولإضافة تعليق من عدة أسطر نستخدم :
Code ..


/*
التعليق الأول
التعليق الثاني
....
*/






وكمثـال على ذلك :
Code ..


<?
// التعليق هنا
echo "البرنامج الأول";
?>






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

مثال آخر على النوع الثاني من التعليقات :
Code ..


<?
/*
هنا
أسطر
التعليقات
*/
echo "البرنامج الثاني";
?>






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

Bakenam
04-03-2009, 10:54 PM
الشروط وحلقات التكرار : -


الشروط وحلقات التكرار
بسم الله الرحمن الرحيم والصلاة والسلام على اشرف الانبياء والمرسلين ، سيتم التطرق في هذا الدرس بمشيئة الله الى ما يلي :

- عبـاراة الـ if .
- عبـاراة الـ else .
- عبـاراة الـ elseif .
- عبـاراة الـ switch .
- حلقة التكرار while .
- حلقة التكرار for .
- حلقة التكرار do while .

- عبـاراة الـ if :
استخدام الـ if في كتابة السكربات شي أساسي ، وكما في لغات البرمجة الأخرى فإن الـ PHP تتبع نفس الاسلوب في كتابة الـ if ، فيمكن تحديد شرط معين مقترن بالـ if وبالتالي اذا كان الشرط صحيحاً ( true ) فسيتم تنفيذ الاسطر المحددة ، وبتفصيل أكثر يجب وضع الشرط بين قوسين ( ) ، ووضع الاسطر المطلوب تنفيذها بين العلامـات { } ، مع ملاحظة أنه يمكن التخلي عن العلامات { } في حال وجود سطر واحد فقط .

فلنفترض وجود نموذج بريدي ( Mail Fourm ) ، يحتوي على الإسم والبريد والرسالة ، ونرغب في معرفة ما اذا كان المرسل قد ملأ جميع الحقول وبالتالي إرسـال الرسـالة ، او انه لم بفعل ذلك وبالتالي عرض رسـالة ( فضلاً قم بتعبئة البيـانات كاملة ) ، لعمل ذلك نحتاج معرفة أسمـاء المتغيرات في النموذج ، ولذلك فلنفترض أن المتغيرات كالتالي :
( الإسم name$ ) ، ( البريد email$ ) ، ( الرسـالة later$ ) ، ولعمل الشرط الأول ( اذا كان الإسم لم يُدخل فلن يتم ارسـال الرسـالة ) :
Code ..


<?
if ( $name == "" )
echo "فضلاً قم بتعبئة البيـانات كاملة ";
?>





والمعنى أنه إذا كان المتغير name$ لا يحتوي على أي قيمة ( أي فراغ ) فسيتم تنفيذ السطر التالي وطبـاعة الجملة ، مع ملاحظة أن المطلوب تنفيذه هم سطر واحد فقط ولذلك لم نستخدم { } ، بل في حالة وجود أكثر من سطر يجب استخدامها كالتالي :

Code ..


<?
if ( $name == "" ) {
echo "فضلاً قم بتعبئة البيـانات كاملة<br> ";
echo "لم تقم بإدخـال الإسم ";
}
?>



else

- عبـاراة الـ else :
هذه العبـارة تتيح امكانية وجود اجراء ثاني لعدم تحقق الشرط ، ففي مثالنا السابق كان الاجراء طباعة الجملة اذا تحقق الشرط ، ولكن في حالة عدم تحقق الشرط فلن يكون هناك اجراء لتنفيذه ، بل ان الاجراء سيتم تنفيذه اذا تحقق الشرط ومن ثم سيتم اكمال بقية الاسطر ، وفي حالة مثل هذه الحالة يتم استخدام الـ else لوضع اجراء آخر في حالة عدم تحقق الشرط ، وبالمثال يتضح المقال :
Code ..


<?
if ( $name == "" ) {
echo "فضلاً قم بتعبئة البيـانات كاملة";
}
else
{
echo "تم ارسـال الرسـالة ، شكرا لك";
}
?>





في هذا المثال سيتم طباعة الجملة (فضلاً قم بتعبئة البيـانات كاملة ) اذا تحقق الشرط أن المتغير name$ لا يحتوي على أي قيمة ، وسيتم طباعة الجملة (تم ارسـال الرسـالة ، شكرا لك ) في حالة عدم تحقق الشرط ، أي في حالة وجود قيمة في المتغير name$ ، مع ملاحظة أن هذا المثال يحتوي على شرطين وليس شرط واحد ، فالظاهر هو شرط واحد ( "" == name$ ) ولكن العبـارة else تعتبر شرطاً بحد ذاتها ولو لم يكن هذا الشرط مكتوباً ، وكما هو واضح فمعنى هذا الشرط هو ( إذا كان غير ذلك ) فقم بطباعة الجملة .

يمكن أن يكون الشرح غير واضح تماماً ، ولكن أهمية فهم الطريقة ستتضح في الأسطر القليلة القادمة .



elseif

- عبـاراة الـ elseif :
في العبارة السابقة ذكرنا أنه يوجد شرطين واجرائين ، أحد هذين الشرطين غير مكتوب بل هو مفهوم من ادراج العبـارة else ، وفي حالات كثيرة لا يكفينا مجرد شرطين واجرائين لاتمام بعض السكربات المعقدة ، فلذلك يمكن نستخدم العبـارة elseif مع الـ if لعمل مثل هذه السكربات ، فلو افترضنا أن لدينا عداد لزوار الموقع ونريد اظاهر العداد بحيث يتم قراءته بشكل جيد ، اي بمعني اخر اذا كان عدد الزوار ( 1 ) فسيتم طباعة الجملة ( عدد الزوار : زائر واحد فقط ) واذا كان ( 2 ) فسيتم طباعة الجملة ( عدد الزوار : زائرين ) ... وقس على ذلك ، فعندما يكون عدد الزوار ( 1 ) فسيتم عرض الجملة الأولى فقط وعندما يكون عدد الزوار ( 2 ) فسيتم عرض الجملة الثانية فقط ، وهكذا لبقية الشروط .

بافتراض أن المتغير ( counter$ ) هو عداد الزوار ، فالمثال التالي يبين ما تم شرحه سابقاً :
Code ..


<?
if ( $counter == 1 ) {
echo " عدد الزوار : زائر واحد فقط ";
}
elseif ( $counter == 2 ) {
echo " عدد الزوار : زائرين ";
}
elseif ( $counter >= 3 && $counter <= 10 ) {
echo "عدد الزوار : $counter زوار";
}
else {
echo "عدد الزوار : $counter زائر";
}
?>





كما هو واضح في المثـال السابق سيتم ما يلي :

الشرط : العداد يساوي 1
الإجراء : طبـاعة ( عدد الزوار : زائر واحد فقط )
الشرط : العداد يساوي 2
الإجراء : طبـاعة ( عدد الزوار : زائرين )
الشرط : العداد أكبر أو يساوي 3 و اصغر أو يسـاوي 10
الإجراء : طبـاعة ( عدد الزوار : ( العداد ) زوار )
الشرط : العداد لا يحقق أي من الشروط
الإجراء : طبـاعة ( عدد الزوار : ( العداد ) زائر )

ملاحظة بسيطة فقط ، وهي على العلامة && التي تعني ( و ) ، وهي من علامات الجمع بين جملتين ، فيجب أن تكون الجملتين صحيحتين لتحقق الشرط .



switch

- عبـاراة الـ switch :
هذه العبـارة قريبة جداً من العبـارة if ، ولكن يمكن استخدام اكثر من شرطرين باسلوب أخر ، غير انه يجب اسناد قيمة معينة للـ case وهي هنا بمثابة الشرط ، لكي يتم تنفيذ الاجراء المحدد لذلك الشرط أو الـ case ، وفي النهاية الأمر يعود الى المصمم وايهما يفضل ، وكما في المثال السابق يمكن كتابة مثال بالـ switch بنفس الطريقة ، والمشكلة الوحيدة هي كما قلنا أنه يجب اسناد قيمة معينة لكل case وبالتالي فإن الشرط الثالث من المثال السابق يجب تفريقه لكل قيمة من ( 3 الى 10 ) ، وهذه العميلة مجهدة لانه يجب كتابة سطر لكل قيمة كما يلي :

القيمة : 3
الـ case : 3
الاجراء : طبـاعة ( عدد الزوار : ( العداد ) زوار )
القيمة : 4
الـ case : 4
الاجراء : طبـاعة ( عدد الزوار : ( العداد ) زوار )
القيمة : 5
الـ case : 5
الاجراء : طبـاعة ( عدد الزوار : ( العداد ) زوار )
......... الخ ...

وفي المثال التالي ساتغاضى عن الشرط الثالث بكامله ، واذكر بقية الشروط والحالات لمجرد فهم طريقة عمل هذه العبـارة :
Code ..


<?
switch ($counter)
{
case "1";
echo " عدد الزوار : زائر واحد فقط ";
break;
case "2";
echo " عدد الزوار : زائرين ";
break;
default;
echo "عدد الزوار : $counter زائر";
break;
}
?>






استخدمنا في هذه المثال بعض الجمل وتعني ما يلي :
Switch وتكتب في البداية مع ادراج اسم المتغير الذي سيتم عمل الشروط عليه .
Case أي في حالة ( .... ) ويكتب بجانبها الشرط .
Break وتعني ايقاف العملية والخروج من الشرط بعد تنفيذ أحد الإجراءات .
Default وهي تقابل العبـارة else أي بمعنى أنها لأي حالة لم يتم ذكرها في الشروط .



while

- حلقة التكرار while :
وهي ابسط حلقات التكرار على الأطلاق ، بحيث تاخذ شرط واحد فقط وتبني على تنفيذ ما بين علامات الشروط { } ، والفرق الوحيد بينها وبين الـ if هو انها ستقوم بتنفيذ الاجراءات طالما كان الشرط صحيحاً ، وهذا يعني احتمال تنفيذ الإجراء أكثر من مرة ، وهذ الدالة مفيدة في ادراج الحقول من الجدوال وغيرها من الاستخدامات ، بحيث لو افترضنا وجود جدول معين في قاعد بيانات ونريد ادراجه في صفحة PHP ، فسيكون من اهم خيارات الاستخدام هذه الدالة ، وباذن الله سيتم التطرق لقواعد البيانات في الدروس القادمة ، وفي الوقت الحالي ساذكر مثال بسيط على هذه الدالة لفهم طريقة استخدامها :
Code ..


<?
$total = 10;
while ( $total <= 50 )
{
echo "العدد أقل من 50<br>";
$total +=10;
}
?>





بتفكير بسيط يمكن معرفة أن الجملة ( العدد أقل من 50 ) سيتم طباعتها 5 مرات ، لان حلقة التكرار while قامت بتنفيذ الاجراء طالما أن الشرط صحيح ، وفي المرة الأولى كان المتغير ( total$ ) يساوي ( 10 ) والشرط صحيح لان الـ ( total$ ) فعلاً اصغر أو يساوي الـ ( 50 ) ، فتم تنفيذ ما بين علامات الشرط ، ومن ذلك زيادة متغير المجموع ( total$ ) بقيمة ( 10 ) ومن ثم الرجوع والمقارنة من جديد ، وفي هذه الحالة صار المتغير ( total$ ) يساوي ( 20 ) وأيضـاً الشرط صحيح وبالتالي الدخول مرة أخرى وتنفيذ الأجراء .... وهكذا حتى يتم الوصول الى أن قيمة الـ ( total$ ) يساوي ( 50 ) وبالتالي الشرط صحيح ، ومن ثم تصبح قيمة الـ ( total$ ) تساوي ( 60 ) وفي هذه الحالة يتم ايقاف تنفيذ الاجراءات لأن الشرط غير صحيح .



for - do while

- حلقة التكرار for :
يوجد طريقة أسهل للتعامل مع المثال السابق ، فاستخدام حلقة التكرار while كانت القيمة الابتدائية للمتغير ( total$ ) في سطر ، والشرط في سطر والزيـادة على المتغير في سطر أخر ، وبالتالي زيارة في عدد الأسطر عن ما يمكن استخدامه مع حلقة التكرار for ، فالمثـال التالي يبين طريقة أخرى لاستخدام مثـال الـ while بطريقة أسهل :
Code ..


<?
for ( $total = 10; $total <=50; $total +=10 )
{
echo "العدد أقل من 50<br>";
}
?>






وللتوضيح فان تركيب الـ for هو على الشكل التالي :
Code ..


for ( القيمة الأفتراضية; الشـرط; مقدار الزيـادة; )
{
الإجراء المطلوب تنفيذه
}






- حلقة التكرار do while :
وهي نسخة أخرى من الـ while والفرق الوحيد بينهما أن التأكد من الشرط وصحته من عدمها يتم بعد تنفيذ الاجراء وليس قبله كما في الـ while وكمثال عليها :

Code ..


<?
$total = 10;
do
{
echo "العدد أقل من 50<br>";
$total +=10;
}
while ( $total <= 50 );
?>

Bakenam
04-03-2009, 10:55 PM
المتغيرات : -



المتغيرات
بسم الله الرحمن الرحيم والصلاة والسلام على اشرف الانبياء والمرسلين ، بعد المقدمات السابقة والهامة في معرفة اساسيات اللغة يمكننا بداية كتابة البرامج بلغة البي اتش بي ، وبطبيعة الحال سنبدأ من اصغر الاساسيات واهمها في كتابة البرامج عموماً وهي المتغيرات .

المتغيرات في لغة الـ PHP تبدأ بعلامة الدولار ( $ ) ، ولاسناد قيمة لذلك المتغير نستخدم علامة المساواة ( = ) ، فرضا لدينا المتغير ( Name ) والقيمة ( Khaled ) فنكتب ما يلي :

Code ..


<?
$Name = "Khaled";
?>






هذا في حالة المتغيرات النصية ( **** ) ، وفي حالة المتغيرات الرقمية ( Numbers ) يمكن تعريف متغير ( Counter ) الذي يحمل القيمة ( 17 ) كالتالي :

Code ..


<?
$Counter = 17;
?>






الفرق الواضح في طريقة تعريف المتغيرين النصي والرقمي هو عدم وجود علامات التنصيص في تعريف المتغيرات الرقمية بينما يجب وضع علامات التنصيص في تعريف المتغيرات النصية .

نقاط هامة في تسمية المتغيرات :
- اسماء المتغيرات في كثير من لغات البرمجة لا تتعدى 255 حرف ( المقصود بها الخانات سواء كانت حروف أو ارقـام أو علامات اخرى ) ، و في لغة الـ PHP لا يوجد حدود على عدد الخانات في تسمية المتغيرات ، ولكن في الغالب لن تحتاج الى اكثر من 15 خانة لتسمية أي متغير ، لان المبالغة في تسمية المتغيرات تسبب مشاكل في تذكر المتغيرات وما تحتوية من قيم .

- بداية كل متغير يجب أن تبدأ بحرف ( يعني حرف هجائي ) أو علامة ( _ ) Underscore ، مع تجاهل علامة الـ $ لانها لا تحسب من اسم المتغير .

- يمكن أن يحتوي اسم المتغير على الحروف أو الارقام أو علامة ( _ ) فقط ، اما العلامات الأخرى مثل ( + , - , * , / ) أو الـ & لا يمكن كتابتها في اسم المتغير .

- المتغير ( Name$ ) يختلف عن المتغير ( name$ ) لاختلاف حالة حرف الـ N ، ولذلك يجب التاكد من اسم المتغيرات بدقة لتجنب حدوث مشاكل في الوصول الى متغير معين ، وبالتاكيد لو كان لديك اسلوب خاص في تسمية المتغيرات لسهولة الوصول اليها وتذكرها ستكون كتابة السكربات اسهل بكثير .

- يستحسن أن تكون اسماء المتغيرات دالة على معانيها ، بمعنى أنه لمتغير مثل عداد الزوار يستحسن أن يكون ( counter$ ) ، ولمتغير مثل اسم المستخدم ( user$ ) .. الخ .



التعامل مع المتغيرات

التعامل مع المتغيرات :
فائدة المتغيرات تكمن في طريقة استخدامها في كتابة السكربت ، وكما ذكرنا سابقاً أنه لطباعة متغير معين نستخدم امر الطباعة ( echo ) أو ( print ) كما يلي :

Code ..


<?
$name = "Naser";
echo $name;
?>






في البداية سيتم اسناد القيمة ( Naser ) الى المتغير ( name$ ) ، وفي السطر الثاني يتم طباعة المتغير ، أو بالاحرى القيمة المسندة الى المتغير .

انواع البيانات ( Data Types ) :
في الامثلة السابقة قمنا باسناد قيمتين عددية ونصية الى متغيرين ، وبينًا الفرق بينهما ، وفي لغة الـ PHP بشكل عام يوجد أكثر من هذين النوعين من البيانات ، ساشرح بعضاً منها الآن ، والبقية في الدروس القادمة :
- البيانات النصية ( String ) .
- البيانات العددية الصحيحة ( Integer ) .
- البيانات العددية الكسرية ( Double ) .
- المصفوفـات ( Array ) .
- الكـائنات ( Object ) .
- البيانات الغير معروفة ! .


البيانات النصية ( String )

البيانات النصية ( String ) :
هي البيانات التي تكون بين علامات التنصيص " " بغض النظر عن محتوهـا ، فيمكن أن تكون حروف أو اعداد أو رموز أو غيرها ، ومثال ذلك كما ذكرنا سابقاً :

Code ..


<?
$user = "Khaled";
$age = "13.5";
?>






التعامل مع البيانات النصية ( String ) :
لاضـافة المتغيرات التي تحتوي على بيانات نصية مع متغيرات من نفس النوع نحتاج الى عملية دمج بين المتغيرات ، ولعمل ذلك نكتب :

Code ..


<?
$total = $user . $age;
?>






في هذه الحالة سيتم اسناد القيمة Khaled13.5 الى المتغير ( total$ ) .
اذا اردنا وضع مسـافة بين المتغيرين نضيف متغير جديد يحتوي على المسـافة وهو ( space$ ) ثم نقوم بعملية الدمج كالتالي :

Code ..


<?
$space = " ";
$total = $user . $space . $age;
?>






وفي هذه الحالة سيتم وضع القيمة Khaled 13.5 في المتغير ( total$ ) ، وبطبيعة الحال يمكن استخدم المتغيرات النصية داخل متغيرات نصية أخرى ، حيث سيتم تعويض المتغير بقيمتة الأصلية .




البيانات العددية ( Numeric )

البيانات العددية ( Numeric ) :
وكما ذكرنا في التقسيم السابق أنها نوعين ( الاعداد الصحيحة Integer ) و ( الاعداد الكسرية Double ) ، وكمثال على النوعين :

Code ..


<?
$integer1 = 233;
$integer2 = -29;
$double1 = 5.27;
$double2 = -4.6;
?>






التعامل مع البيانات العددية ( Numeric ) :
العمليات الحسابية المشهورة ( + , - , * , / ) بالاضـافة الى باقي القسمة ( % ) عمليات شائعة جداً في التعامل مع المتغيرات العددية ، وبطبيعة الحال لن نحتاج الى ذكر أي مثال عن هذه العمليات ، وسنكتفي بذكر بعض النقاط الاساسية التي قل ما يخلو سكربت منها .

اول النقاط هي اضافة المتغير الى نفسه ، بمعنى تعريف عملية حسابية على متغير معين بحيث تخزن القيمة في نفس المتغير ، مثلا لو كان لديك عدد الزوار وتريد في كل مرة أن يزود عدد الزوار بـ 1 ، يمكنك كتابة ما يلي :

Code ..


<?
$counter = $counter + 1;
?>






بالتالي سيتم زيادة المتغير ( counter$ ) بـ 1 في كل مرة يتم فيها تنفيذ السكربت ، وبطريقة أخرى يمكن كتابة السطر السابق كالتالي :

Code ..


<?
$counter = $counter++;
?>






والـ ++ تعني زيادة قدررها ( 1 ) على قيمة المتغير الأصلية ، وكذلك الـ -- تعني طرح 1 من القيمة الأصلية .

وفي حالة الرغبة بزيادة أي عدد أخر ( غير الواحد ) على أي متغير باسلوب الطريقة الثانية يمكن كتابة ما يلي :

Code ..


<?
$counter +=4;
?>






وهذا يعني زيادة مقدارها 4 على قيمة المتغير الأصلية ، وبالسالب كذلك بنفس الأسلوب .




بعض الدوال الهامة

بعض الدوال الهامة في التعامل مع المتغيرات :
- isset : وهي دالة للتأكد من وجود متغير معين ، فمثلا :

Code ..


<?
echo isset($age);
?>






سيتم طباعة الرقم 1 اذا كان المتغير ( age$ ) موجوداً ( تم انشاءه مسباقاً ) ، والعكس اذا كان غير موجود سيتم طباعة الرقم 0 ، وهذه الدالة يتم استخدامها كثيراً في الشروط وهذا ما سنتطرق اليه لاحقاً .

- unset : هذه الدالة تعمل على مسح المتغير من الذاكرة كليأ ، فقط قم بعمل التالي :

Code ..


<?
unset($age);
?>






وفي هذه الحالة سيتم مسح المتغير ( age$ ) بشكل كامل .

- empty : وهذه الدالة معاكسة للدالة isset بحيث لو كتبنا ما يلي :

Code ..


<?
echo empty($age);
?>






سيتم طباعة الرقم 1 في حالة عدم وجود المتغير ( age$ ) أو أن قيمة المتغير تساوي 0 أو ( فراغ ) ، وفي حالة وجود المتغير ( age$ ) لن يتم طبـاعة أي شي .

Bakenam
04-03-2009, 10:56 PM
مميزات لغة الـ PHP : -


مميزات لغة الـ PHP
تتميز لغة PHP بالكثير من الخصائص التي جعلتها الخيار الأمثل لمبرمجي الويب في العالم :

السهولة :

تعتبر لغة PHP من أسهل لغات البرمجة تعلما، فهي تريحك من جميع تعقيدات إدارة الذاكرة وتعقيدات معالجة النصوص الموجودة في C من جهة ، والكثير من الضعف الموجود في بينية وتصميم لغة البرمجة Perl من جهة أخرى .

تمتلك لغة PHP بنية وقواعدا ثابته وواضحة جدا، معظم قواعد اللغة مأخوذة من كل من C و **** و Perl لصنع لغة برمجة عالية السهولة والسلاسة دون فقدان أي من القوة في اللغة، يفيدك ذلك إذا كنت تعلم أي شيء عن لغات البرمجة الأخرى مثل Visual Basic أو C أو **** حيث ستجد دائما بأنك تفهم مواد الدورة بسرعة، وستكتشف كيف تقوم PHP بتسهيل أصعب الأمور وإذلال العقبات التي تواجه المبرمج حتى يتفرغ تماما للإبداع فقط ، كل ما تفكر به تستطيع تنفيذه بلغة PHP .

السرعة :

لغة PHP من اللغات المعروفة بسرعتها العالية في تنفيذ البرامج، وخاصة في الإصدارة الرابعة من المترجم ، حيث تمت كتابة مترجم PHP من الصفر ليعطي أداءا في منتهى الروعة، كما أن لغة PHP مصممة أصلا كنواة لمترجم ، بحيث يمكن أن تضع هذه النواة في عدة قوالب أو أغلفة لتعمل مع التقنيات المختلفة ، فيمكنك تشغيل مترجم PHP كبرنامج CGI مثلا ، ولكن الأفضل هو إمكانية تركيب مترجم PHP على مزود IIS في صورة وحدة إضافية تضاف إلى المزود عن طريق دوال ISAPI ، وتوجد نسخة أخرى منه تركب على مزود Apache أيضا في صورة وحدة خارجية ، وتوجد أيضا نسخة مخصصة للدمج مع شفرة مزود Apache بحيث تصبح جزءا من برنامج Apache نفسه ، وهي الطريقة الأكثر استخداما الآن في مزودات الويب التي تعمل على أنظمة UNIX وهي الطريقة التي تعطي أفضل أداء لمترجم PHP، حيث يصبح المترجم جزءا من المزود ، وبالتالي فإنه سيكون محملا في الذاكرة بانتظار صفحات PHP ليقوم بترجمتها وعرضها للزوار مباشرة دون التأخير الإضافي الذي تتطلبه برامج Perl/CGI مثلا حيث يجب أن يتم تشغيل مترجم Perl مع كل زيارة للصفحة لترجمة الصفحة ، ثم يتم إغلاق المترجم ، ثم استدعاءه مجددا عند الزيارة الثانية وهكذا ، وهذا يشكل فارقا كبيرا في المواقع ذات الضغط العالي بالذات، ويكون استخدام PHP حلا أفضل بكثير .


المزايا والتوافقية

المزايا :

يأتي مترجم PHP لوحده محملاً بعدد هائل من الدوال الجاهزة الاستخدام في جميع المجالات، من دوال المعالجة الرياضية والحسابية إلى دوال الوصول إلى قواعد البيانات ومزودات FTP ، توفر لك دوال PHP مثلا وصولا إلى مزودات البيانات MySQL و PostgreSQL و MS SQL و Oracle وغيرها من مزودات قواعد البيانات، وهنالك أيضا مجموعة من الدوال لمعالجة ملفات XML ، ودوال أخرى لإرسال واستقبال الملفات عن بعد باستخدام بروتوكول FTP ، وهنالك مجموعة من الدوال لمعالجة وإنتاج الصور ديناميكيا وملفات Flash ديناميكيا ، ناهيك عن جميع الدوال الخاصة بمعالجة النصوص والمصفوفات .

التوافقية :

كما قلنا سابقا، فعلى الرغم من أن هنالك الكثير من نسخ PHP التي يعمل كل منها في بيئة مختلفة، إلا أنها جميعا تشترك في النواة الأصلية التي تقوم بالمعالجة الحقيقة لملفات PHP لذا فإن جميع مترجمات PHP تتصرف بنفس الطريقة فيما يتعلق بتنفيذ السكريبتات، فإذا كان السكريبت الذي عملته يعمل على نظام Windows مع مزود IIS فيجب أن يعمل دون الحاجة لأية تغييرات عند نقله إلى مزود Apache ، بالطبع تظل بعض الأمور البسيطة جدا التي يوفرها بعض المزودات دون غيرها، ولكن جميع البرامج التي كتبتها منذ أن بدأت تعلمي للغة إلى الآن تعمل على جميع المزودات دون الحاجة لأي تغييرات ، إضافة إلى ذلك فإن التغييرات التي حدثت باللغة الأساسية من الإصدارة الثالثة إلى الرابعة قليلة جداً ، وأغلب التغييرات كانت في البنية التحتية للمترجم .


الحماية وقابلية التوسع

الحماية :

توفر لغة الـ PHP الكثير من المزايا المتقدمة ، بالاضافة الى وضع وضع الحدود على تلك المزايا ، فيمكنك التحكم بعدد الإتصالات المسموحة بقاعدة البيانات مثلاً ، أو الحجم الأقصى للملفات التي يمكن إرسالها عبر المتصفح ، أو السماح باستخدام بعض الميزات أو إلغاء استخدامها ، كل هذا يتم عن طريق ملف إعدادات PHP والذي يتحكم به مدير الموقع .

قابلية التوسع :

يمكنك توسعة مترجم PHP بسهولة وإضافة الميزات التي تريدها إليه بلغة C ، وحيث أن الشفرة البرمجية للمترجم مفتوحة فإنك تستطيع تغيير ما تريده مباشرة لتحصل على النسخة التي تناسبك من المترجم ، ويمكنك أيضا عمل الوحدات الإضافية التي تركب على المترجم لزيادة ميزاته والوظائف المبيته فيه، وفي قد قام فريق تطوير مترجم PHP مسبقا بعمل هذه المهمة وتحويل كمية ضخمة من المكتبات المكتوبة بلغة C إلى مكتبات مخصصة لتضاف إلى المترجم، ومنها حصلنا على جميع الميزات التي تحدثنا عنها مثل الوصول إلى قواعد البيانات ومعالجة ملفات XML .


نظرة تاريخية

تاريخ PHP :

بدأت PHP كمكتبة من الدوال تضاف على لغة Perl لتسهل عمل برامج CGI بلغة Perl، وبعد أن تلقى Rasmus Lerdof بعض الاقتراحات بتحويلها إلى مترجم بسيط ، قام بعمل ذلك المترجم وطرحه على الإنترنت وسماه PHP أو Personal Home Pages أي الصفحات الشخصية، فقد كان عبارة عن نسخة مصغرة من Perl مع بعض الميزات الإضافية للويب ، ثم أضاف إليه دعما لنماذج HTML وسماه PHP2/FI ، فقام مجموعة من المبرمجين بالعمل على مترجم PHP وأضافوا إليه واجهة تطبيقات برمجية API لتسهيل عملية توسعته فأصبح لدينا PHP 3 ، بعد فترة من الزمن قامت شركة Zend للتقنيات بعمل مترجمها الخاص للغة والذي سمي zend أيضا ، وقد اتصف هذا المترجم بالسرعة العالية وقدراته المحسنة، وجمع مع مكتبات PHP الأخرى لتكوين نواة المترجم PHP، مترجم PHP الآن مقسم على قسمان: المترجم zend ويتم تطويره على مزودات CVS الموجودة في موقع zend والقسم الثاني يسمى PHP وهو عبارة عن المكتبات والدوال الأساسية التي تأتي مع البرنامج ، يقوم مترجم zend بقراءة الملفات ومعالجتها والتعامل مع المتغيرات وتنفيذ البرنامج وتوفير واجهة تطوير للتطبيقات API لتوسعة اللغة ، أما PHP فتحتوي الآن على مكتبات مكتوبة بلغة C ومتوافقة مع واجهة التطبيقات التي يوفرها مترجم zend ، وبالتالي يعمل القسمان معا لتكوين مترجم PHP ، وعندما تزور موقع PHP الرسمي وتحصل على مترجم PHP جاهزا أو تحصل على الشفرة البرمجية الخاصة بك ، فإنك تحصل على كل من مترجم zend ومكتبات PHP معا.
تطور PHP تطورا مفاجئا في الفترة الأخيرة ، وتشير إحصائيا Net Craft إلى أن مترجم PHP هو أكثر وحدات مزود Apache انتشارات على الإنترنت ، كما أن مترجم PHP مركب على حوالي مليوني مزود ويب على الإنترنت أو أكثر .

هنا الموقع الاصلي لهذه الغة http://www.php.net (http://www.php.net/)

Bakenam
04-03-2009, 10:58 PM
دوال قواعد البيانات Mysql : -


دوال قواعد البيانات Mysql
لاهمية موضوع قواعد البيانات ، سوف نقوم في هذه الدورة بتغطية دوال قواعد البيانات وهي اثنتان وثلاثون دالة فإلى الدرس الأول :

1- الدالة mysql_connect :

Code ..


integer mysql_connect(string host, string username,
string password);






تقوم هذه الدالة بالاتصال مع قاعدة البيانات وتعيد لك رقم يفيدك اذا كان لديك أكثر من اتصال بقواعد البيانات ، احتفظ به لاستخدامه في دوال أخرى تالية اذا كان هناك حاجة لذلك كما قلنا ، اما الوضع الطبيعي فلا يحتاج الا الى الاتصال بالطريقة السابقة فقط وبدون الاحتفاظ بأي رقم ، فقط مرر للدالة اسم الخادم واسم المستخدم وكلمة المرور ، ولكن يتوجب عليك بعد الانتهاء أن تغلق الاتصال باستخدام الدالة mysql_close
مثال :

Code ..


<?
$link = mysql_connect("db.azzozhsn.f2s.com","mag","Pass");
?>






2- الدالة mysql_pconnect :

Code ..


integer mysql_pconnect(string host, string username,
strin password);






هذه الدالة تقوم بما تقوم به الدلة السابقة إلا أنه لا يتوجب عليك إغلاق الاتصال ، مثال:

Code ..


<?
$link = mysql_pconnect("db.azzozhsn.f2s.com","mag","Pass") ;
?>






3- الدالة mysql_select_db :

Code ..


boolean mysql_select_db(string data****, integer link);






تقوم هذه الدالة باختيار قاعد البيانات المحدد لها. مثال:

Code ..


<?
mysql_select_db(string data****, integer link);
?>



mysql_db_query - mysql_close ..

4- الدالة mysql_db_query :

Code ..


boolean mysql_db_query(string data****, string query,
integer link);






تقوم هذه الدالة بتنفيذ سطر SQL على قاعدة البيانات المفتوحة بالمعطى data**** مثال:

Code ..


<?
$link = mysql_connect("db.azzozhsn.f2s.com","mag","Pass");
$Query = "DELETE FROM magazine";
$result = mysql_db_query("mag", $Query, $link);
?>






5- الدالة mysql_close :

Code ..


boolean mysql_close(integer link);






تقوم هذه الدالة بقطع ( إغلاق) قاعدة البيانات ، مرر لها رقم الاتصال المعاد من الدالة mysql_connect
مثال:

Code ..


<?
// الاتصال بقاعدة البيانات ..
$link = mysql_connect("localhost","mag","Pass");
// اغلاق الاتصال بقاعدة البيانات ..
mysql_close($link);
?>






6- الدالة mysql_query:

Code ..


integer = mysql_query(string query, integer link);






تقوم هذه الدالة بما تقوم به الدالة mysql_db_query تقريباً إلا أن الدالة mysql_query يقتصر عملها على قاعدة البيانات المحددة بالدالة mysql_select_db .
في حالة عدم تمرير رقم الاتصال فستعمل الدالة على الاتصال الأخير.
مثال:

Code ..


<?
$link = mysql_connect("localhost","mag","Pass");
$query = "DELETE FROM magazine";
$result = mysql_query($query, $link);
?>



mysql_errno - mysql_error

7- الدالة mysql_errno :

Code ..


integer mysql_errno(integer link);






تقوم هذه الدالة بإعادة رقم آخر خطأ حدث في التعامل مع قاعدة البيانات.
8- الدالة mysql_error :

Code ..


string mysql_error(integer link);






تعيد هذه الدالة رسالة الخطأ الحاصل في قاعدة البيانات

Bakenam
04-03-2009, 10:59 PM
دوال الـ Mysql - الجزء الثاني : -


دوال الـ Mysql - الجزء الثاني
في هذا الدرس سوف نقوم بإنشاء قاعدة البيانات و حذفها و تتعرف على عدد قواعد البيانات الموجودة في الخادم وغير ذلك من المهارات ..

1 - الدالة mysql_create_db :
Code ..


boolean mysql_create_db(string data****name, integer link);





تقوم هذه الدالة بإنشاء قاعدة بيانات جديدة مرر لها اسم قاعدة البيانات ورقم الاتصال العائد من الدالة mysql_connect أومن الدالة mysql_pconnect ..
مثال:
Code ..


<?
// حيث أن الفراغ هو الباسورد az الإتصـال بقاعدة بيانات اسمها
$link = mysql_pconnect("localhost", "az", "");
// انشاء قاعدة بيانات جديدة
if (! mysql_create_db($link, "mag"))
{
print("فشل إنشاء قاعدة البيانات الجديدة")
exit();
}
?>






2- الدالة mysql_drop_db :
Code ..


boolean mysql_drop_db(string data****name, integer link);





تقوم هذه الدالة بحذف قاعدة البيانات المحددة بالمعطى data****name ..

3- الدالة mysql_list_dbs :
Code ..


integer mysql_list_dbs(integer link);





تقوم هذه الدالة بإعادة موشر لكل قواعد البيانات الموجودة في الخادم لغرض استعمالها مع الدالة mysql_fetch_row وأمثالها .



mysql_field_seek - mysql_field_name ..

4- الدالة mysql_field_seek :
Code ..


boolean mysql_field_seek(integer result, integer field);




تقوم هذه الدالة بتحديد الحقل المرر إليها رقمه . مثال :
Code ..


<?
// حيث أن الفراغ هو الباسورد az الإتصـال بقاعدة بيانات اسمها
$dbLink = mysql_pconnect("localhost","az","");
// Authors أختيـار قاعدة البيانات
mysql_select_db("Authers", $dbLink);
// Adress اختيار جميع الحقول من الجدول
$Query = "SELECT * FROM adress";
$result = mysql_query($Query, $dbLink);
// الانتقال الى الحقل الثاني اعتماداً على عملية الاختيار
mysql_field_seek($reslut, 1);
?>






5- الدالة mysql_field_name :
Code ..


string mysql_field_name(integer result, integer feild);





تعيد هذه الدالة اسم الحقل المحدد بالرقم المرر إليها والذي يبدأ بالرقم صفر للحقل ( العمود ) الأول . مثالها سيأتي بعد قليل .

6- الدالة mysql_field_type
Code ..


string mysql_field_type(integer result, integer feild);





تعيد هذه الدالة نوع الحقل المحدد بالرقم المرر إليها والذي يبدأ بالرقم صفر للحقل ( العمود ) الأول . المثال سيأتي بعد قليل أيضاً ..




mysql_field_len - mysql_field_flags

7- الدالة mysql_field_len :
Code ..


string mysql_field_len(integer result, integer feild);





تعيد هذه الدالة طول الحقل بالبايت المحدد بالرقم المرر إليها والذي يبدأ بالرقم صفر للحقل ( العمود ) الأول . المثال بعد قليل ..

8- الدالة mysql_field_flags :
Code ..


string mysql_field_flags(integer result, integer feild);





تعيد هذه الدالة وصف الحقل المحدد بالرقم المرر إليها والذي يبدأ بالرقم صفر للحقل ( العمود ) الأول .

9- الدالة mysql_list:
Code ..


mysql_list(string data****, string table, integer link);





المثال الشامل :
Code ..


<?
// حيث أن الفراغ هو الباسورد az الإتصـال بقاعدة بيانات اسمها
$link = mysql_pconnect("localhost", "az", "");
// ترتيب الحقول وجلبها
$result = mysql_list_field("mag", "table", integer link);
// حلقة تكرار للمرور على كل حقل
for ($a = 0; $a < mysql_field_num($result); $a++)
{
print(mysql_field_name($result, $i);
print(mysql_field_type($result, $i));
print(mysql_field_len($result, $i));
print(mysql_field_flags($result, i));
}
?>

Bakenam
04-03-2009, 11:00 PM
دوال الـ Mysql - الجزء الثالث : -


دوال الـ Mysql - الجزء الثالث
في هذا الدرس سوف نقوم بشرح ست دوال من دوال لغة php الخاصة بقاعدة البيانات MySQL ..

1- الدالة mysql_fetch_field :
وهي على الشكل التالي :
Code ..


object mysql_fetch_field(integer result, integer field);






استخدم هذه الدالة لتحصل على معلومات حول حقول الجدول
المراد ، الحقول ترقم بدايةً من صفر [0] ، بحيث يحتوي كل حقل على عدة متغيرات تحمل نفس الرقم بداية من صفر ، وهذه المتغيرات تصف نوعية الحقل كما في الشرح التالي :

- blob : إذا كانت TRUE فالحقل عبارة عن عن حقل بيانات كبير .
- maxlength : الطول الأقصى للحقل .
- multiple_key : تكون TRUE إذا كان الحقل مفتاحاً .
- name : اسم الحقل .
- not_null : تكون TRUE إذا كان الحقل لا يمكن أن يكون فارغاً .
- numric : تكون TRUE إذا كان الحقل يرقم تلقائياً .
- primary_key : تكون TRUE إذا كان الحقل يمثل مفتاحاً رئيساً .
- table : اسم الجدول .
- unque_key : تكون TRUE إذا كان الحقل يمثل مفتاحاً ثانوياً .
- unsegned : تكون TRUE إذا كان الحقل بدون إشارة يعني لا يقبل الأعداد السالبة .
- zerofill : تكون TRUE إذاكان الحقل يملأ بالقيمة صفر .


2- الدالة mysql_fetch_lengths :
وصيغتها كما يلي :
Code ..


array mysql_fetch_lengths(integer result);






استخدم هذه الدالة لتعيد مصفوفة تحتوي على الطول الأقصى لكل حقل محدد في المعطي result .

مثالها كما يلي :

Code ..


<?
//Connect to server as azzozhsn no password
$link = mysql_pconnect("localhost","root","");
//Select th magazine data****
mysql_select_db("magazine",$link);
//Get name and id from magazine
$Query = 'SELECT name, id FROM magazine';
$result = mysql_query($Query, $link);
$length = mysql_fetch($result);
//Print length of the third column
print($lengths[2]);
?>


fetch_array - fetch_object ..

3- الدالة mysql_fetch_array :
وهي على الصورة :
Code ..


array mysql_fetch_array(integer result);






هذه الدالة تعيد مصفوفة تحتوي على قيم سجل وتنقل المؤشر إلى السجل التالي ، مثال :
Code ..


<?
// Connect to server as root no password
$link = mysql_pconnect("localhost","root","");
// Select th magazine data****
mysql_select_db("magazine",$link);
// Get name and id from magazine
$Query = 'SELECT name, id FROM magazine';
$result = mysql_query($Query, $link);
// Get every row
while($row=mysql_fetch_array($result, MYSQL_ASSOC)){
// Print mane and id
print({$row["id"]}={$row["name"]});
}
?>






4- الدالة mysql_fetch_object :
وتأتي على الشكل التالي :
Code ..


object mysql_fetch_object(integer result)






هذه الدالة تشبه الدالة mysql_fetch_array إلا أنها تعيد كائن object ، عند استدعاء الدالة ينتقل المؤشر إلى السجل التالي في الجدول ، وإذا وصل إلى نهاية الجدول ثم استدعيت الدالة مرة أخرى فإنها تعيد القيمة FALSE ، ولتتضح الصورة فمثالها كما يلي :

Code ..


<?
while($row=mysql_fetch_object(result)){
//print id and name
print ("$row->id, $row->name")
}
?>






5- الدالة mysql_fetch_row :
هذه الدالة تعيد مصفوفة تحتوي على قيم حقول سجل من الجدول وكل استدعاء يعيد قيمة الحقول في السجل التالي في الواقع هذه الدالة تشبه الدالتين السابقتين .

مثال :
Code ..


<?
while($row=mysql_fetch_row(result)){
// Print id and name
print ("$row[0], $row[1]")
}
?>






6- الدالة mysql_change_user :
وطريقة كتابتها كما يلي :
Code ..


musql_change_user(string user, string password,
string db, integer link)






استخدم هذه الدالة لتغيير مستخدم قاعدة بيانات المتصل بها ،
المعطيان db, link اختيارية وفي حالة فقدهما يستعاض عنهما بالاتصال الحالي ، هذه الدالة تتطلب إصدار MySQL 3.23.3 أو ما بعده .

Bakenam
04-03-2009, 11:01 PM
مفاهيم اساسية : -


مفاهيم اساسية
بسم الله الرحمن الرحيم والصلاة والسلام على اشرف الانبياء والمرسلين اما بعد ، فبعد ان تحدثنا عن اعداد الجهاز الشخصي للعمل مع الـ PHP ، نتحدث اليوم عن المفاهيم الاساسية للغة ، لتكون البوابة الاولى للدخول والتعامل معها .

- طريقة كتابة السكربات في اللغة :

ربما تكون قد لاحظت في الدرس الأول عندما تطرقنا الى تجربة الاعدادات قمنا بكتابة اول سكربت كالتالي :

Code ..


<?
phpinfo();
?>





وهذا السكربت البسيط يبين كيفية كتابة السكربات في اللغة بشكل واضح ، ففي بداية كل سكربت يجب أن نكتب ?> وفي نهاية السكربت نكتب <? مع ملاحظة أن هذه العلامات أو الـ Tags لها اكثر من صورة ، ولكن صورتها الشائعة هي ما ذكرها ، أما بقية الـ Tags فهي كما يلي مع بيان فوائدها واستخداماتها :
1 – <? ?> وهو الشكل الشائع .
2 – <? php?> ويستخدم في حال وجود الـ XML .
3 – <****** language='php'> </******> يمكن أن يستخدم مع الـ ********** .
4 – <% %> وهذا الـ Tags هو ما يستخدم في ASP .

وكمثال على كتابة السكربات :

Code ..


<?
نكتب السكربت هنا ..
?>



الدمج بين الـ HTML و الـ PHP

وبالامكان كتابة صفحات الـ HTML بلغة الـ PHP بطريقتين ، أما أول طريقة فهي في الكود التالي :
Code ..


<p> تاريخ اليوم هو :
<?php print(date("I F j. Y")); ?>.
<p>






هذه الطريقة تستعمل عادة في حالة وجود جملة قصيرة من الـ PHP يراد اضـافتها الى صفحة HTML .

اما الطريقة الثانية فهي المستخدمة في مواقع كبيرة الحجم نسبياً وتستعمل قواعد البيانات ، وبالتالي فالافضل استخدام علامات البي اتش بي من بداية السكربت وادخال الـ HTML من ضمنها ، المثال التالي يعطي نفس نتائج الكود السابق ولكن بهذه الطريقة :
Code ..


<?
print("<p> تاريخ اليوم هو : "
. date("I F j. Y") . ".</p>");
?>






اذا قمنا بحفظ السكربت بالامتدادت الخاصة بالـ PHP وهي كمثال على ذلك .php و .php3 وغيرها ، يجب ان توضع علامة الفتح <? في اول سطر في السكربت وليس قبلها اي مسافة وعلامة الاغلاف ?> في نهايته ، بغض النظر عن ما يوجد بين هذه الـ Tags ، فيمكن أن يكون بينها الكثير من علامات الـ HTML العادية ، وبذلك سوف تتكرر علامات الفتح والاغلاق اكثر من مرة في نفس السكربت ، ربما هذا المثال يعطيك صورة أوضح :

Code ..


<?
echo "بسم الله الرحمن الرحيم";
?>
<title>PHPvillage قرية بي اتش بي</title>
<?
echo "النهاية";
?>






فكما تلاحظ قمنا بكتابة الأمر الخاصة بالطبـاعة في لغة الـ PHP وهو echo ثم قمنا باغلاق الكتابة وكتبنا علامات خاصة بالـ HTML ومن ثم قمنا بفتح الكتابة مرة أخرى ومن ثم تابعنا كتابة السكربت .




ملاحظة

- ملاحظة على الكتابة في اللغة :

يجب أن نكتب في نهاية كل سطر الرمز التالي ( ; ) الفاصلة المنقوطة ، وطبعا يوجد استثناءات لكل قاعدة ، فالمعاملات الشرطية مثل if وحلقات التكرار مثل while لا نضع لها فاصلة منقوطة في نهاية السطر ، أيضا ان كان السطر طويلاً بحيث لا يمكن مشاهدته على الشاشة بشكل كامل واردت ان تفرق الاسطر بدون وجود دالة في بداية السطر الثاني فيمكن أن ينتهي السطر بدون ( ; ) ويبدا السطر الثاني كتكملة للسطر السابق ، وعندما ترا الخطأ التالي في تنفيذ السكربت :
Code ..


Parse error: parse error in c:\apache\htdocs\head.php on line 13





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

Bakenam
04-03-2009, 11:03 PM
إعداد الـ PHP والـ MySQL : -


مقدمة
في هذه المقدمة سنتطرق الى مفاهيم أساسية عن لغة البرمجة PHP وقواعد البيانات MySQL وطريقة إعداد الجهاز ليعمل كخادم ( Server ) وفي النهاية تجربة الجهاز الخادم بكتابة سكربت بسيط مع شرح طريقة عمل مثل هذه السكربات .

- ما هي الـ PHP ؟

بدأت اللغة في الظهور في عام 1994 على يد Rasmus Lerdorf ومن ثم أخذت في التطور شيئاً فشيئاً ، وفي عام 2001 بلغت عدد المواقع المصممة بالـ PHP تقريبا 6 ملايين موقع وهذا الرقم في تصاعد مستمر .

PHP كانت تعني Personal Home Page وتم تغيرها لـ PHP Hyper**** Preprocessor وهو إسمها المعروف الآن ، أما موقعها الرسمي فهو www.php.net (http://www.php.net/) .

لغة الـ PHP تعتبر من لغات البرمجة لجهة الخادم ( server-side ******ing ) وصممت خصيصاً للانترنت ، أما ما نعنيه بانها لغة برمجة لجهة الخادم فهو أن ترجمة السكربت تتم عن طريق مترجم الـ PHP الموجود في الخادم ( Server ) ، ومن ثم يرسلها الخادم لصفحة الوب لتُعرض كـ HTML أو غيرها ، لذلك فالسكربت يُترجم في كل مرة يتم فيها تحميل الصفحة ولا يعتبر هذا عيباً ، لأن الترجمة تتم بسرعة ، وزوار موقعك لا يمكنهم الشعور بذلك الفرق بينها وبين الـ HTML ، إلا إن كانت التطبيقات كثيرة نسبياً .

- ما هي الـ MySQL ؟

هي قاعدة بيانات علائقية relational data**** management system أو اختصـاراًRDBMS ، وقواعد البيانات عموماً تتيح لك التخزين والبحث وتنظيم البيانات في جداول ، كما تتيح لأكثر من مستخدم الوصول لتلك البيانات بكل سهولة .

كانت بدايتها في عام 1996، وهي تعتمد على Structured Query Language SQL التي تعتبر قاعدة البيانات المخصصة للعمل على الوب ، ولذلك حصلت الـ MySQL على جوائز عديدة لتميزها .


عملية الإعداد في الـ Windows

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

في بداية الإعداد سنحتاج إلى ما يلي :

- Apache Server
- PHP 4
- MySQL .

.

- تركيب الـ Apache Server .

قم باتمام عميلة تركيب السيرفر كأي برنامج أخر على الوندوز ولكن عند الوصول الى مكان تركيب السيرفر فيُفضل إختيار C:\apache بدلاً من وضعه داخل مجلد Program Files وذلك لتسهيل عملية الوصول الى دليل السيرفر والذي سيتم تشغيل سكربات الـ PHP من داخله .

- تركيب الـ PHP .

1. اختر مكان فك ضغك الملف هو C:\Php وذلك كما ورد سابقا لتسهيل عملية الوصول .
2. انسخ الملف php.ini-dist الى دليل الوندوز C:\Windows وقم بتغيير اسمه الى php.ini .
3. قم بنسخ الملف php4ts.dll إلى دليل C:\Windows\system .
4. إجراء بعض التعديلات على الملف php.ini وسوف نتطرق إليها لاحقاً .

- تركيب الـ MySQL Data**** .

قم بفك ضغط الملف وبعد ذلك شغّل برنامج الـ Setup لاتمام عميلة التركيب ، ويفضل اختيار الدليل Mysql تحت الـ C:\ مبـاشرة ، ليصبح كالتالي : C:\Mysql .
بعد ذلك افتح شاشة الدوس MS DOS بالذهاب إلى ابدأ ومن ثم تشغيل وكتابة الامر command ، قم بكتابة ما يلي :

Code ..


C:\mysql\bin> mysqld-nt --install





واذا كان لديك مشكلة في تغشيل الملف قم بتجربة كتابة ما يلي :
Code ..


C:\mysql\bin> mysqld --standalone



إعدادات الـ Apache Server

- إعدادات الـ Apache Server :

يجب أن يكون الـ Apache Server لا يعمل ، إن كان يعمل قم باغلاقه ، ثم إذهب إلى دليل الـ Apache وادخل الدليل الفرعي conf ستجد عدة ملفات من بينها httpd.conf وهو الملف الخاص باعدادات السيرفر ، قم بفتح الملف واضف اليه الأسطر التالية في نهاية الملف :

Code ..


AddType application/x-httpd-php .php
AddType application/x-httpd-php .php3
LoadModule php4_module c:/php/sapi/php4apache.dll






بعد ذلك ابحث عن السطر الذي يحوي الـ ********Root أو الدليل الحاوي لملفات الـ PHP ، قم بتعديل السطر ليكون كالتالي :

Code ..


********Root "C:/Apache/htdocs"






وهذا هو الدليل الذي ستوضع فيه جميع السكربات ليتم إرسـالها للمترجم وبعد ذلك استعادتها وإرسالها للمتصفح لتُعرض كصفحة وب ، مع ملاحظة أن هذا الدليل يمـكن تغييره ، ولكن إعتماداً على ما سبق ذكره ، فإن هذا الإعداد هو الصحيح .


إعدادات الـ MySQL Server

- إعدادات الـ MySQL .

بعد إتمام عملية التركيب والتأكد منها قم بفتح الدوس MS DOS كما ذكرنا سـابقاً ، وأدخل الدليل C:\Mysql\bin كما وضحنا سابقاً ، بعد ذلك أكتب الأمر التالي :

Code ..


Mysqladmin –u root password "كلمة السر الجديدة";





وهذا الأمر كما هو واضح يعمل على اختيـار كلمة المرور الخاصة بقاعدة البيانات ولـذلك سيكون إسم المستخدم هو root وكلمة المرور هي ما قمت باختياره مع ملاحظة أن الأمر يكتب كمـا هو أي بعلامـات التنصيص .
وللتأكد من أن العملية تمت بنجاح قم بكتابة ما يلي :

Code ..


C:\mysql\bin> Mysqladmin –u root reload





إن كانت العملية ناجحة ، فسيعطيك رسـالة خطأ !

إلى هنا نصل الى نهاية إعدادات الـ MySQL Datebse وبقي أن نذكر كيفية تشغيلها ،
ادخل الـ MS DOS وأكتب ما يلي :

Code ..


C:\mysql\bin> mysqld





أو في الحالة الثانية (mysqld -- standalone) :

Code ..


C:\mysql\bin> mysqld-nt





وفي كل مرة ترغب في تشغيل الـMySQL يجب عليك كتابة هذا الأمر .




أول سكربت

بقي أن نذكر نقطة اخيرة وهي التعديل على ملف الـ php.ini والذي تم نقله الى دليل الوندوز ، قم بالبحث عن extension_dir وعدلها لتصبح extension_dir = c:\php .

بعد إتمام كل الإعدادات السـابقة بقي أن نجرّب تشغيل أحد السكربات ، فقط لنثبت أن ما قمنا به كان صحيحاً ، مع ملاحظة أنني لن اتطرق إلى شرح كتابة السكربت .

قم بالدخول إلى أي محرر نصوص مثلاً المفكرة ، وأكتب الأسطر التالية :

Code ..


<?
phpinfo();
?>





بعد ذلك قم بحفظ الملف بإسم info.php وضعه في الدليل الخاص في السيرفر كما مر معنا وهو C:\Apache\httdocs ، إذهب إلى المتصفح وادخل العنوان التالي :

Code ..


http://127.0.0.1/info.php (http://127.0.0.1/info.php)





إذا تم عرض هذه الصفحة :

فلله الحمد تمت الإعدادت بنجاح أما إن كـان لديك مشكلة ولا تعلم ما هي قم بمراجعة الإعدادت من جديد

Bakenam
04-03-2009, 11:05 PM
اتمنى الفائدة للجميع ان شاء الله وهذه هيا السلسة

الدرس الثاني : ادواتك واحتياجاتك لتبدأ في تعلم php
http://www.traidnt.net/vb/showthread.php?t=31705 (http://www.traidnt.net/vb/showthread.php?t=31705)

ركن لغة php دروس -برمجة( شرح كتابي وبالصورة)
http://www.traidnt.net/vb/showthread.php?t=31714 (http://www.traidnt.net/vb/showthread.php?t=31714)

الدرس الاول: قبل أن تتعلم Php
http://www.traidnt.net/vb/showthread.php?t=31702 (http://www.traidnt.net/vb/showthread.php?t=31702)

مقدمة في لغة php
http://www.traidnt.net/vb/showthread.php?t=31701 (http://www.traidnt.net/vb/showthread.php?t=31701)
الدرس الثالث : بدايتك مع Php
http://www.traidnt.net/vb/showthread.php?t=31706 (http://www.traidnt.net/vb/showthread.php?t=31706)

مدخلك الصحيح لعالم php !!!

http://www.traidnt.net/vb/showthread.php?t=31707 (http://www.traidnt.net/vb/showthread.php?t=31707)

Bakenam
04-03-2009, 11:06 PM
لغة ( PHP )

تتميز لغة PHP بالكثير من الخصائص التي جعلتها الخيار الأمثل لمبرمجي الويب في العالم :

السهولة

تعتبر لغة PHP من أسهل لغات البرمجة تعلما، فهي تريحك من جميع تعقيدات إدارة الذاكرة وتعقيدات معالجة النصوص الموجودة في C من جهة، والكثير من الضعف الموجود في بينية وتصميم لغة البرمجة Perl من جهة أخرى.

تمتلك لغة PHP بنية وقواعدا ثابته وواضحة جدا، معظم قواعد اللغة مأخوذة من كل من C و **** و Perl لصنع لغة برمجة عالية السهولة والسلاسة دون فقدان أي من القوة في اللغة، يفيدك ذلك إذا كنت تعلم أي شيء عن لغات البرمجة الأخرى مثل Visual Basic أو C أو **** حيث ستجد دائما بأنك تفهم مواد الدورة بسرعة، وستكتشف كيف تقوم PHP بتسهيل أصعب الأمور وإذلال العقبات التي تواجه المبرمج حتى يتفرغ تماما للإبداع فقط، كل ما تفكر به تستطيع تنفيذه بلغة PHP.

السرعة

لغة PHP من اللغات المعروفة بسرعتها العالية في تنفيذ البرامج، وخاصة في الإصدارة الرابعة من المترجم، حيث تمت كتابة مترجم PHP من الصفر ليعطي أداءا في منتهى الروعة، كما أن لغة PHP مصممة أصلا كنواة لمترجم، بحيث يمكن أن تضع هذه النواة في عدة قوالب أو أغلفة لتعمل مع التقنيات المختلفة، فيمكنك تشغيل مترجم PHP كبرنامج CGI مثلا، ولكن الأفضل هو إمكانية تركيب مترجم PHP على مزود IIS في صورة وحدة إضافية تضاف إلى المزود عن طريق دوال ISAPI، وتوجد نسخة أخرى منه تركب على مزود Apache أيضا في صورة وحدة خارجية، وتوجد أيضا نسخة مخصصة للدمج مع شفرة مزود Apache بحيث تصبح جزءا من برنامج Apache نفسه، وهي الطريقة الأكثر استخداما الآن في مزودات الويب التي تعمل على أنظمة UNIX وهي الطريقة التي تعطي أفضل أداء لمترجم PHP، حيث يصبح المترجم جزءا من المزود، وبالتالي فإنه سيكون محملا في الذاكرة بانتظار صفحات PHP ليقوم بترجمتها وعرضها للزوار مباشرة دون التأخير الإضافي الذي تتطلبه برامج Perl/CGI مثلا حيث يجب أن يتم تشغيل مترجم Perl مع كل زيارة للصفحة لترجمة الصفحة، ثم يتم إغلاق المترجم، ثم استدعاءه مجددا عند الزيارة الثانية وهكذا، وهذا يشكل فارقا كبيرا في المواقع ذات الضغط العالي بالذات، ويكون استخدام PHP حلا أفضل بكثير.

المزايا

يأتي مترجم PHP لوحده محملا بعدد هائل من الدوال الجاهزة الاستخدام في جميع المجالات، من دوال المعالجة الرياضية والحسابية إلى دوال الوصول إلى قواعد البيانات ومزودات FTP، توفر لك دوال PHP مثلا وصولا إلى مزودات البيانات MySQL و PostgreSQL و MS SQL و Oracle وغيرها من مزودات قواعد البيانات، وهنالك أيضا مجموعة من الدوال لمعالجة ملفات XML، ودوال أخرى لإرسال واستقبال الملفات عن بعد باستخدام بروتوكول FTP، وهنالك مجموعة من الدوال لمعالجة وإنتاج الصور ديناميكيا وملفات Flash ديناميكيا، ناهيك عن جميع الدوال الخاصة بمعالجة النصوص والمصفوفات.

التوافقية

كما قلنا سابقا، فعلى الرغم من أن هنالك الكثير من نسخ PHP التي يعمل كل منها في بيئة مختلفة، إلا أنها جميعا تشترك في النواة الأصلية التي تقوم بالمعالجة الحقيقة لملفات PHP لذا فإن جميع مترجمات PHP تتصرف بنفس الطريقة فيما يتعلق بتنفيذ السكريبتات، فإذا كان السكريبت الذي عملته يعمل على نظام Windows مع مزود IIS فيجب أن يعمل دون الحاجة لأية تغييرات عند نقله إلى مزود Apache، بالطبع تظل بعض الأمور البسيطة جدا التي يوفرها بعض المزودات دون غيرها، ولكن جميع البرامج التي كتبتها منذ أن بدأت تعلمي للغة إلى الآن تعمل على جميع المزودات دون الحاجة لأي تغييرات، إضافة إلى ذلك فإن التغييرات التي حدثت باللغة الأساسية من الإصدارة الثالثة إلى الرابعة قليلة جدا، وأغلب التغييرات كانت في البنية التحتية للمترجم.

الحماية

يوفر PHP الكثير من المزايا المتقدمة، ولكنه يوفر لك الطرق المناسبة لوضع الحدود على هذه المزايا، فيمكنك التحكم بعدد الإتصالات المسموحة بقاعدة البيانات مثلا، أو الحجم الأقصى للملفات التي يمكن إرسالها عبر المتصفح، أو السماح باستخدام بعض الميزات أو إلغاء استخدامها، كل هذا يتم عن طريق ملف إعدادات PHP والذي يتحكم به مدير الموقع.

قابلية التوسع

يمكنك توسعة مترجم PHP بسهولة وإضافة الميزات التي تريدها إليه بلغة C، وحيث أن الشفرة البرمجية للمترجم مفتوحة فإنك تستطيع تغيير ما تريده مباشرة لتحصل على النسخة التي تناسبك من المترجم، ويمكنك أيضا عمل الوحدات الإضافية التي تركب على المترجم لزيادة ميزاته والوظائف المبيته فيه، وفي قد قام فريق تطوير مترجم PHP مسبقا بعمل هذه المهمة وتحويل كمية ضخمة من المكتبات المكتوبة بلغة C إلى مكتبات مخصصة لتضاف إلى المترجم، ومنها حصلنا على جميع الميزات التي تحدثنا عنها مثل الوصول إلى قواعد البيانات ومعالجة ملفات XML.

تاريخ PHP

بدأت PHP كمكتبة من الدوال تضاف على لغة Perl لتسهل عمل برامج CGI بلغة Perl، وبعد أن تلقى Rasmus Lerdof بعض الاقتراحات بتحويلها إلى مترجم بسيط، قام بعمل ذلك المترجم وطرحه على الإنترنت وسماه PHP أو Personal Home Pages أي الصفحات الشخصية، فقد كان عبارة عن نسخة مصغرة من Perl مع بعض الميزات الإضافية للويب، ثم أضاف إليه دعما لنماذج HTML وسماه PHP2/FI، فقام مجموعة من المبرمجين بالعمل على مترجم PHP وأضافوا إليه واجهة تطبيقات برمجية API لتسهيل عملية توسعته فأصبح لدينا PHP 3، بعد فترة من الزمن قامت شركة Zend للتقنيات بعمل مترجمها الخاص للغة والذي سمي zend أيضا، وقد اتصف هذا المترجم بالسرعة العالية وقدراته المحسنة، وجمع مع مكتبات PHP الأخرى لتكوين نواة المترجم PHP، مترجم PHP الآن مقسم على قسمان: المترجم zend ويتم تطويره على مزودات CVS الموجودة في موقع zend والقسم الثاني يسمى PHP وهو عبارة عن المكتبات والدوال الأساسية التي تأتي مع البرنامج، يقوم مترجم zend بقراءة الملفات ومعالجتها والتعامل مع المتغيرات وتنفيذ البرنامج وتوفير واجهة تطوير للتطبيقات API لتوسعة اللغة، أما PHP فتحتوي الآن على مكتبات مكتوبة بلغة C ومتوافقة مع واجهة التطبيقات التي يوفرها مترجم zend، وبالتالي يعمل القسمان معا لتكوين مترجم PHP، وعندما تزور موقع PHP الرسمي (http://www.php.net/)الآن وتحصل على مترجم PHP جاهزا أو تحصل على الشفرة البرمجية الخاصة بك، فإنك تحصل على كل من مترجم zend ومكتبات PHP معا.
تطور PHP تطورا مفاجئا في الفترة الأخيرة، وتشير إحصائيا Net Craft إلى أن مترجم PHP هو أكثر وحدات مزود Apache انتشارات على الإنترنت، كما أن مترجم PHP مركب على حوالي مليوني مزود ويب على الإنترنت.





بنية ملفات PHP

ملفات PHP هي ملفات نصية بسيطة، تشبه في تركيبها ملفات ASP وملفات HTML بشكل عام، يتكون ملف PHP من قسمان، قسم HTML وقسم PHP، الملف بالصورة الطبيعية عبارة عن ملف HTML عادي، ولكنك تستطيع تحديد أجزاء معينة من الملف ليخرج فيها الملف من وضعية HTML إلى وضعية PHP، لإخراج الملف إلى وضعية PHP توجد عدة طرق :

1 - استخدام زوح الوسوم <?php و ?> كالتالي :


رمز PHP:

<?php

echo 'This is PHP output!';

?>

2 - استخدام زوج المختصر <? و ?> وهو يستخدم بنفس الطريقة السابقة ولكنه يكون بدون الكلمة php في وسم البداية، هذا النوع من الوسوم يحتاج إلى كمية أقل من الكتابة بالطبع، ولكنه يتعارض مع وسوم xml، لذا يقوم البعض بإغلاق ميزة الوسوم القصيرة حتى لا يحصل هذا التعارض ( يمكنك اغلاق هذه الميزة بسهولة عن طريق ملف إعدادات PHP ).

3 - استخدام زوج الوسوم ASP، وهو من اسمه زوج الوسوم المستخدم في ملفات ASP وهما <% و %>، ميزة وسوم ASP لا تكون فعالة بشكل قياسي ولكنك تستطيع تفعيلها عن طريق ملف إعدادات مترجم PHP.

4 - الطريقة الأخيرة هي استخدام زوج الوسوم التالي :


رمز PHP:

<****** language="php" >

echo 'This is PHP output!';

</******>



ولكن هذه الطريقة غير مستخدمة الآن، حيث أنها تصعب عملية التمييز بين شفرات PHP وباقي ملف HTML، وكذلك بالنسبة لبرامج كتابة ملفات HTML التي تعطي تلوينا للشفرة فأغلبها لا يتعرف على هذا النوع من الشفرة ويعتبره جزءا من ملف HTML الاعتيادي.

أفضل الطرق السابقة للتحويل إلى وضعية PHP هو استخدام زوج الوسوم الأول بالطبع، حيث أنه الأكثر استخدامها، ولا يحتوي على أية تعارضات كما أنه يعمل على جميع مترجمات PHP مهما كانت إعداداتها، ولهذا السبب سنستخدمها في جميع الأمثلة التي ستجدها في هذه الدورة.

كتابة ملفات PHP

ملفات PHP هي ملفات نصية بسيطة تماما كما هي ملفات HTML، يمكنك كتابة سكريبت PHP بأي برنامج كتابة نصوص يتيح لك كتابة الملفات النصية البسيطة Plain **** مثل Notepad على النظام ويندوز، ولكن أغلبية مبرمجي PHP يستخدمون أدوات أخرى تسهل عليهم عملية البرمجة عن طريق تلوين الشفرات البرمجية، وتسهل عملية البحث عن الملفات واستبدال المقاطع من عدة ملفات في نفس الوقت، مثل HomeSite، على الرغم من أنك لن تحتاج إلى الكثير من هذه الميزات إلا أن استخدام Notepad في عمل ملفات PHP يعتبر أمرا صعبا جدا وخاصة في الملفات الضخمة حيث أن Notepad لا تتيح فتح الملفات الكبيرة، والمشكلة الأكبر هي أنها لا توفر ترقيما للأسطر، فإذا ظهرت لك رسالة الخطأ تشير إلى وجود خطأ في السطر 53 فلن تستطيع معرفة السطر المطلوب في Notepad إلا إذا قمت بالعد يدويا من السطر الأول وحتى 53 .. حسنا ماذا لو كان الخطأ في السطر 652، يمكنك البدأ بكتابة سكريبتاتك بالبرنامج المتوفر الآن إلى أن تحصل على برنامج آخر، يمكنك بالطبع فتح ملفاتك بأي محرر نصوص، فإذا كتبتها باستخدام Notepad فهذا لا يعني بأنك ملزم باستخدام Notepad في جميع ملفاتك أو حتى في هذا الملف.

لعمل ملف PHP الآن قم بفتح محرر النصوص الذي اخترته وابدأ بكتابة الصفحة التي تريدها، ولا تنسى إحاطة شفرات PHP بالوسوم الخاصة بها، ثم احفظ الملف في أي مكان في دليل مزود الويب الخاص بك وأعطه الإمتداد المناسب .php أو .php3 حسب إعدادات مزودك، ثم قم بزيارة الصفحة باستخدام المتصفح وستجد الصفحة وقد تمت ترجمتها وعرضها عليك.

تذكر بأنك يجب أن تزور الصفحة مرور بمزود الويب، ولا يمكنك عرض الصفحة عن طريق فتحها كملف خارجي، على سبيل المثال، إذا كان الدليل الجذري لصفحات مزودك هو : C:\httpd\

وقمت بعمل صفحة أسميتها test.php في ذلك الدليل، يجب أن تقوم الآن بتشغل مزود الويب وزيارة الصفحة على العنوان http://localhost/test.php، (http://localhost/test.php،) إذا قمت باستخدام الأمر Open من القائمة File في المتصفح لفتح الملف C:\httpd\test.php فلن ترى صفحة PHP مترجمة، وسترى شفرة PHP فقط.

تدريب

قم بتنفيذ ملف PHP التالي :


رمز PHP:

This is the normal html page.<br>

<?php

echo "This is inside PHP<br>";

echo "Hello World!<br>";

?>

ما الذي تشاهده عند تنفيذ البرنامج السابق؟ من المفترض أن تشاهد الخرج التالي :


رمز PHP:

This is the normal html page.

This is inside PHP

Hello World!


ها قد انتهيت من كتابة برنامجك الأول بلغة PHP، لا تقلق إذا لم تفهم أي شيء فيه، سنتعلم الآن كيفية استخدام المتغيرات والعبارات بلغة PHP.


انتهى الدرس الأول

Bakenam
04-03-2009, 11:08 PM
هذه الوصلة
http://www.anwarica.com/php

تحتوى على كتب قيمة php & mysql بينها حاليا كتابين عربى وجارى تحميل بقية الكتب ...
تحديث: كتاب عربى آخر

الكتب المتاحة اليوم:


رمز Code:

Sam teach yourself php in 24 hours === 2.2 MB
Advanced php for *** professionals ===1.3 MB
php fast easy ***dev 2nd ===3.4 MB
php & mysql ebook ===3.2 MB
php & mysql tutorial === 0.3 MB
Oreilly Upgrading to php5===0.5 MB
PHP & Mysql Arabic MR Sakr ===3.4 MB
Mastering MySQL4 ===1.8 MB
PHP & MySQL for Dummies 2nd Edition=== 3.6 MB
php & mysql *** dev welling 2001 === 6.6 MB
*** Applications Development php4 ===5.8 MB
Full lessons php Arabic === 3.6 MB
Professional php programming === 10.4 MB
OReilly learning php5 === 1.1 MB
PHP visual blueprint hungry minds2001=== 5.2 MB
O'reilly Programming PHP===1.5 MB
Learning PHP 5 === N/A MB
PHP 5 & MySQL === N/A MB
OReilly PHP Pocket Reference === N/A MB
OReilly *** Data**** Applications with PHP & MySQL ===2.6 MB
Prentice Hall - Core PHP Programming === N/A MB
Beginning PHP 4 === N/A MB
JohnWiley & Sons MySQL === 4.1 MB
PHP 5 Power Programming October 2004 === N/A MB
Sams teach yourself php in 10 minutes 2005 === 0.4 MB
Beginning PHP , Apache & MySQL *** Development === 12.7 MB
Advanced php4 === 6.4 MB
OReilly PHP ****book === 2.7 MB
Secure php development === 12.7 MB

Bakenam
04-03-2009, 11:10 PM
دروس رائعة من نخبة أروع من الكتاب....


الــــــــدرس الــــــــــأول



مقدمة

بسم الله الرحمن الرحيم والصلاة والسلام على اشرف الانبياء والمرسلين ، في هذه المقدمة سنتطرق الى مفاهيم أساسية عن لغة البرمجة PHP وقواعد البيانات MySQL وطريقة إعداد الجهاز ليعمل كخادم ( Server ) وفي النهاية تجربة الجهاز الخادم بكتابة سكربت بسيط مع شرح طريقة عمل مثل هذه السكربات .

- ما هي الـ PHP ؟

بدأت اللغة في الظهور في عام 1994 على يد Rasmus Lerdorf ومن ثم أخذت في التطور شيئاً فشيئاً ، وفي عام 2001 بلغت عدد المواقع المصممة بالـ PHP تقريبا 6 ملايين موقع وهذا الرقم في تصاعد مستمر .

PHP كانت تعني Personal Home Page وتم تغيرها لـ PHP Hyper**** Preprocessor وهو إسمها المعروف الآن ، أما موقعها الرسمي فهو www.php.net (http://www.php.net/) .

لغة الـ PHP تعتبر من لغات البرمجة لجهة الخادم ( server-side ******ing ) وصممت خصيصاً للانترنت ، أما ما نعنيه بانها لغة برمجة لجهة الخادم فهو أن ترجمة السكربت تتم عن طريق مترجم الـ PHP الموجود في الخادم ( Server ) ، ومن ثم يرسلها الخادم لصفحة الوب لتُعرض كـ HTML أو غيرها ، لذلك فالسكربت يُترجم في كل مرة يتم فيها تحميل الصفحة ولا يعتبر هذا عيباً ، لأن الترجمة تتم بسرعة ، وزوار موقعك لا يمكنهم الشعور بذلك الفرق بينها وبين الـ HTML ، إلا إن كانت التطبيقات كثيرة نسبياً .

- ما هي الـ MySQL ؟

هي قاعدة بيانات علائقية relational data**** management system أو اختصـاراًRDBMS ، وقواعد البيانات عموماً تتيح لك التخزين والبحث وتنظيم البيانات في جداول ، كما تتيح لأكثر من مستخدم الوصول لتلك البيانات بكل سهولة .

كانت بدايتها في عام 1996، وهي تعتمد على Structured Query Language SQL التي تعتبر قاعدة البيانات المخصصة للعمل على الوب ، ولذلك حصلت الـ MySQL على جوائز عديدة لتميزها .



عملية الإعداد في الـ Windows

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

في بداية الإعداد سنحتاج إلى ما يلي :
- Apache Server ويمكنك تحميله من [ هنا ] .
- PHP 4 ويمكنك تحميله من [ هنا ] .
- MySQL وتجده في هذا الرابط [ هنا ] .

- تركيب الـ Apache Server .

قم باتمام عميلة تركيب السيرفر كأي برنامج أخر على الوندوز ولكن عند الوصول الى مكان تركيب السيرفر فيُفضل إختيار C:\apache بدلاً من وضعه داخل مجلد Program Files وذلك لتسهيل عملية الوصول الى دليل السيرفر والذي سيتم تشغيل سكربات الـ PHP من داخله .

- تركيب الـ PHP .

1. اختر مكان فك ضغك الملف هو C:\Php وذلك كما ورد سابقا لتسهيل عملية الوصول .
2. انسخ الملف php.ini-dist الى دليل الوندوز C:\Windows وقم بتغيير اسمه الى php.ini .
3. قم بنسخ الملف php4ts.dll إلى دليل C:\Windows\system .
4. إجراء بعض التعديلات على الملف php.ini وسوف نتطرق إليها لاحقاً .

- تركيب الـ MySQL Data**** .

قم بفك ضغط الملف وبعد ذلك شغّل برنامج الـ Setup لاتمام عميلة التركيب ، ويفضل اختيار الدليل Mysql تحت الـ C:\ مبـاشرة ، ليصبح كالتالي : C:\Mysql .
بعد ذلك افتح شاشة الدوس MS DOS بالذهاب إلى ابدأ ومن ثم تشغيل وكتابة الامر command ، قم بكتابة ما يلي :

Code .. -----------------------------------------------------


C:\mysql\bin> mysqld-nt --install


-----------------------------------------------------


واذا كان لديك مشكلة في تغشيل الملف قم بتجربة كتابة ما يلي :

Code .. -----------------------------------------------------


C:\mysql\bin> mysqld --standalone

-----------------------------------------------------

- إعدادات الـ Apache Server :

يجب أن يكون الـ Apache Server لا يعمل ، إن كان يعمل قم باغلاقه ، ثم إذهب إلى دليل الـ Apache وادخل الدليل الفرعي conf ستجد عدة ملفات من بينها httpd.conf وهو الملف الخاص باعدادات السيرفر ، قم بفتح الملف واضف اليه الأسطر التالية في نهاية الملف :

Code .. ____________________________________


AddType application/x-httpd-php .php
AddType application/x-httpd-php .php3
LoadModule php4_module c:/php/sapi/php4apache.dll


__________________________________________



بعد ذلك ابحث عن السطر الذي يحوي الـ ********Root أو الدليل الحاوي لملفات الـ PHP ، قم بتعديل السطر ليكون كالتالي :

Code .. ____________________________________


********Root "C:/Apache/htdocs"


__________________________________________



وهذا هو الدليل الذي ستوضع فيه جميع السكربات ليتم إرسـالها للمترجم وبعد ذلك استعادتها وإرسالها للمتصفح لتُعرض كصفحة وب ، مع ملاحظة أن هذا الدليل يمـكن تغييره ، ولكن إعتماداً على ما سبق ذكره ، فإن هذا الإعداد هو الصحيح .




- إعدادات الـ Apache Server :
يجب أن يكون الـ Apache Server لا يعمل ، إن كان يعمل قم باغلاقه ، ثم إذهب إلى دليل الـ Apache وادخل الدليل الفرعي conf ستجد عدة ملفات من بينها httpd.conf وهو الملف الخاص باعدادات السيرفر ، قم بفتح الملف واضف اليه الأسطر التالية في نهاية الملف :

Code .. ____________________________________


AddType application/x-httpd-php .php
AddType application/x-httpd-php .php3
LoadModule php4_module c:/php/sapi/php4apache.dll


__________________________________________



بعد ذلك ابحث عن السطر الذي يحوي الـ ********Root أو الدليل الحاوي لملفات الـ PHP ، قم بتعديل السطر ليكون كالتالي :

Code .. ____________________________________


********Root "C:/Apache/htdocs"


__________________________________________



وهذا هو الدليل الذي ستوضع فيه جميع السكربات ليتم إرسـالها للمترجم وبعد ذلك استعادتها وإرسالها للمتصفح لتُعرض كصفحة وب ، مع ملاحظة أن هذا الدليل يمـكن تغييره ، ولكن إعتماداً على ما سبق ذكره ، فإن هذا الإعداد هو الصحيح .



- إعدادات الـ MySQL .

بعد إتمام عملية التركيب والتأكد منها قم بفتح الدوس MS DOS كما ذكرنا سـابقاً ، وأدخل الدليل C:\Mysql\bin كما وضحنا سابقاً ، بعد ذلك أكتب الأمر التالي :

Code .. ____________________________________


Mysqladmin –u root password "كلمة السر الجديدة";


__________________________________________


وهذا الأمر كما هو واضح يعمل على اختيـار كلمة المرور الخاصة بقاعدة البيانات ولـذلك سيكون إسم المستخدم هو root وكلمة المرور هي ما قمت باختياره مع ملاحظة أن الأمر يكتب كمـا هو أي بعلامـات التنصيص .
وللتأكد من أن العملية تمت بنجاح قم بكتابة ما يلي :

Code .. ____________________________________


C:\mysql\bin> Mysqladmin –u root reload





إن كانت العملية ناجحة ، فسيعطيك رسـالة خطأ !

إلى هنا نصل الى نهاية إعدادات الـ MySQL Datebse وبقي أن نذكر كيفية تشغيلها ،
ادخل الـ MS DOS وأكتب ما يلي :

Code .. ____________________________________


C:\mysql\bin> mysqld


__________________________________________


أو في الحالة الثانية (mysqld -- standalone) :

Code .. ____________________________________


C:\mysql\bin> mysqld-nt


__________________________________________


وفي كل مرة ترغب في تشغيل الـMySQL يجب عليك كتابة هذا الأمر

أول سكربت

بقي أن نذكر نقطة اخيرة وهي التعديل على ملف الـ php.ini والذي تم نقله الى دليل الوندوز ، قم بالبحث عن extension_dir وعدلها لتصبح extension_dir = c:\php .

بعد إتمام كل الإعدادات السـابقة بقي أن نجرّب تشغيل أحد السكربات ، فقط لنثبت أن ما قمنا به كان صحيحاً ، مع ملاحظة أنني لن اتطرق إلى شرح كتابة السكربت .

قم بالدخول إلى أي محرر نصوص مثلاً المفكرة ، وأكتب الأسطر التالية :

Code .. ____________________________________


<?
phpinfo();
?>


__________________________________________


بعد ذلك قم بحفظ الملف بإسم info.php وضعه في الدليل الخاص في السيرفر كما مر معنا وهو C:\Apache\httdocs ، إذهب إلى المتصفح وادخل العنوان التالي :

Code .. ____________________________________


http://127.0.0.1/info.php (http://127.0.0.1/info.php)





الـــــــــــــدرس الـــــــثـــــــــاني



مفاهيم اساسية


بسم الله الرحمن الرحيم والصلاة والسلام على اشرف الانبياء والمرسلين اما بعد ، فبعد ان تحدثنا عن اعداد الجهاز الشخصي للعمل مع الـ PHP ، نتحدث اليوم عن المفاهيم الاساسية للغة ، لتكون البوابة الاولى للدخول والتعامل معها .

- طريقة كتابة السكربات في اللغة :

ربما تكون قد لاحظت في الدرس الأول عندما تطرقنا الى تجربة الاعدادات قمنا بكتابة اول سكربت كالتالي :

Code .. ____________________________________


<?
phpinfo();
?>

__________________________________________



وهذا السكربت البسيط يبين كيفية كتابة السكربات في اللغة بشكل واضح ، ففي بداية كل سكربت يجب أن نكتب ?> وفي نهاية السكربت نكتب <? مع ملاحظة أن هذه العلامات أو الـ Tags لها اكثر من صورة ، ولكن صورتها الشائعة هي ما ذكرها ، أما بقية الـ Tags فهي كما يلي مع بيان فوائدها واستخداماتها :
1 – <? ?> وهو الشكل الشائع .
2 – <? php?> ويستخدم في حال وجود الـ XML .
3 – <****** language='php'> </******> يمكن أن يستخدم مع الـ ********** .
4 – <% %> وهذا الـ Tags هو ما يستخدم في ASP .

وكمثال على كتابة السكربات :

Code .. ____________________________________


<?
نكتب السكربت هنا ..
?>


__________________________________________



الدمج بين الـ HTML و الـ PHP

وبالامكان كتابة صفحات الـ HTML بلغة الـ PHP بطريقتين ، أما أول طريقة فهي في الكود التالي :

Code .. ____________________________________


<p> تاريخ اليوم هو :
<?php print(date("I F j. Y")); ?>.
<p>


__________________________________________



هذه الطريقة تستعمل عادة في حالة وجود جملة قصيرة من الـ PHP يراد اضـافتها الى صفحة HTML .

اما الطريقة الثانية فهي المستخدمة في مواقع كبيرة الحجم نسبياً وتستعمل قواعد البيانات ، وبالتالي فالافضل استخدام علامات البي اتش بي من بداية السكربت وادخال الـ HTML من ضمنها ، المثال التالي يعطي نفس نتائج الكود السابق ولكن بهذه الطريقة :

Code .. ____________________________________


<?
print("<p> تاريخ اليوم هو : "
. date("I F j. Y") . ".</p>");
?>


__________________________________________



اذا قمنا بحفظ السكربت بالامتدادت الخاصة بالـ PHP وهي كمثال على ذلك .php و .php3 وغيرها ، يجب ان توضع علامة الفتح <? في اول سطر في السكربت وليس قبلها اي مسافة وعلامة الاغلاف ?> في نهايته ، بغض النظر عن ما يوجد بين هذه الـ Tags ، فيمكن أن يكون بينها الكثير من علامات الـ HTML العادية ، وبذلك سوف تتكرر علامات الفتح والاغلاق اكثر من مرة في نفس السكربت ، ربما هذا المثال يعطيك صورة أوضح :

Code .. ____________________________________


<?
echo "بسم الله الرحمن الرحيم";
?>
<title>PHPvillage قرية بي اتش بي</title>
<?
echo "النهاية";
?>



__________________________________________


فكما تلاحظ قمنا بكتابة الأمر الخاصة بالطبـاعة في لغة الـ PHP وهو echo ثم قمنا باغلاق الكتابة وكتبنا علامات خاصة بالـ HTML ومن ثم قمنا بفتح الكتابة مرة أخرى ومن ثم تابعنا كتابة السكربت



ملاحظة على الكتابة في اللغة :

يجب أن نكتب في نهاية كل سطر الرمز التالي ( ; ) الفاصلة المنقوطة ، وطبعا يوجد استثناءات لكل قاعدة ، فالمعاملات الشرطية مثل if وحلقات التكرار مثل while لا نضع لها فاصلة منقوطة في نهاية السطر ، أيضا ان كان السطر طويلاً بحيث لا يمكن مشاهدته على الشاشة بشكل كامل واردت ان تفرق الاسطر بدون وجود دالة في بداية السطر الثاني فيمكن أن ينتهي السطر بدون ( ; ) ويبدا السطر الثاني كتكملة للسطر السابق ، وعندما ترا الخطأ التالي في تنفيذ السكربت :

Code .. ____________________________________


Parse error: parse error in c:\apache\htdocs\head.php on line 13


____________________________________



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


نـــــهـــــــــــايـــــــــــة الـــــــــدرس الثاني

الـــــــــــــدرس الــــــــــــثالـــــــــث

===============================

التاريخ باللغة العربية

==============================

بسم الله الرحمن الرحيم والصلاة والسلام على اشرف الانبياء والمرسلين ، في هذا الدرس احببت أن اجيب على تسآول كثيراً ما يطرح في المنتديات وهو عن التاريخ باللغة العربية ، واتمنى من الله التوفيق في طرح الموضوع بشكل مبسط وفي متناول الجميع ..

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

دالة التاريخ في البي اتش بي هي Date ، ولها معاملين ( أي قيمتين لاعداد مخرجات الدالة ) ، احد المعاملين اجباري والثاني اختياري ، اما الاول وهو الاهم تعتمد عليه مخرجات التاريخ بشكل اساسي مثل ضبط السنة بخانتين أو ضبط الشهر باسم الشهر .. وغيرها ، اما المعامل الثاني فهو ما يسمى بـ ( UNIX time stamp) وهو خاص بنظام اليونكس وكيفية تخزين التاريخ فيه ، عموماً ما يهمنا هنا هو المعامل الأول وهو ما يسمى بـ ( Format String ) ، وكمثال على ما ذكرنا :

Code .. ____________________________________


<?
$today = date(Y-m-d);
echo $today;
?>


__________________________________________




هذا المثال سيقوم بطباعة تاريخ اليوم على الشكل التالي 2002-03-13 ، ولاهمية الرموز التي يمكن استخدامها مع الـ Date ساذكر اهمها :
d رقم اليوم في الشهر على شكل خانتين من 01 الى 31 .
D اسم اليوم في الاسبوع على شكل 3 خانات مثل Mon أي الاثنين .
g رقم الساعة في اليوم من 1 الى 12 .
j رقم اليوم في الشهر من 1 الى 31 بدون وضع الصفر .
m رقم الشهر في السنة على شكل خانتين من 01 الى 12 .
y رقم السنة على شكل خانتين ، مثلا 02 .
Y رقم السنة على شكل اربع خانات ، ومثالها 2002 .

هذه من اهم الرموز لكي تتضح الصورة فقط ، ولعلنا نتطرق لها بشكل اوسع قريباً .



================================================== =============================



انشاء الجداول في قاعدة البيانات

لتحويل التاريخ الى اللغة العربية نحتاج أن ننشئ جدولاً في قاعدة البيانات ، فلذلك قم بنسخ الكود التالي والصقه في خانة Run SQL query في الـ PHPMyadmin أو بأي طريقة اخرى تراها ، الاهم انشاء الجدول .
code.. ____________________________________


CREATE TABLE month_name (
id tinyint(4) NOT NULL default '0',
month **** NOT NULL
) TYPE=MyISAM;

INSERT INTO month_name VALUES (1, 'يناير');
INSERT INTO month_name VALUES (2, 'فبراير');
INSERT INTO month_name VALUES (3, 'مارس');
INSERT INTO month_name VALUES (4, 'ابريل');
INSERT INTO month_name VALUES (5, 'مايو');
INSERT INTO month_name VALUES (6, 'يونيو');
INSERT INTO month_name VALUES (7, 'يوليو');
INSERT INTO month_name VALUES (8, 'اغسطس');
INSERT INTO month_name VALUES (9, 'سبتمبر');
INSERT INTO month_name VALUES (10, 'اكتوبر');
INSERT INTO month_name VALUES (11, 'نوفمبر');
INSERT INTO month_name VALUES (12, 'ديسمبر');



__________________________________________


بعد انشاء هذا الجدول يجب أن يكون لديك جدول اخر يحتوي على التاريخ المراد تحوليه ، ولنفترض أن لديك الجدول ( news ) يحتوي على الحقول ( title , date ) ويحتوي على البيانات التالية :
date title
2002-04-20 الخبر الأول
2002-04-25 الخبر الثاني
2002-05-01 الخبر الثالث



================================================




ادراج التاريخ في صفحة PHP


بقي أن نقوم بتحويل التاريخ الى العربية ، وادراجه في صفحة PHP ، ولعمل ذلك سنقوم باستخدام دالة تسمى Date_Format من خلال طلب لقاعدة البيانات ، نحدد من خلاله طريقة جلب البيانات ووضعها بالصورة المطلوبة .

بقي أن نذكر أننا سوف نضطر الى كتابة طلبين لقاعدة البيانات احدهما لجلب حقول العنوان ( title ) والاخر لجلب حقول التاريخ ( date ) كما يلي :


Code .. ____________________________________


<?
$result = mysql_query("select * from news");
$sql = "SELECT CONCAT(DATE_FORMAT(date,'%d'),\"
\",month_name.month,\" \",DATE_FORMAT(date,'%Y'))
AS date FROM news ,month_name
WHERE month_name.id = month(date)";
$result2 = mysql_query("$sql");
while ($row=mysql_fetch_array($result)
and $row2=mysql_fetch_array($result2))
{
$title = $row["title"];
$date = $row2["date"];
echo "$title , $date<br>";
}
?>
__________________________________________



عند تنفيذ السكربت ، سترى ما يلي :
الخبر الأول , 20 ابريل 2002
الخبر الثاني , 25 ابريل 2002
الخبر الثالث , 01 مايو 2002



=======================

توافق البيانات

======================

في حالات كثيرة تكون كتابة السكربت السابق بهذا الشكل مسببه للكثير من المشاكل ، و خاصة عند طلب ترتيب للجدول على حسب حقل معين ، وهذه المشاكل هي في توافق البيانات مع بعضها البعض ، فلو افترضنا في مثالنا السابق أن الخبر الأول الذي يحمل التاريخ 2002-04-20 كان باسم آخر ، مثلا ( العنوان الأول ) ، وبعد اضافة حقول ترتيب لجلب البيانات كالتالي :
Code .. ____________________________________


<?
$result = mysql_query("select * from news
order by title");
$sql = "SELECT CONCAT(DATE_FORMAT(date,'%d'),\"
\",month_name.month,\" \",DATE_FORMAT(date,'%Y'))
AS date FROM news ,month_name
WHERE month_name.id = month(date)";
$result2 = mysql_query("$sql");
while ($row=mysql_fetch_array($result)
and $row2=mysql_fetch_array($result2))
{
$title = $row["title"];
$date = $row2["date"];
echo "$title , $date<br>";
}
?>

__________________________________________




ستجد أن النتائج هي :
الخبر الثالث , 20 ابريل 2002
الخبر الثاني , 25 ابريل 2002
العنوان الأول , 01 مايو 2002 وهذا بطبيعة الحال مشكلة في توافق البيانات .

ولحلها يجب أن نوافق بين الطلبين لقاعدة البيانات ، بمعنى أنه اذا رتبنا الطلب الاول حسب ( title ) يجب أن نفعل ذلك مع الطلب الثاني بتعديله ليصبح :
Code .. ____________________________________


<?
$sql = "SELECT CONCAT(DATE_FORMAT(date,'%d'),\"
\",month_name.month,\" \",DATE_FORMAT(date,'%Y'))
AS date FROM news ,month_name
WHERE month_name.id = month(date)
order by title";
?>

__________________________________________




وبالتالي تصبح البيانات المخرجه كالتالي :
الخبر الثالث , 01 مايو 2002
الخبر الثاني , 25 ابريل 2002
العنوان الأول , 20 ابريل 2002

وهي بالتاكيد صحيحة

=========================================



الـــــــــــــدرس الــــــــــــرابـــــــــــــع



المتغيرات
بسم الله الرحمن الرحيم والصلاة والسلام على اشرف الانبياء والمرسلين ، بعد المقدمات السابقة والهامة في معرفة اساسيات اللغة يمكننا بداية كتابة البرامج بلغة البي اتش بي ، وبطبيعة الحال سنبدأ من اصغر الاساسيات واهمها في كتابة البرامج عموماً وهي المتغيرات .

المتغيرات في لغة الـ PHP تبدأ بعلامة الدولار ( $ ) ، ولاسناد قيمة لذلك المتغير نستخدم علامة المساواة ( = ) ، فرضا لدينا المتغير ( Name ) والقيمة ( Khaled ) فنكتب ما يلي :

Code .. ____________________________________


<?
$Name = "Khaled";
?>


__________________________________________



هذا في حالة المتغيرات النصية ( **** ) ، وفي حالة المتغيرات الرقمية ( Numbers ) يمكن تعريف متغير ( Counter ) الذي يحمل القيمة ( 17 ) كالتالي :

Code .. ____________________________________


<?
$Counter = 17;
?>


__________________________________________



الفرق الواضح في طريقة تعريف المتغيرين النصي والرقمي هو عدم وجود علامات التنصيص في تعريف المتغيرات الرقمية بينما يجب وضع علامات التنصيص في تعريف المتغيرات النصية .

نقاط هامة في تسمية المتغيرات :
- اسماء المتغيرات في كثير من لغات البرمجة لا تتعدى 255 حرف ( المقصود بها الخانات سواء كانت حروف أو ارقـام أو علامات اخرى ) ، و في لغة الـ PHP لا يوجد حدود على عدد الخانات في تسمية المتغيرات ، ولكن في الغالب لن تحتاج الى اكثر من 15 خانة لتسمية أي متغير ، لان المبالغة في تسمية المتغيرات تسبب مشاكل في تذكر المتغيرات وما تحتوية من قيم .

- بداية كل متغير يجب أن تبدأ بحرف ( يعني حرف هجائي ) أو علامة ( _ ) Underscore ، مع تجاهل علامة الـ $ لانها لا تحسب من اسم المتغير .

- يمكن أن يحتوي اسم المتغير على الحروف أو الارقام أو علامة ( _ ) فقط ، اما العلامات الأخرى مثل ( + , - , * , / ) أو الـ & لا يمكن كتابتها في اسم المتغير .

- المتغير ( Name$ ) يختلف عن المتغير ( name$ ) لاختلاف حالة حرف الـ N ، ولذلك يجب التاكد من اسم المتغيرات بدقة لتجنب حدوث مشاكل في الوصول الى متغير معين ، وبالتاكيد لو كان لديك اسلوب خاص في تسمية المتغيرات لسهولة الوصول اليها وتذكرها ستكون كتابة السكربات اسهل بكثير .

- يستحسن أن تكون اسماء المتغيرات دالة على معانيها ، بمعنى أنه لمتغير مثل عداد الزوار يستحسن أن يكون ( counter$ ) ، ولمتغير مثل اسم المستخدم ( user$ ) .. الخ .


================================================== =================


============================

البيانات العددية ( Numeric )PHP

================================

وكما ذكرنا في التقسيم السابق أنها نوعين ( الاعداد الصحيحة Integer ) و ( الاعداد الكسرية Double ) ، وكمثال على النوعين :

Code .. ____________________________________


<?
$integer1 = 233;
$integer2 = -29;
$double1 = 5.27;
$double2 = -4.6;
?>


__________________________________________



التعامل مع البيانات العددية ( Numeric ) :
العمليات الحسابية المشهورة ( + , - , * , / ) بالاضـافة الى باقي القسمة ( % ) عمليات شائعة جداً في التعامل مع المتغيرات العددية ، وبطبيعة الحال لن نحتاج الى ذكر أي مثال عن هذه العمليات ، وسنكتفي بذكر بعض النقاط الاساسية التي قل ما يخلو سكربت منها .

اول النقاط هي اضافة المتغير الى نفسه ، بمعنى تعريف عملية حسابية على متغير معين بحيث تخزن القيمة في نفس المتغير ، مثلا لو كان لديك عدد الزوار وتريد في كل مرة أن يزود عدد الزوار بـ 1 ، يمكنك كتابة ما يلي :

Code .. ____________________________________


<?
$counter = $counter + 1;
?>

__________________________________________




بالتالي سيتم زيادة المتغير ( counter$ ) بـ 1 في كل مرة يتم فيها تنفيذ السكربت ، وبطريقة أخرى يمكن كتابة السطر السابق كالتالي :

Code .. ____________________________________


<?
$counter = $counter++;
?>

__________________________________________





والـ ++ تعني زيادة قدررها ( 1 ) على قيمة المتغير الأصلية ، وكذلك الـ -- تعني طرح 1 من القيمة الأصلية .

وفي حالة الرغبة بزيادة أي عدد أخر ( غير الواحد ) على أي متغير باسلوب الطريقة الثانية يمكن كتابة ما يلي :

Code .. ____________________________________


<?
$counter +=4;
?>



__________________________________________


وهذا يعني زيادة مقدارها 4 على قيمة المتغير الأصلية ، وبالسالب كذلك بنفس الأسلوب .

بعض الدوال الهامة

بعض الدوال الهامة في التعامل مع المتغيرات :

- isset : وهي دالة للتأكد من وجود متغير معين ، فمثلا :

Code .. ____________________________________


<?
echo isset($age);
?>


__________________________________________



سيتم طباعة الرقم 1 اذا كان المتغير ( age$ ) موجوداً ( تم انشاءه مسباقاً ) ، والعكس اذا كان غير موجود سيتم طباعة الرقم 0 ، وهذه الدالة يتم استخدامها كثيراً في الشروط وهذا ما سنتطرق اليه لاحقاً .

- unset : هذه الدالة تعمل على مسح المتغير من الذاكرة كليأ ، فقط قم بعمل التالي :

Code .. ____________________________________


<?
unset($age);
?>


__________________________________________



وفي هذه الحالة سيتم مسح المتغير ( age$ ) بشكل كامل .

- empty : وهذه الدالة معاكسة للدالة isset بحيث لو كتبنا ما يلي :

Code .. ____________________________________


<?
echo empty($age);
?>


__________________________________________



سيتم طباعة الرقم 1 في حالة عدم وجود المتغير ( age$ ) أو أن قيمة المتغير تساوي 0 أو ( فراغ ) ، وفي حالة وجود المتغير ( age$ ) لن يتم طبـاعة أي شي .

Bakenam
04-03-2009, 11:11 PM
الفكرة هي ان تضع الاوامر التي تريد تنفيذها في ملف و تضمه باستخدام include في احد الملفات التي تنفذ بشكل مستمر على الموقع.. مثللا الصفحة الرئيسية او صفحة المقدمة header او الذيل footer ومن احدى الحركات الجيدة في ان تضع صورة في الموقع بطول بكسل في عرض بكسل ويكون قيمة الخاصية src هو http://www.example.com/image.php (http://www.example.com/image.php) و بذا لن تحتاج الى تعديل الى ملف من ملفات موقعك ...

لنفرض اننا وضعنا الاوامر التي نريد تنفيذها في الملف cron.php وعملنا لها تضمين في احد الملفات التي يتكرر استخدامها





رمز Code:
<? include('cron.php'); ?>





الان سيتنفذ الكود كل مرة يطلب فيها ذلك الملف .... هذا جيد ..لكنه ليس ما نريد ... لاننا قد نرغب في تنفيذ الكود كل شهر مثلا !
لذلك قام احد المبرمجين بكتابة برنامج يدعى Pseudo-cron تجده على الرابط

http://www.bitfolge.de/?l=en&s=pseudocron (http://www.bitfolge.de/?l=en&s=pseudocron)

يستخدم هذا البرنامج نفس الاوامر التي يستخدمها مدير المهام المجدولة cron .... و يقوم بتضمين الملفات متى اتى الوقت لذلك .. بينما انت تقوم بربط

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

Bakenam
04-03-2009, 11:13 PM
الحلقة الاولي : مقدمة
هذه المرة أحببت أن أمسك بأيادي إخواني المغرمين بلغة Php والذين لا يعرفون الطريقة المثلى للبدء في تعلمها .. فكما هو ملاحظ تخبط الكثيرين في دروس المواقع المختلفة ( التي لا خلاف على أهميتها ) ولكن ما نريده هو : كيف أبدأ تعلم لغة Php ؟ ما هي الخطوة الصحيحة الأولى التي تمهد لك الطريق لاحتراف هذه اللغة ؟ والتي تيسر عليك فهم الدروس المنتشرة في الانترنت التي لا غنى عنها لأي شخص يود تعلم Php ..

اسمحوا لي أن أقدم لكم هذا الدرس البسيط والذي برأيي الشخصي هو الطريقة الأمثل لبدء تعلم Php .. ( أعيد وأكرر هو رأي شخصي لا أقل ولا أكثر ) فمن يعترض عليه فهو شأنه وانا أحترم آراءكم جميعها .. والخلاف لا يفسد للود قضية ..

إذن وقبل أن أبدأ ..أريد أن أهمس في أذن كل واحد منكم هذه الجمل :

لن أقول لكم إلام ترمز حروف Php ..
ولن أقول لكم من هو مؤسسها ..
ولن أقول لكم مراحل تطورها ..
ولن أقارن بينها وبين أي لغة برمجة أخرى ..

فأنتم تعلمون قبلي جميع هذه التفاصيل .. وأنا متأكد أن أغلبكم قد سئم منها لكثرة ما تعاد وتكرر في دروس الـphp .. (( وبيني وبينكم : ماالذي ستستفيده من معرفة هذه المعلومات ؟؟ )) صدقوني لا شيء .. المهم .. أن هذه المعلومات أصبحت معروفة لدى الجميع فلا داعي لتكرارها وتضييع وقتكم سدى بلا فائدة ..

ثم عليك قبل الشروع في تعلم لغة Php أن تكون متأكدا من رغبتك في تعلمها ... فمن ليست لديه الرغبة فلن ينجح ولن يكمل .. ومن عنده الرغبة ولو كان أقل نشاطا من سابقه فسوف يجد سهولة في تعلم اللغة ...

أما من ناحية الأمان .. فلا توجد لغة كاملة في عالم الانترنت .. كل اللغات فيها ثغرات ومخاطر .. ومهمتك هنا هو كيف تتفادى هذه المخاطر .. وليس كيف تجد لغة ليس فيها مخاطر ، فهذا مستحيل ..

بداية وقبل كل شيء أرجو أن تتأكد من وجود الأباتشي على جهازك .. فتطبيق الدرس سيكون على الأباتشي مباشرة .. وأرجو ان تقفل الانترنت حتى توفر على نفسك كلفة الاتصال وأتمنى منك أن تنهي هذا الدرس بجلسة واحدة ... فهو أضمن أن تفهم وتستوعب ما جاء فيه ..

Bakenam
04-03-2009, 11:14 PM
أولا : الفرق بين Html و Php ...

HTML هي ليست لغة برمجة كما يعتقد البعض .. إنما هي مجرد لغة تفاهم بين الصفحة والمستعرض ( انترنت اكسبلورر أو نيتسكيب أو غيره .. ) .. ما معنى ذلك ؟ معناه أن سطور HTML الموجودة في الصفحات هي مجرد أوامر موجهة للمستعرض ليقوم بأمور معينة مثل : عرض نص أو عرض صورة أو عرض روابط تشعبية ... إذن وكما يقول كبار المبرمجين إن لغة HTML هي لغة جامدة لا تتجاوب مع أي تأثيرات خارجية .. كل ما تقوم به هو ما أدخله مصمم الصفحة عليها فقط لا غير ..

جيد جدا .. ولكن وبسبب التقدم الحاصل في عالم الانترنت كان لا بد من عمل أمور تجعل HTML أكثر فاعلية وحركية مع التأثيرات الخارجية ( التأثيرات الخارجية : هي ما يقوم به زوار الصفحة من أمور وإدخالات ) فتخيل لو قمنا بعمل صفحة ترسل لنا طلبية شراء .. كيف نجعل HTML يرسل الطلب الذي سيطلبه زائر الصفحة ؟ .. لن يستطيع ، لماذا ؟ لأن HTML مهمته عرض نموذج الطلب فقط لا غير وأي شيء يدخل فيه تفاعل واستجابة لمؤثرات خارجية لن يفهمه HTML .. لذا أتت PHP لتنقذ الموقف وتضفي جوا من التفاعل مع الزائر كما لو كان هناك شخص موجود خلف الصفحة ويتجاوب مع كل ما يدخله الزائر من إدخالات وأمور .. ففي نموذج الشراء .. سيقوم HTML بعرض النموذج أما PHP فسيقوم بالتفاعل مع الزائر وأخذ طلبيته وإرسالها إلى صاحب الموقع ليطلع عليها ...

أرجو أن تكونوا قد فهمتم ما أردت الوصول إليه ...
------------------------------------------------------
وقد شرحنا هذا مسبقا بالتفصيل في دروسنا من الصفر

Bakenam
04-03-2009, 11:16 PM
ثانيا : المثال العملي ...

سنقوم بتطبيق مثال عملي ألا وهو ( نموذج طلبية طعام في مطعم إلكتروني ) ...

في الحقيقة هنا تبدأ نظريتي في تعليم لغة PHP ... ( ونظريتي لا تعني أنني أنا من اخترعها بل هي النظرية التي أؤمن أنها هي الصحيحة والتي تعلمتها عن كبار مبرمجي الـPHP ) ... فتطبيق مثال أو مشروع هو أفضل وسيلة لتعلم أوامر اللغة ... أما طريقة سرد الأوامر عليك كأنك في حصة تاريخ أو جغرافيا والطلب منك أن تحفظها فهي فاشلة بكل المقاييس ولن تصل بك إلى إي نتيجة إلا ما ندر ... فعند تطبيقك الآن للمثال العملي ، ستتدرج في الأوامر شيئا فشيئا وكل خطوة ستحتاج فيها لأوامر إضافية .. وسيزيد هذا من قابليتك لحفظها لأنك تأخذها وتطبقها ثم تحفظها .. فليس من حفظ كيفية عمل ( الكبسة ) كمن قام بعملها ( وأكلها ) ... أليس كذلك ؟!؟

إذن .. الخطوة الأولى هي عمل النموذج .. وكما عرفنا أن هذه هي مهمة HTML حيث سنقوم بعمل نموذج طلبية يظهر لزوار المطعم الالكتروني لكي يطلبوا منه الغداء ..

قم بنقل الكود التالي ووضعه في صفحة واحفظها باسم food.htm ..



رمز PHP:

<html>

<head>
<meta http-equiv="Content-Language" content="ar-jo">

<title>مطعم أبو خميس الالكتروني</title>
</head>

<body>

<p align="center"><b><font size="6" color="#000080" face="Simplified Arabic">
مطعم أبو خميس الالكتروني</font></b></p>
<p align="center"><font face="Simplified Arabic"><b>الوجبات الرئيسية</b></font></p>

<form action="" method="">

<div align="center">
<center>
<table border="1" cellpadding="3" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="50%" id="AutoNumber1">
<tr>
<td width="50%" bgcolor="#99CCFF" align="center">
<p align="center"><font face="Simplified Arabic"><b>الكمية</b></font></td>
<td width="50%" bgcolor="#99CCFF">
<p align="center"><font face="Simplified Arabic"><b>الطلبية</b></font></td>
</tr>
<tr>
<td width="50%" align="center"><input type="****" name"" size=10></td>
<td width="50%" align="center">
<p align="center"><b><font face="Simplified Arabic">كبسة</font></b></td>
</tr>
<tr>
<td width="50%" align="center"><input type="****" name"" size=10></td>
<td width="50%" align="center"><b><font face="Simplified Arabic">سلطة</font></b></td>
</tr>
<tr>
<td width="50%" align="center"><input type="****" name"" size=10></td>
<td width="50%" align="center"><b><font face="Simplified Arabic">عصير</font></b></td>
</tr>
</table>
<p align="center"><input type=submit value="أرسل الطلبية"></p>
</form>
</center>
</div>

</body>

</html>



ثانيا : المثال العملي ...

--------------------------------------------------------------------------------

سنقوم بتطبيق مثال عملي ألا وهو ( نموذج طلبية طعام في مطعم إلكتروني ) ...

في الحقيقة هنا تبدأ نظريتي في تعليم لغة PHP ... ( ونظريتي لا تعني أنني أنا من اخترعها بل هي النظرية التي أؤمن أنها هي الصحيحة والتي تعلمتها عن كبار مبرمجي الـPHP ) ... فتطبيق مثال أو مشروع هو أفضل وسيلة لتعلم أوامر اللغة ... أما طريقة سرد الأوامر عليك كأنك في حصة تاريخ أو جغرافيا والطلب منك أن تحفظها فهي فاشلة بكل المقاييس ولن تصل بك إلى إي نتيجة إلا ما ندر ... فعند تطبيقك الآن للمثال العملي ، ستتدرج في الأوامر شيئا فشيئا وكل خطوة ستحتاج فيها لأوامر إضافية .. وسيزيد هذا من قابليتك لحفظها لأنك تأخذها وتطبقها ثم تحفظها .. فليس من حفظ كيفية عمل ( الكبسة ) كمن قام بعملها ( وأكلها ) ... أليس كذلك ؟!؟

إذن .. الخطوة الأولى هي عمل النموذج .. وكما عرفنا أن هذه هي مهمة HTML حيث سنقوم بعمل نموذج طلبية يظهر لزوار المطعم الالكتروني لكي يطلبوا منه الغداء ..

قم بنقل الكود التالي ووضعه في صفحة واحفظها باسم food.htm ..





كود HTML:


<html>

<head>
<meta http-equiv="Content-Language" content="ar-jo">

<title>مطعم أبو خميس الالكتروني</title>
</head>

<body>

<p align="center"><b><font size="6" color="#000080" face="Simplified Arabic">
مطعم أبو خميس الالكتروني</font></b></p>
<p align="center"><font face="Simplified Arabic"><b>الوجبات الرئيسية</b></font></p>

<form action="" method="">

<div align="center">
<center>
<table border="1" cellpadding="3" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="50%" id="AutoNumber1">
<tr>
<td width="50%" bgcolor="#99CCFF" align="center">
<p align="center"><font face="Simplified Arabic"><b>الكمية</b></font></td>
<td width="50%" bgcolor="#99CCFF">
<p align="center"><font face="Simplified Arabic"><b>الطلبية</b></font></td>
</tr>
<tr>
<td width="50%" align="center"><input type="****" name"" size=10></td>
<td width="50%" align="center">
<p align="center"><b><font face="Simplified Arabic">كبسة</font></b></td>
</tr>
<tr>
<td width="50%" align="center"><input type="****" name"" size=10></td>
<td width="50%" align="center"><b><font face="Simplified Arabic">سلطة</font></b></td>
</tr>
<tr>
<td width="50%" align="center"><input type="****" name"" size=10></td>
<td width="50%" align="center"><b><font face="Simplified Arabic">عصير</font></b></td>
</tr>
</table>
<p align="center"><input type=submit value="أرسل الطلبية"></p>
</form>
</center>
</div>

</body>

</html>






سيكون شكل النموذج كما يلي في المتصفح :
http://www.fallosh.com/php/image3.jpg

---------------------------------------------------------------------

ملاحظة هامة : لست هنا في صدد تعليم وسوم HTML فيمكنك عمل ما تشاؤه بواسطة برنامج FrontPage وهو يقوم بإنتاج وسوم HTML تلقائيا ..

بالنسبة لكود الـHTML فلقد تعمدت وضعه ناقصا ، ومواضع النقص في الكود هي حلقات الوصل بين كود HTML و كود PHP .. فنموذج الطلب المكتوب بلغة HTML يجب ربطه بكود الـPHP الذي سنكتبه ، وذلك عن طريق الوسوم التالية :

* action : وفيه نكتب عنوان ملف الـPHP ( بمعنى آخر نكون قد ربطنا بين HTML و PHP ) اكتب في هذه الخانة ( order.php ) على فرض أن ملف الPHP الذي سنكتبه اسمه ( order.php ) وأنه موجود في نفس المجلد الموجود فيه نموذج الطلب ، ولكن ماذا لو كان النموذج موجود في مجلد آخر غير مجلد الكود ، عندها يتوجب عليك كتابة المسار كاملا في خانة action .

* method : طريقة إرسال البيانات من النموذج (HTML) إلى ملف الPHP وهي إحدى طريقتين : إما post وإما get .
- الفرق بين post و get أن post ترسل البيانات كرزمة منفصلة لملف php أما get فتضيف البيانات لنهاية عنوان ملف php .
في مثالنا هذا سنختار post لأننا سنرسل البيانات كرزمة لملف order.php .
http://www.fallosh.com/php/image1.jpg
---------------------------------------------------------------------
* name : ( أسماء الحقول ) ، فكل حقل يحتوي على بيانات معينة يقوم بإدخالها الزبون ، لذا علينا أن نعطي لكل حقل اسم حتى يتعرف عليه ملف PHP وإلا لن يتمكن ملف PHP من تمييز محتويات كل حقل ، والمهم هنا هو أن تعطي كل حقل اسم مميز يمكنك تذكره لأنك ستسخدمه مرة أخرى عند كتابة كود PHP فعلى سبيل المثال : الحقل ( كبسة ) أعطه الاسم ( kabsah ) والحقل سلطة أعطه الاسم ( salad ) والحقل عصير أعطه الاسم ( juice ) وهكذا ...
---------------------------------------------------------------------
http://www.fallosh.com/php/image2.jpg
المهم .. يبقى علينا الآن برمجة ملف بلغة PHP يقوم بمعرفة ما قد طلبه الزبون ، ثم يقوم بجمع الكميات واحتساب سعرها ثم إضافة ضريبة المبيعات على الطلبية وأمور أخرى كثيرة سنتطرق إليها لا حقا

Bakenam
04-03-2009, 11:17 PM
ثالثا : بداية البرمجة ...

اتفقنا سابقا أن نسمي ملف الكود الذي سنبرمجه order.php ...

يفضل أن تستخدم برنامج PHP Coder لكتابة أكواد php وذلك لأن له القدرة على تمييز كودات PHP ، وهذا يفيد المبتدئين كثيرا ..

قم بكتابة الكود التالي في الصفحة :



رمز PHP:

<html>
<head>
<title>مطعم أبو خميس الالكتروني</title>
</head>
<body>
<h1>مطعم أبو خميس الالكتروني</h1>
<h2>بيانات الطلبية :</h2>
</body>
</html>



احفظ الملف باسم : order.php ..
لعلك تلاحظ أننا لم نكتب أي كود PHP .. إنها مجرد وسوم HTML ..
وهنا يجب أن أنوه انه لا غنى عن أكواد HTML في PHP ولقد شرحنا لكم سابقا الفرق بينهما ...

المهم سندخل الآن كود php بسيط لتفهموا كيفية إدخال الكودات ..

أضف الأسطر التالية تحت الوسم </h2> ..
http://www.fallosh.com/php/image4.jpg
كما هو واضح أن أي كود php تريد إدخاله يجب أن يبدأ بـ(؟>) وينتهي بـ(<؟) وهذا النمط يسمى : SGML (اختصار لـ Standard Generalized Markup Language ) ..

يوجد هناك أنماط أخرى لإدخال كودات php وهي :

نمط : XML ... يبدأ بـ(<?php) وينتهي بـ(<؟) .
نمط : ASP ... يبدأ بـ(%>) وينتهي بـ(<%) .
نمط ****** ... يبدأ بـ(<****** LANGUAGE='php'>) وينتهي بـ(</******>) .

يمكنك استعمال أي من هذه الأنماط في إدخال كودات php ولكن برأيي الشخصي المتواضع أجد النمط الأول الأفضل والأكثر استخداما وهو الذي يستخدمه مطوري لغة PHP .

على كل حال .. أول جملة php تعلمناها الآن هي :


رمز PHP:

echo "<p>تم استلام طلبيتك!";




سوف يعطي نفس النتيجة لو كتبناه هكذا :


رمز PHP:

echo "السلام";
echo " عليكم";


ثالثا : بداية البرمجة ...

--------------------------------------------------------------------------------

اتفقنا سابقا أن نسمي ملف الكود الذي سنبرمجه order.php ...

يفضل أن تستخدم برنامج PHP Coder لكتابة أكواد php وذلك لأن له القدرة على تمييز كودات PHP ، وهذا يفيد المبتدئين كثيرا ..

قم بكتابة الكود التالي في الصفحة :


كود HTML:

<html>
<head>
<title>مطعم أبو خميس الالكتروني</title>
</head>
<body>
<h1>مطعم أبو خميس الالكتروني</h1>
<h2>بيانات الطلبية :</h2>
</body>
</html>

احفظ الملف باسم : order.php ..
لعلك تلاحظ أننا لم نكتب أي كود PHP .. إنها مجرد وسوم HTML ..
وهنا يجب أن أنوه انه لا غنى عن أكواد HTML في PHP ولقد شرحنا لكم سابقا الفرق بينهما ...

المهم سندخل الآن كود php بسيط لتفهموا كيفية إدخال الكودات ..

أضف الأسطر التالية تحت الوسم </h2> ..
---------------------------------------------------------------------

---------------------------------------------------------------------
كما هو واضح أن أي كود php تريد إدخاله يجب أن يبدأ بـ(؟>) وينتهي بـ(<؟) وهذا النمط يسمى : SGML (اختصار لـ Standard Generalized Markup Language ) ..

يوجد هناك أنماط أخرى لإدخال كودات php وهي :

نمط : XML ... يبدأ بـ(<?php) وينتهي بـ(<؟) .
نمط : ASP ... يبدأ بـ(%>) وينتهي بـ(<%) .
نمط ****** ... يبدأ بـ(<****** LANGUAGE='php'>) وينتهي بـ(</******>) .

يمكنك استعمال أي من هذه الأنماط في إدخال كودات php ولكن برأيي الشخصي المتواضع أجد النمط الأول الأفضل والأكثر استخداما وهو الذي يستخدمه مطوري لغة PHP .

على كل حال .. أول جملة php تعلمناها الآن هي :

كود PHP:
echo "<p>تم استلام طلبيتك!";



سوف يعطي نفس النتيجة لو كتبناه هكذا :


كود PHP:
echo "السلام";
echo " عليكم";



وأظن أنه لا داعي لشرح من الأوضح للقراءة والتعديل .. وأود أن أذكر أن php تتجاهل المسافات والفراغات ولا تترجمها إلى مسافات وفراغات حقيقية على المستعرض .

التعليقات ...

إن التعليقات هي ضرورية جدا لكل مبرمج ، ولا غنى لك عنها إذا أردت أن تصبح مبرمجا محترفا بمعنى الكلمة ، فهي مجرد ملاحظات تضيفها على شيفرة php وسوف يتجاهل أي نص مكتوب داخل التعليق ، وهناك 3 طرق لإضافة التعليق :
http://www.fallosh.com/php/image5.jpg
---------------------------------------------------------------------
// و # : تستخدم للملاحظات ذات السطر الواحد .
/* , */ : تستخدم للملاحظات الطويلة ذات الأسطر المتعددة .

وتكتب في التعليقات عادة مهمة الكود ليسهل عليك تذكر وظائف الكودات التي كتبتها عندما ترغب في تطوير أو إصلاح أي عطل فيه .

إضافة محتوى ديناميكي ...

لحد الآن لم نقم بإدخال كود php يستطيع عمل شيء لا يستطيع HTML عمله .. ولكن الآن سوف نقوم بإدخال كود يجعل من صفحة HTML جامدة صفحة ديناميكية متفاعلة مع الزائر ... بحيث يشعر الزائر أن الصفحة تتفاعل معه وتتأثر بمدخلاته ...

قم بكتابة الكود التالي بعد جملة ( echo "<p>تم استلام طلبيتك!"; ) ..
http://www.fallosh.com/php/image6.jpg

* لقد تعمدت عدم كتابة الكودات لكم حتى تتعودوا على طريقة الكتابة بأنفسكم ، فأنا أرغب أن تقوم بكتابة الكود بنفسك ولا تعتمد على ( copy & paste ) ...
قم بتجربة النموذج من الصفحة food.htm لتجد النتيجة التالية :
http://www.fallosh.com/php/image7.jpg
لقد أضفنا كودا يخبر الزبون بوقت وتاريخ الطبية التي طلبها .. باستخدام الدالة ()date .. بالطبع الوقت والتاريخ سيتغير حسب توقيت الطلب ..

استدعاء الدالات ...

انظر كيف قمنا بكتابة دالة التاريخ .. هذا هو الشكل العام للدالة ، فـ PHP تمتلك مكتبة شاملة من الدالات الجاهزة التي يمكنك استدعاؤها واستخدامها متى ما شئت ذلك .. ولكن معظم هذه الدالات إن لم تكن كلها بحاجة إلى بعض المعلومات منك لكي تعمل بالشكل الصحيح ... ونسمي هذه البيانات التي ترسلها إلى الدالة وسيطة (argument) أو بارامتر (parameter) الدالة .. تلك الوسيطات أو البارامترات هي البيانات المرسلة للدالة لكي تخرج لك بعض النتائج المحددة .

ففي مثالنا الحالي : ()date هي الدالة و الجملة ( H:i, jS F ) هي البارامتر أو الوسيطة .

الوصول إلى المتغيرات ...

المتغيرات هي الفراغات التي يقوم بتعبئتها الزبون أو زائر الصفحة .. ففي مثالنا نحن هناك 3 متغيرات وهي ( الكبسة والسلطة والعصير ) ولابد من ربط هذه المتغيرات بملف الكود php وذلك عن طريق تحديد أسماء معينة لها ( وقد قمنا بذلك مسبقا ) لذا كل ما سنفعله الآن هو جعل ملف الphp يظهر المتغيرات التي سيدخلها الزبون وذلك بإضافة الكود التالي على ملف الكود :

http://www.fallosh.com/php/image8.jpg

إذهب الآن إلى صفحة ( food.htm ) وقم بتعبئة النموذج واضغط أرسل الطلبية وانظر ماذا ستكون النتيجة ؟

ملاحظة هامة : إذا لم تظهر لك كميات الطلبية ، قم بإعادة إدخال أسماء المتغيرات على الملف food.htm ولكن عن طريق الفرونت بيج .. وذلك بالضغط على الحقل مرتين وإدخال الاسم .

Bakenam
04-03-2009, 11:18 PM
رابعا : عالم المتغيرات ...
المتغيرات هي كل شيء في php ، فإذا أحسنت استخدام المتغيرات وفهمتها جيدا ستحسن البرمجة بواسطة php إن شاء الله ..

إن أي مدخلات يمكن للزائر إدخالها على صفحتك تسمى ( متغير ) لماذا ؟ لأنها تتغير حسب ما أدخله زائر الصفحة ، فمثلا : ربما يطلب شخص ( 4 كبسة و 1 سلطة و 5 عصير ) ولكن ربما يأتي شخص آخر ويطلب ( 2 كبسة و 2 سلطة و 4 عصير ) ... إذن من هنا نعلم لماذا سميت "متغيرات" !

ويمكن معرفة المتغيرات في php بسهولة فهي تبدأ دوما بعلامة الدولار ($) بينما لا تكون علامة الدولار ($) موجودة في كود html ..

هناك طريقتان للوصول إلى بيانات النموذج من خلال المتغيرات ..

إما كما فعلنا سابقا في المثال وذلك بكتابة اسم المتغير في php مضافا إلى أوله علامة الدولار وإما باستخدام إحدى هاتين المصفوفتين وذلك حسب طريقة النقل التي استخدمتها :
1- $HTTP_GET_VARS في حال كانت طريقة نقل البيانات = get
2- $HTTP_POST_VARS في حال كانت طريقة نقل البيانات = post
ونستخدمها كما يلي :
من كود php قم بحذف الكلمة : $kabsah وأدخل بدلا منها التالي :
http://www.fallosh.com/php/image10.jpg

قم بتجربة النموذج سترى أنه قام بنفس العملية .. ولكن ربما تتسائل ما الفرق بينهما ؟ سؤال وجيه جدا .. النمط الثاني يعمل بشكل أسرع ويتجنب إنشاء متغيرات تلقائية غير مطلوبة .. أما النمط الأول فهو أسهل للقراءة والكتابة ( ويجب أن يكون المرشد register_globals مضبوطا على on حتى يعمل ، ولكن لا تخف فهذا المرشد هو مضبوط أصلا على On إلا إذا قام مدير السيرفر بضبطه على off ) ...

ضم السلاسل ..

السلاسل هي أي شيء نريده أن يظهر على الشاشة في المستعرض ، وتنقسم السلاسل إلى قسمين : سلاسل حرفية وهي تكون ثابتة كنص أو أرقام وسلاسل متغيرة وهي المتغيرات ...

http://www.fallosh.com/php/image11.jpg

-----------------------------------------------------------------------
وهناك طريقتين لضم السلاسل ...
إما كما هو موضح بالصورة وكما فعلنا في مثالنا السابق .. وذلك بوضع السلسلة المتغيرة خارج علامات الاقتباس المزدوجة (" ") ووضع نقطة ( وهي مهمة لضم السلسلة ) .
وإما بوضع السلسلة المتغيرة داخل علامات الاقتباس المزدوجة وحذف النقطة كما يلي

http://www.fallosh.com/php/image12.jpg

يمكنك استخدام أي من الطريقتين حسب ذوقك ..
انتبه لعامل ضم السلاسل النقطة (.) فلو أردنا أن نضم 3 سلاسل سيكون الشكل كما يلي :

http://www.fallosh.com/php/image14.jpg
وأحب أن أنوه أن هناك نوعين من السلاسل ، سلاسل بعلامات اقتباس مزدوجة (" ") وسلاسل بعلامات اقتباس فردية (' ') الفرق بينهما أن النوع الأول يمكنك كتابة سلاسل متغيرة داخله أما الثاني فلا ، حاول أن تجربها بنفسك وترى النتيجة ..

المعرفات ..

المعرفات هي أسماء المتغيرات والدالات والفئات .. ما يهمنا هنا هو اسماء المتغيرات ..

http://www.fallosh.com/php/image13.jpg

-----------------------------------------------------------------------
والمعرفات تنطبق عليها القواعد التالية :

يمكن أن تكون المعرفات بأي طول وتتألف من أرقام وأرحرف وخط تسطير سفلي ( _ ) وعلامات دولار .
لا يمكن أن تبدأ المعرفات بعدد .
المعرفات حساسة لحالة الأحرف الصغيرة والكبيرة فـ $kabsah ليست كـ $KaBsAh .
المعرفات للمتغيرات يمكن أن تحمل اسم دالة ولكن يفضل عدم عمل ذلك حتى لا يحصل تضارب .
تعيين قيم للمتغيرات ..

نستخدم عامل التعيين ( = ) لتعيين قيمة محددة لمتغير ما .
فلنأخذ مثالنا العملي ونضيف عليه الكود التالي :
http://www.fallosh.com/php/image15.jpg
الآن نكون قد عينا قيمتين لمتغيرين الأول لكمية الطلب والثاني لسعر الطلبية كلها ، ولقد قمنا بتعينها ( 0 ) وذلك لكي لا نضيف على ما قد يطلبه الزبون أي شيء .

أنواع المتغيرات ..
integer (رقم صحيح) : يستعمل للأرقام الكاملة .
Double (مزدوج) : يستعمل للأرقام بكسور عشرية .
String (سلسلة) : يستعمل لسلاسل الأحرف والكلمات .
Array (مصفوفة) : يستعمل لتخزين عدة بنود بيانات من نفس النوع .
Object (كائن) : يستعمل لتخزين تواجد فئات .
قوة الأنواع ..

إن أنواع المتغيرات في php ضعيفة جدا ، أي أنها تتغير بكل سهولة وليست ثابتة كالمتغيرات في لغات البرمجة الأخرى ..
فمثلا في تطبيقنا العملي قمنا بتعيين القيمة ( 0 ) للمتغير $total أي أن نوع هذا المتغير هو integer (رقم صحيح) ولكن ماذا لو كتبنا بعد ذلك سطرا آخر :

رمز PHP:

$total = "السلام عليكم";


سوف يتحول نوع المتغير من integer إلى string ، فلغة php تقوم بتغيير نوع المتغير حسب القيمة المخزنة فيه في أي وقت كان .

تحويل الأنواع ..

يصعب علي شرح هذا الأمر لكن سأحاول جهدي .... خذ هذا المثال من تطبيقنا العملي :

رمز PHP:

$total = 0;
$totalprice = (double)$total;


السطر الثاني من الكود يأخذ قيمة ونوع المتغير الأول ثم يقوم بتحويل النوع إلى double ( رقم عشري ) ولكن يبقى الأول على ما هو عليه والثاني يصبح مزدوج .
وبهذه الطريقة يمكنك تحويل الأنواع فقط قم بكتابة النوع الذي تريد أن تحول عليه بين قوسين قبل المتغير .

المتغيرات المتغيرة ..

تمكننا المتغيرات المتغيرة من تغيير المعرف بشكل ديناميكي .. كيف ؟
مثلا .. نقوم بعمل متغير ما وتعين له قيمة محددة :

رمز PHP:

$chname = "kabsah";


يمكننا الآن استعمال $$chname بدلا من $kabsah .. مثلا نود تعيين قيمة $kabsah على ( 3 ) فنقوم بكتابة ما يلي :

رمز PHP:

$$chname = 5;


هذا يعطي نفس النتيجة لو كتبناه هكذا ...

رمز PHP:

$kabsah = 5;


وبهذا نستطيع استخدام متغير واحد لمعالجة عدة متغيرات في حلقة بدلا من الاضطرار إلى استعمال كل متغير بشكل منفصل .
ربما هذا الموضوع غامض الآن ولكن ستفهمه أكثر عندما تتقدم في تعلم اللغة إن شاء الله ولا يمكنني أن أشرح أكثر في هذا الموضوع لتشعبه .

الثوابت ..

كما تعلمنا سابقا يمكننا تغير قيمة المتغير بكل سهولة ، ماذا لو أردنا أن نعطي قيم ثابتة لبعض الأمور بحيث لا يمكن تغييرها لاحقا في أي مكان من الكود ...
لقد أتاحت لنا لغة php عمل ذلك بواسطة الثوابت وعن طريق الأمر define .
لنطبق على مثالنا العملي مباشرة ..
نريد أن نعين أسعار ثابتة للوجبات ، فمثلا نريد أن نحدد سعر الكبسة والسلطة والعصير بحيث يمكننا بعدها احتساب السعر الكلي للطلبية .
أضف الكود التالي على ملف الكود order.php ..
-----------------------------------------------------------------------
http://www.fallosh.com/php/image16.jpg

-----------------------------------------------------------------------
تلاحظ أننا كتبنا الثوابت بحروف كبيرة ، مع أنه لا يشترط ذلك ، ولكنه يفضل وبشدة وذلك لتمييزها عن المتغيرات ، وهناك ملاحظة هامة : عندما تريد عرض الثوابت على الشاشة فإنك لا تستخدم امامها علامة الدولار $ بعكس المتغيرات التي يجب أن تستخدم معها علامة الدولار لتعمل .

رمز PHP:

echo KABSAHPRICE;

Bakenam
04-03-2009, 11:19 PM
خامسا : العوامل ...

العوامل : هي رموز يمكنك استخدامها للتلاعب بالقيم والمتغيرات بتنفيذ عمليات معينة عليها .

لقد أخذنا لحد الآن عاملين حسب ما أذكر .. عامل ضم السلاسل النقطة (.) وعامل التعيين (=) ، لتعيين القيم للمتغيرات .

سندخل الآن بشكل مفصل في العوامل .. ولكن قبل ذلك أود أن تعرف أن العوامل تأخذ إما معامل (operands) واحد أو اثنين أو ثلاث .. والشكل التالي يوضح لك العامل والمعامل .
---------------------------------------------------------------------------
http://www.fallosh.com/php/image17.jpg


العوامل الرياضية ..

العوامل الرياضية واضحة جدا ، هي نفسها عمليات الحساب .. الموضحة في الجدول التالي :
http://www.fallosh.com/php/image18.jpg
يمكن أن نخزن في متغير مجموع متغيرين آخرين بواسطة عامل التعيين وعامل الجمع كما يلي :

رمز PHP:

$result = $a + $b;


يمكنك استعمال عامل الطرح (-) بشكل أحادي إذا أردت تعيين أرقام سالبة :

رمز PHP:

$a = -1;


عامل الباقي يقوم بقسم المتغير الأول على الثاني ويخرج لك الباقي فقط ...



رمز PHP:

$a = 13;
$b = 10;
$result = $a%$b;


تكون قيمة $result تساوي 3 .. لأن الباقي من قسمة 13 على 10 هو 3 .
ملاحظة : العوامل الرياضية تستخدم على الأرقام فقط ! ، إذا استخدمتها على أي شيء آخر سيبدأ php في ( التخبيص ) !

عامل السلاسل ..

عامل السلاسل الوحيد هو عامل ضم السلاسل النقطة (.) ... مع أننا شرحناه لكن وذكر إن الذكرى تنفع المؤمنين ، فهو يعمل كما يلي :

رمز PHP:

$a = "السلام";
$b = " عليكم";
$result = $a.$b;
echo $result;


تكون النتيجة ( السلام عليكم ) .. قم بتجربة جميع الكودات التي أعطيها لك حتى تتوضح الصورة أكثر وتصبح أسهل للفهم والاستيعاب .

عامل التعيين ..

أيضا عامل التعيين قد شرحناه وهو علامة المساواة ( = ) ولكن أود أن أوضح شيئا مهما حتى لا تختلط عليك الأمور ، فعامل التعيين ( = ) ليس معناه ( يساوي ) كما في الحساب ، بل هو معناه أن نجعل متغيرا ما قيمته كذا .. مثلا :

رمز PHP:

$a = 2;
$b = 3;


هنا جعلنا قيمة المتغير a مضبوطة عند 2 وقيمة المتغير b مضبوطة عند 3 .
لكن ماذا لو فعلنا هذا ...

رمز PHP:

$a = $b;


هل هذا معناه أن 2 = 3 !؟!؟! لا طبعا .. بل هذا معناه أن قيمة المتغير b أصبحت مضبوطة عند 2 ( وهي قيمة المتغير a ) ..
أتمنى أن تكون قد فهمت قصدي ...
ملاحظة : يمكنك استخدام عامل التعيين أثناء العمليات الرياضية باستخدام الأقواس () كما يلي :

رمز PHP:

$b = 6 + ($a = 5);


ستكون النتيجة هنا = 11 .. لأننا قمنا بإضافة 6 على $a ولكن أثناء العملية قمنا بوضع أقواس وعينا $a عند 5 ثم قام بإضافتها على 6 ، حيث أن الأقواس تعطي الأسبقية لما بداخلها .

دمج عوامل الرياضيات بعامل التعيين ..

تستخدم طريقة الدمج في حالة أننا نريد أن نضيف عدد معين على متغير لا نعرف كم ستكون قيمته ! .. على سبيل المثال : نريد أن نضيف 10 علامات على أي درجة يحصل عليها الطالب .. إذن علامة الطالب غير معروفة وسنعبر عنها بالمتغير $mark .. وسنضيف عليها 10 علامات تلقائيا .... كيف نفعل ذلك ؟؟ بالطرق العادية نفعله هكذا :


رمز PHP:

$mark = $mark + 10;


لكن php أتت وقامت بعمل عوامل مدمجة تسهل عليك هذا الأمر وتريحك من تكرار سرد المتغير ، وهذا الجدول يوضح لك تلك العوامل

http://www.fallosh.com/php/image19.jpg

إذن في مثالنا السابق بدلا من كتابته بالطريقة العادية سنكتبه هكذا :

رمز PHP:

$mark += 10;


عوامل التزايد والتناقص ..

عامل التزايد ( ++ ) وعامل التناقص ( -- ) ولهذين العاملين تأثيرين اثنين وليس تأثير واحد فقط ... فعامل التزايد يأخذ قيمة ويزيد عليها ثم يعين لها القيمة الجديدة أو العكس ... بحيث يعين لها قيمة ثم يزيد عليها ، سيتوضح لك الأمر مع المثال التالي :

رمز PHP:

$kabsah = 5;
echo ++$kabsah;


هذا العامل يسمى ( عامل التزايد ما قبل ) فهو يأخذ قيمة kabsah ألا وهي 5 ويزيد عليها واحد ثم يطبعها .. لأننا أضفنا عامل زيادة ما قبل ، فتكون النتيجة المطبوعة = 6 .

رمز PHP:

$kabsah = 5;
echo $kabsah++;


هذا العامل يسمى ( عامل التزايد ما بعد ) فهو يأخذ قيمة kabsah ألا وهي 5 ويطبعها ثم يزيد عليها .. لأننا أضفنا عامل زيادة ما بعد ، فتكون النتيجة المطبوعة = 5 ، ولكن قيمة $kabsah أصبحت 6 ولكنها طبعت قبل أن تصبح 6 .
( نفس الشيء يطبق على عامل التناقص ولكن يتم الإنقاص بدلا من الزيادة طبعا ! )

عامل المرجع ..

عامل المرجع ( & ) : هو عامل جديد ظهر في الإصدارة الرابعة من PHP وهو يقوم بعمل مرجع لقيمة المتغير للرجوع إليها في أي وقت ، شاهد المثال التالي :

رمز PHP:

$a = 3;
$a = $b;


هنا تصبح قيمة $b مضبوطة عند 3 ، ولكن ماذا لو غيرنا قيمة $a الآن :

رمز PHP:

$a = 5;


الذي سيحصل أن قيمة $b لن تتغير وستبقى مضبوطة عند 3 ... لماذا ؟ لأن php يأخذ عند التعيين قيمة المتغير ويخزنها في الذاكرة ، ففي حالتنا هذه أخذ php قيمة $a ألا وهي 3 وخزنها في $b فعندما غيرنا $a لم تتغير $b لأنها مخزنة عند 3 .
أتى عامل المرجع ( & ) في PHP4 ليتجنب تخزين قيمة للمتغير ويجعل القيمة عبارة عن مرجع يعود إليها المتغير الثاني ، ويستخدم كما يلي :

رمز PHP:

$a = 3;
$b = &$a;
$a = 5;


قيمة $b مضبوطة عند 3 ولكن لأننا استخدمنا عامل المرجع فلقد أصبحت قيمة $a هي المرجع للمتغير $b فعندما غيرنا قيمة $a تغيرت قيمة $b مباشرة ، فأصبحت الآن قيمة $b مضبوطة عند 5 لأننا غيرنا $a من 3 إلى 5 .

عوامل المقارنة ..

تستعمل عوامل المقارنة للمقارنة بين قيمتين وذلك لنحصل على نتيجة معينة ، إما صح ( true ) وإما خطأ ( false ) .
إليك قوائم هذه العوامل ، وأذكرك أنه ليس شرطا أن تحفظها فهي كثيرة ، ولكن يمكنك اعتماد هذه الجداول كمراجع لك ترجع إليها لاحقا كلما احتجت هذه العوامل .
http://www.fallosh.com/php/image20.jpg

أريد أن أوضح هنا الفرق بينا العوامل ( = ) و ( == ) و ( === ) حتى لا تختلط عليكم بعض الأمور .. لقد بينا لكم سابقا ما هو عامل التعيين ( = ) ووضحنا أنه ليس علامة يساوي كما في الرياضيات ، ففي لغة php يستخدم العامل ( == ) للتعبير عن المساواة كما في الرياضيات ، على سبيل المثال :

رمز PHP:

$a = 4;
$b = 5;
$a == $b;


ستكون النتيجة خطأ لأن $a لا يساوي $b !
أما العامل ( === ) فهو عامل جديد أيضا ظهر في php4 يعطي نتيجة صح إذا كان العاملين من متساويين ومن نفس النوع ، مثلا :

رمز PHP:

$a = 0;
$b = 0.00;
$a === $b;


ستكون النتيجة خطأ بالرغم من أن $a تساوي $b ولكنهما ليسا من نفس النوع فـ$a نوعه integer بينما $b نوعه double مع أن لهما نفس القيمة ألا وهي 0 .

العوامل المنطقية ...

تستعمل هذه العوامل لدمج نتائج عوامل المقارنة ، وذلك للتأكد من صحتها .
http://www.fallosh.com/php/image21.jpg

مازال هناك مجموعة كبيرة من العوامل ... ونحن كمبتدئين لا نحتاجها في الوقت الراهن ، فمهمتي هنا هو إدخالك إلى عالم PHP ثم بعد ذلك يمكنك الرجوع إلى php Manual وتأخذ منه كل ما تشاء .

Bakenam
04-03-2009, 11:20 PM
سادسا : التطبيق العملي مرة أخرى ...

سنعود الآن إلى تطبيقنا العملي لنطبق عليه هذه العوامل ، فنحن نريد أن نحسب مجموع الطلبية وسعرها ومقدار ضريبة المبيعات عليها .

قم بإضافة الكود التالي على ملف order.php ....
-----------------------------------------------------------------------------
http://www.fallosh.com/php/image22.jpg

-----------------------------------------------------------------------------
السطر الأول من هذا الكود الذي أضفناه مهمته جمع كمية الأصناف التي طلبها .
السطر الثاني والثالث والرابع ، يقوم باحتساب سعر الطلبية وذلك بضرب كمية كل صنف في سعره ثم جمع أسعار الأصناف الثلاثة .
السطر الأخير الذي أضفناه هو دالة جاهزة في php ومهمته أن لا يقبل أي قيمة غير رقمية .

كما رأيتم فهي محض عمليات حسابية ، يعني فقط تحتاج خبرة في مادة الرياضيات !!
لاحظ الأسطر (2و3و4) ، مع أننا يمكننا كتابته في سطر واحد ، ولكن قمنا باستخدام المسافات وذلك لكي نفصل بين كل عملية من العمليات الثلاثة التي قمنا بها .

والآن نريد أن نطبع النتائج على الشاشة ، أظنكم الآن تعرفون كيف القيام بذلك ؟
على كل حال .. هذا هو الكود الذي يقوم بذلك :
http://www.fallosh.com/php/image23.jpg
-----------------------------------------------------------------------------
الآن احفظ الملف وقم بتجربة الطلب food.htm ....
دعونا نزيد من تعقيد هذا الملف ، بإضافة ضريبة المبيعات عليها
أضف الكود التالي على الملف :
-----------------------------------------------------------------------------http://www.fallosh.com/php/image24.jpg
السطر الأول من الكود قمنا بتحديد قيمة الضريبة ألا وهي ( 0.10 ) أي 10% من السعر الإصلي .
ثم في السطر الثاني قمنا بعملية حسابية لحساب السعر مع الضريبة ، أما السطر الثالث فشرحت مهمته قبل قليل .
السطر الأخير هو لطباعة السعر مع الضريبة .
الآن جرب الملف food.htm مرة أخرى ...
انظر إلى المرحلة التي وصلت إليها في php ... نعم لقد وصلنا إلى مرحلة متقدمة جدا ... وبإذن الله تعالى ستصل إلى الاحتراف فلغة php سهلة وبسيطة ولكن عليك معرفة كيف تخوض فيها و كيف تتعلمها ......




ملاحظة هامة : إذا لم تظهر لك كميات الطلبية ، قم بإعادة إدخال أسماء المتغيرات على الملف food.htm ولكن عن طريق الفرونت بيج .. وذلك بالضغط على الحقل مرتين وإدخال الاسم .

Bakenam
04-03-2009, 11:21 PM
السلام عليكم
قمنا في الدرس السابق بتجهيز الادوات التي سوف نستخدمها في برمجياتنا

وفي درسنا هذا سنشرح اساسيات اللغة

اولا : كيف نكتب كود php

هناك عدة اساليب لكتابة اكواد php وهي :


رمز PHP:

<?

الكود
?>

الثاني

رمز PHP:

<?php
الكود
?>

الثالث

رمز PHP:

<****** language=php>
الكود
</******>


واستخدام اي واحد فيهم عند دونه ليس فيه فرق
الان لنأخذ مثالا عمليا لتجربه كتابة الكود
<?echo"No Thing Called Hard";
؟>
قم بحفظ الملف داخل مجلد htdocs بأسم test.php
الان
قم بفتح الملف
http://localhost/test.php (http://localhost/test.php)
انظر الي النتيجة ظهرت جملة No Thing Called Hard وحدها
لو اننا قمنا بحفظ الملف بأي امتداد اخر غير
php او php3 فأنه لن يتعامل مع الكود علي انه كود php بل سيعتبره ملف وسيقوم بعرضه للتحميل
ولن يقوم بفتحه بالمتصفح

Bakenam
04-03-2009, 11:23 PM
السلام عليكم ورحمة الله وبركاته
الدرس السابق تحدثنا عن php كلغة برمجة والفرق بينها وبين اللغات الاخري
ولكن لم نتحدث عن كيف وما هي طريقة التعامل معها
قبل ان تبدأ في اي شىء (نصيحة تعلمتها من صديق عزيز )
تخير افضل الادوات والطرق لعمل ما تريد عمله لو تكلف هذا نصف الوقت المطلوب منك لعمل هذا
الشيء فأنك فعلا ستنجز ما تريد فيه بسهوله
متطلباتنا لبدء تعلم لغة php : برنامج سيرفر شخصي - محرر نصوص - php Manual
1. برنامج السيرفر الشخصي
السيرفر الشخصي عبارة عن برنامج يعطي لجهازك امكانيه تشغيل بروتكول http مع ملفات جهازك
ويعطي صلاحيات علي حسب اللغات التي يدعمها بجعل الجهاز يترجمها compiling الي parsing
عرض صفحات html بعد تنفيذ الاوامر الموجوده بها
اغلب برامج السيرفر الشخصي تقوم بأعطائك صلاحية تصفح الملفات الموجوده داخل مجلد تحدده
لك وتدعم ال php وقواعد بيانات Mysql
انواع البرامج الموجوده متعدده منها :
PHP TRIAD (http://sourceforge.net/projects/phptriad/)

للتحميل (http://internap.dl.sourceforge.net/sourceforge/phptriad/phptriad2-2-1.exe)

PHP DEV (http://citkit.dl.sourceforge.net/sourceforge/phpdev5/phpdev4_2A.exe)

APPSERV (http://www.appservnetwork.com/)

للتحميل (http://umn.dl.sourceforge.net/sourceforge/appserv/appserv-win32-2.5.3.exe)

كلهم يتم اعدادهم ومعهم برنامج PHPMYADMIN لادارة قواعد البيانات
ومن اجل اخر اصدار
http://www.phpmyadmin.net (http://www.phpmyadmin.net/)
للتحميل (http://umn.dl.sourceforge.net/sourceforge/appserv/appserv-win32-2.5.3.exe)
بالنسبة للمحرر النصوص:
يوجد العديد والعديد من محررات النصوص اولها Notepad وهو يكون موجودا مع نظام التشغيل ويندوز
يوجد محررات كثيره جيده ومدفوعة مثل :
Dz php (http://www.dzsoft.com/download/dzphp31.exe)
PHP Coder (http://www.phpide.de/phpcoder/r2p3setup.exe)

ويوجد مجاني وهذا الذي افضله وهو فعلا اقوي من المدفوع
PHP DESIGNER 2005 (http://www.mpsoftware***.com/phpdesigner_setup.exe)
وايهم سيفي الغرض ولكني ارشح لكم PHP DESIGNER
بالنسبة ل PHP MANUAL :
وهو عبارة عن المرجع الكامل لكل ما يتعلق بلغة PHP من اكواد ودوال و فصائل (CODES - FUNCTIONS - CLASSES) ومما لا شك فيه ان اي شخص ينوي تعلم او برمجة برامج بلغة
PHP انه لا غني له عن ال MANUAL وسنعرف اهميته معا في الدروس التطبيقية بأذن الله
لتحميل ال Manual
http://www.php.net/get/php_manual_en...php.net/mirror (http://www.php.net/get/php_manual_en.chm/from/ar.php.net/mirror)

الان نفرض اننا نستخدم php traid
قم بفتح ملف التنصيب واضغط Next وانتظر حتي نهاية التنصيب
ثم اضغط close
الان تم تنصيب البرنامج
ادخل C:\
ستجد مجلد بأسم apache
ادخل الان هذا المجلد ستجد امامك ملف بأسم controlpanel.bat
قم بفتحه سيقوم بفتح صفحة انترنت امامك
اضغط فيها علي اول رابط باليسار وهو
install apache as aservice
هذا الخيار سيجعل ال Apache يعمل بصفة دورية مع كل اعادة تشغيل للجهاز
ولنجعل ال Mysql ايضا تعمل بنفس الطريقة نقوم بفتح قائمة
Start -->programs-->php triad-->mysql-->MySQL- D-NT.exe
قم بالضغط علي الملف كليك يمين وقم بأختيار copy
ثم اذهب الي
Start-->programs-->Startup
واضغط كليك يمين واختر open سيفتح لك مجلد قم بعمل paste للملف هنا
والان نقوم بعمل ريستارت للجهاز
-------------------------------------------------------
لقد ذكرنا من قبل ان ال Apache يسمح بفتح الملفات من خلال بروتوكول http:// ولكن داخل مجلد معين وفي حالتنا هنا هو
c:\apache\htdocs
قم بفتح المجلد
ستجد امامك الملفات كالاتي index.html وال index.* اي امتداد تكون دائما هي الصفحة الرئيسية
هذا الملف ستكون محتوياته هي الصفحة الرئيسية للمتصفح
phpinfo.php
وهو عباره عن ملف يقوم بعرض كل خصائص ال php بسيرفرك الشخصي
phpmyadmin
وهو عباره عن برنامج التعامل مع قواعد البيانات المشهور ولكن اصدارته قديمه ولكننا وضعنا الرابط
في الموضوع هنا لاخر اصدار
قم بحذف كل الملفات الا ملف
phpmyadmin
phpinfo.php
ولذلك لعدم اهميتهم ولو حبيت احذف الملفين الاخريين وضع مكانهما ال phpmyadmin الجديده
التي قمت بتحميلها من موقعها
الان مجلد htdocs يعتبر بمثابة مساحة تضع عليها ما تريد من برامج وملفات وهكذا
ولكن حتي الان نحن نتعامل معه كملفات نريد ان نتصفحة
ادخل الي متصفحك واكتب في شريط العنوان
http://localhost (http://localhost/)
او
http://127.0.0.1 (http://127.0.0.1/)
وبعد ذلك قم بتنصيب محرر النصوص
وهكذا نكون قد انتهينا من تجهيز ادواتنا لنبدأ بمباشرة العمل بأذن الله

Bakenam
04-03-2009, 11:25 PM
هذا الدرس معد للمبتدئين تماماً، وهو عبارة عن بعض المفاهيم التي يجب أن يفهمها مبرمج الPHP قبل أن يبدأ استخدامها.
أولاً: تعلم لغة HTML :


ان اي لغة برمجة انترنت تعتمد في عرض محتوياتها من خلال لغة ترميز لعرض البيانات في تنسيق


معين وهو HTML اذن فلغة الترميز HTML هي اول شيء يجب تعلمه حتي تستطيع اتقان عملك


والان لن نطيل عليكم سوي ان نقول ان لغة HTML ضرورية لاي مصمم او مطور او مبرمج مواقع


ولكن كيف نتعلمها لن نشرحها لانه يوجد العديد بل الكثير من المواقع التي تشرحها


منها


http://www.c4arab.com/showasection.php?lssid=2 (http://www.c4arab.com/showasection.php?lssid=2)



ثانياً: مفهوم الCGI
يختلط عند البعض معنى كلمة CGI ولغة البيرل، وهذا خطأ شائع سببه ارتباط اللغة بهذه الكلمة، والأصح أن كلمة CGI يعني Common Gateway Interface أو ما يعني واجهة المدخل العامة أو المشتركة وهي بذلك تصف الطريقة التي تتبعها كل من Perl و PHP في بعض الحالات، أي أنه لا توجد لغة اسمها CGI.
نعرف أن صفحات الويب حين بدأت كانت تعتمد أساساً على العرض وليست لها القدرة على أخذ بيانات من الزائر، لذلك نشأت طريقة الCGI وهي تعتمد على تمرير بيانات من الزائر عن طريق بروتوكول http بأحد الاسلوبين: الأخذ GET أو الإرسال POST ، يستقبلها السيرفر ويوجهها إلى برنامج الCGI الذي يمكن أن تتم برمجته بلغة السي أو بيرل، أو حتى PHP، ويقوم بمعالجتها في السيرفر وإعادة النتائج إلى الزائر عبر نفس البروتوكول.


طريقة الأخذ GET :
يعتمد هذا الاسلوب على تمرير بيانات إلى السيرفر عن طريق واصف العنوان نفسه URL، ولتوضيح ذلك سأقوم بشرح محتويات واصف العنوان بشكل كامل..


معلومات عامة:
الصيغة الكاملة لواصف صفحات الويب:
protocol://userass@chan.domain.typ.co/path/file.ext?search#hash


للوهلة الأولى يبدو للجميع وكأن العنوان يبدو غريباً، وفي الواقع هذا صحيح لأننا تعودنا على الاسلوب المختصر في استخدام العناوين www.domain.com (http://www.domain.com/) مثلاً، وذلك لأن بعض أقسام صيغة الواصف غير أساسية، وسوف أشرح كل قسم بالتفصيل لزيادة المعرفة والتوضيح أكثر، وحتى لا يتهمني البعض بالتأليف!


protocol وهذا الجزء الذي يحدد البروتوكول الذي سيستخدمه المستعرض أثناء طلب الصفحة، في العادة يتم استعمال البروتوكول الافتراضي http، في حين يمكن استخدام بروتوكولات اخرى مثل https وغيرها.


userass قد يتطلب الوصول إلى هذا القسم من الموقع اسم مستخدم وكلمة مرور خاصة، حسب بروتوكول http 1 وبدلاً من الانتظار حتى تظهر رسالة تطلب اسم دخول وكلمة مرور، يمكن كتابتها قبل اسم الموقع متبوعة بعلامة @ وهي اختيارية حسب طلب السيرفر، هل تفاجأتم بهذه المعلومة؟


chan اسم القناة، أو ما يطلق عليه البعض اسم فرعي، وهو عبارة عن معرف يقوم بتوجيه السيرفر إلى قسم خاص يتم إعداده مسبقاً، في العادة يتم استخدام www بشكل افتراضي.


domain.typ.co اسم النطاق، وهو منقسم إلى ثلاثة أقسام، أو قسمين، الأول يحدد الاسم الرئيسي، الثاني هو النوع مثلاً com ، net ، org ، edu ، info أو gov .. الخ، والقسم الثالث يحدد الدولة مثلاً: .sa أو .eg الخ


path وهو محدد المسار الذي سيقوم السيرفر باتباعه للوصول إلى الملف المطلوب، وقد يكون مساراً حقيقياً مثلما هو الحال في المجلدات أو قد يكون مساراً افتراضياً تم الإعداد له في السيرفر.
file.ext اسم الملف المطلوب وفي العادة فإن .ext يحدد نوع الملف، وإذا لم يتم تحديد الملف فسيقوم السيرفر بالبحث عن الملفات الافتراضية للبداية وهي index.htm أو index.html وربما default.htm حسب إعدادات السيرفر.


مهم جداً!:
?search وهي مجموعة من المؤشرات يتم تمريرها إلى السيرفر في حالة نقل البيانات باسلوب الأخذ GET الذي نتحدث عنه الآن، وتم الاصطلاح على تمرير قيم المؤشرات باسلوب متتابع، حيث يتم ذكر اسم المؤشر وقيمته مثل: data=2 ، وفصل كل مؤشر عن الآخر باستخدام علامة & ، كما يتم استبدال العلامات التي لا يمكن تمريرها عبر العنوان إلى إشارات خاصة، مثلاً المسافة يتم تحويلها إلى + ، أو عبر التشفير الستعشري، مثلاً: %20 (لا بد وأنكم لاحظتم بعض العناوين التي تبدو مليئة بعلامات غريبة مثل %20%2D%4E وهي ناتجة عن تشفير الرموز التي ليست بحروف أبجدية أو أرقام.


#hash وهذا المؤشر يحدد العلامة المرجعية التي يتم إدراجها ضمن ملف الHTML وهي تجبر المتصفح على عرض النقطة التي تم تحديدها، ويصطلح عليها اسم Bookmark أو علامة المرساة Anchor.


وبالتالي فإن تمرير البيانات إلى السيرفر باستخدام اسلوب GET يبدو في المثال التالي:
http://www.visualmind.net/page.cgi?a=10&b=2&c=welcome (http://www.visualmind.net/page.cgi?a=10&b=2&c=welcome)
أي أن البرنامج page.cgi سيحصل على البيانات التالي:
a=10
b=2
c=welcome
وبالتالي استخدام هذه البيانات ومعالجتها وإعادة النتائج حسب غرض السكربت كصفحة ويب.
يمكن بسهولة تمرير البيانات بهذا الاسلوب عن طريق طلب عنوان، أو عن طريق استخدام نموذج إرسال FORM وتعيين طريقة التمرير إلى GET ، كما هو في المثال التالي:
كود HTML

رمز PHP:


< form method=get action=some******.php>
<input type=**** name=test>
<input type=submit>
</form>




عند الضغط على زر الإرسال في هذا النموذج سيتم طلب الصفحة التالية:
some******.php?test=120

Bakenam
04-03-2009, 11:26 PM
طريقة الإرسال POST :
يعتمد هذا الاسلوب على تمرير البيانات إلى السيرفر أثناء عملية الاتصال حسب نظام البروتوكول المستخدم، ففي بروتوكول http يقوم المستعرض بإرسال البيانات بعد نجاح الاتصال وتمرير إشارة POST وبعدها يتم نقل البيانات بالترتيب، أما في بروتوكول https فيتم تشفير البيانات Encryption باستخدام خوارزمية خاصة.
يستقبل السيرفر البيانات بنفس الطريقة السابقة ويمررها إلى برنامج الCGI الذي يقوم بدوره بمعالجتها في السيرفر وإعادة المخرجات إلى المستعرض.

لغات PHP,ASP,PERL,CFM تعمل على السيرفر فقط:
تعتبر هذه اللغات لغات مختصة للبرامج التي تعمل على السيرفر، وبالنسبة لصفحات الويب فإن عملية تشغيل برامج الCGI يمكن تمثيلها بالعملية التالية:
المستعرض: يرسل بيانات إلى السيرفر باسلوب GET أو POST
السيرفر: يقوم بتشغيل برنامج PHP,ASP,PERL or CFM لمعالجة هذه البيانات
المستعرض: يستقبل النتائج القادمة من السيرفر على شكل صفحة ويب HTML
ومعنى ذلك أن عملية تشغيل البرنامج تتم في السيرفر وليس على المستعرض أن يتعرف على لغة البرمجة المستخدمة سواء كانت ASP, PHP أو أي من لغات CGI.
ويعني أيضاً أن السيرفر يجب أن تكون لديه القدرة على تشغيل هذا البرنامج بسرعة وبطريقة لا تجعله يغفل الطلبات الأخرى التي قد يتلقاها في نفس الوقت من مستعرضات أخرى.
كما أن ذلك يعني أن برنامج الPHP مثلاً ليس له تأثير على جهاز المستعرض.

لحسن الحظ أن لغة PHP هي أكثر اللغات التي تقدم تسهيلات في عملية استقبال البيانات القادمة من المستعرض، وعملية إرسال النتائج مرة أخرى إلى المستعرض، في حين يتطلب ذلك الكثير من الأوامر والبلاغات في اللغات الأخرى، كما أن لغة PHP اها القدرة على تكوين أي نوع من أنواع المخرجات وإرسالها إلى المستعرض فمثلاً يستطيع برنامج PHP أن يرسل نتائج على شكل HTML أو صور من نوع JPG أو PNG، أو FLASH وأنواع أخرى عديدة دون الحاجة إلى الاستعانة بملفات من هذا النوع، وذلك بفضل التوسعات الديناميكية التي يمكن أن تضاف إلى مفسر لغة PHP.

لغة PHP صديقة للغة HTML:
يعاني الكثير من مبرمجي لغات PERL,C CGI: من الإرهاق أثناء محاولة ربط برامجهم بتصميم مكون بHTML، حيث يجب أن يقوموا بتصميم الشكل في ملفات خارجية أو القيام بتخيل الشكل النهائي للمخرجات أو غير ذلك، في حين يتمتع مبرجو PHP بسهولة التحكم بالشكل والتصميم من خلال HTML وسهولة دمجها مع PHP، حيث يقوم مفسر لغة PHP بمعالجة السكربت باعتبار أنه يحتوي على تعليمات HTML، أو يمكن القول أنه يعتبر أن السكربت عبارة عن ملف HTML يحتوي على تعليمات PHP، وبالتالي فإنه سيقوم بتنفيذ تعليمات PHP ويقوم بترك تعليمات HTML كماهي ويرسلها إلى المستعرض مدمجة مع نتائج تعليمات PHP الموجودة في نفس السكربت.
وبالتالي يمكن بسهولة أن يقوم مبرمج PHP بالتعامل مع ملف السكربت عن طريق أي محرر لصفحات الويب، والتحكم بالشكل والبرمجة في نفس الوقت.
كما أن تقنية القوالب الجاهزة فتحت آفاقاً أكبر أمام مبرمجي PHP لعمل برامج تمتاز بواجهة أنيقة عالبة الجودة، قابلة للتغيير دون الحاجة إلى إعادة البرمجة.

طريقة كتابة برامج PHP:
- يمكنك تصميم صفحات الويب عن طريق أي برنامج تفضله (فرونت بيج، دريم ويفر)، أنا شخصياً أستخدم دريم ويفر MM Dreamweaver وأعتبره مثالياً لتصميم صفحات ويب.
- عندما ترغب في كتابة تعليمات PHP داخل صفحة الويب التي قمت بإنشائها، قم بعرض مصدر الصفحة (HTML View) ، وقم بوضع تعليمات PHP في المكان الذي تريد، تابع الدرس الثاني الذي قام بإعداده الأخ إبراهيم.
- قم بتجربة برامجك على جهازك أولاً قبل نقلها إلى السيرفر، ويوجد في الدرس الأول شرح لطريقة تركيب برامج السيرفر مع مفسر PHP على جهازك.

ما هي البرامج أو المواقع التي يمكنك إنتاجها من خلال PHP:
تطور PHP المذهل بشكل مستمر وإضافة العديد من التوسعات الديناميكية جعل PHP قادرة على تكوين أي نوع من البرامج التي تعمل على الويب، وتركت المجال مفتوحاً أمام مخيلة المبرمج، بدءاً بعدادت الزوار ووصولاً إلى برامج التجارة الإلكترونية العملاقة، ومروراً بمواقع المشاركة التفاعلية.
وبالرغم من أن ضخامة عدد البرامج الشهيرة التي تم إنتاجها بواسطة الPHP، إلا أنه لم يتم استغلال القدر الكافي من قدرات هذه اللغة بعد .

هل يكفي الاعتماد على السكربتات المعربة:
الاعتماد على السكربتات المعربة خطأ فادح، يمارسه العديد بل ويمتهنه آخرون، فالتعريب ليس كافياً لجعل السكربت صالحاً للعمل على بيئاتنا ومواقعنا العربية سأقوم بالتركيز على هذا الموضوع في مقالات قادمة، بالإضافة إلى أن ذلك يعطل قدرات عقولنا العربية التي يمكنها أن تنتج أفضل من ذلك يكثير، وبدلاً من التقليد والاكتفاء بالترجمة الحرفية أليس من الأفضل أن نبدأ من حيث انتهى الآخرون ونقوم بإنتاج برامجنا العربية التي تقوم بخدمة أغراضنا العربية والإسلامية؟
علماً أن لغة PHP أسهل بكثير من لغات عديدة، ولا يتطلب احترافها أكثر من بضعة أيام.

Bakenam
04-03-2009, 11:27 PM
مقدمة عن لغة php

http://www.alriyadh.com.sa/Contents/15-09-2003/RiyadhNet/images/n4-15-2003.jpg

تاريخ php : بدأت لغة php عام 1995على يد شخص يدعى راسموس ليدورف وترمز php الى segaP emoH lanosreP اي الصفحات الشخصية. وقد كانت مجرد برميجات قام بكتابتها للغة بيرل لتسهل عليه عمله في موقعه الشخصي. تطورت بعد ذلك العملية و اصبح اكثر من شخص يستخدم هذه البرميجات و بدأ يفكر جدياً في تطوير هذه البرمجيات و بدأ بالاستعانة بلغة C بشكل اكبر لتطوير لغته مترجم php. وقد حرص على ان تكون مفتوحة المصدر وبهذا كان يمكن للجميع الاطلاع على الملفات الخاصة باللغة ما أعطاها القوة وأتاح للعديد من المبرمجين تطويرها وحل الكثير من المشاكل التي تواجهها في خلال مدة زمنية قليلة وهذا ما تفتقد اليه الشركات التجارية في البطء في عملية حل مثل هذه المشاكل.
في نهاية عام 79 اصبح عدد المستخدمين حوالي 05 الفاً حول العالم او ما يوزاي 1% من المواقع على الانترنت ، وحتى ذلك الوقت ما زالت اللغة تعتمد على شخص واحد هو راسموس.
في شتاء عام 89 قام شخصان هما اندي وزيف بتطوير اللغة بشكل جذري و تعديل بعض الاخطاء المنطقية والبرمجية و قد كان الهدف هو تحسين الاداء للغة ومعالجة البطء الذي يوجد في النسخة السابقة وقد اضافت هذه التحسينات سرعه واضحه في الاداء. بنهاية عام 89 أصبح حوالي 01% من المواقع تستخدمها.
النسخة الاخير المستخدمة من php هي النسخة الرابعه. و يجب الاشارة الى ان 02% من المواقع على الانترنت تستخدمها الآن بالاضافة الى تركيب ما يقارب من مليوني مزود ويب لمترجم php ! مما يدل على الشعبيه التي وصلت اليها.
اما من حيث السهولة تتميز اللغة بسهولتها الشديدة مقارنة باللغات الاخرى فلا تحتوي على التعقيد الذي يوجد في البيرل ، فالاوامر سهله و محددة مع وجود تشابه كبير في البنية البرمجية بين php و لغة C ، و لكن بشكل ابسط فلم يعد هناك داعي للقلق بشأن ادارة الذاكرة مع المتغيرات كما هو الحال مع C.
تأتي php بكثير من الدوال الجاهزة مما يساعد المبرمجين و يوفر عليهم الكثير من الوقت و الجهد. فهناك دوال جاهزة لقواعد البيانات و دوال للتعامل مع الصور و غيرها من الدوال. بالاضافة الى ان المطورين قامو بدمج جميع المميزات التي يحتاجون اليها و لم يحصلوا عليها في لغات اخرى.
قد يكون الحليف الاقوى للغة php مزود قواعد البيانات lqsym فهو مزود قوي مجاني و ايضاً مفتوح المصدر مما يعطيه نفس المزايا التي لدى php التي ذكرها سابقاً ، الميزة الاقوى هي السرعه مقارنة بالانظمة الاخرى. و لا يعني كون النظام مجانياً انها نقطة ضعف فيه فمواقع عديدة مثل ياهو القسم المالي oohay! ecnaniF. و شركة موتورولا و وكالة ناسا الفضائية يستخدمون هذا المزود.
وقد تم تأسيس شركة lqsym في السويد على يد شخصين هما ديفيد اكسمارك و الآن السون. و تأسست الشركة رسمياً في منتصف عام 1002. و يوجد بالشركة 07 موظفاً رسمياً حول العالم.
اما ايرادات الشركة فتعتمد على تقديم دعم فني مدفوع الثمن لمن يرغب بذلك.
=======================
http://www.alriyadh.com.sa/Contents/...rning_1485.php (http://www.alriyadh.com.sa/Contents/15-09-2003/RiyadhNet/Learning_1485.php)

Bakenam
04-03-2009, 11:29 PM
السلام عليكم ورحمة الله وبركاته

الاخوة الكرام حرصت على نقل بعض الدروس المفيدة جدآ لنا في برمجة الphp
اتمنى انكم تستفيدوا منها ان شاء الله
اتمنى تثبيت هذه الموضوع لما فيه من الفائدة الكبيرة لنا جميعآ
مقدمة في لغة php (http://www.traidnt.net/vb/showthread.php?t=31701)

الدرس الاول: قبل أن تتعلم Php (http://www.traidnt.net/vb/showthread.php?t=31702)

الدرس الثاني : ادواتك واحتياجاتك لتبدأ في تعلم php (http://www.traidnt.net/vb/showthread.php?t=31705)

الدرس الثالث : بدايتك مع Php (http://www.traidnt.net/vb/showthread.php?t=31706)

مدخلك الصحيح لعالم php !!! (http://www.traidnt.net/vb/showthread.php?t=31707)

Bakenam
04-03-2009, 11:31 PM
بسم الله الرحمن الرحيم
الحمد لله رب العالمين
والصلاة السلام على أشرف المرسلين
سيدنا محمد عليه أفضل الصلوات والتسليم

السلام عليكم ورحمة الله وبركاته
تحية طيبة لرواد القسم الجميل
بداية أعتذر عن التأخير في طرح الدروس وإن شاء الله بحاول ما أنقطع مرة أخرى

كنا قد تابعنا سلسلة دروس ويفضل الرجوع أليها قبل الخوض في هذا الدرس


http://www.traidnt.net/vb/AGT04/misc/quotes/quot-top-left.gifاقتباسhttp://www.traidnt.net/vb/AGT04/misc/quotes/quot-top-right.gifhttp://www.traidnt.net/vb/AGT04/misc/quotes/quot-top-right-10.gif

[الدرس الأول] مقدمة في لغة Php والتعرف على مميزاتها (http://www.traidnt.net/vb/showthread.php?t=54666)
[الدرس الثاني] تركيب برنامج Iis (http://www.traidnt.net/vb/showthread.php?t=56278)
[الدرس الثالث] شرح كيفية تركيب مترجم لغة Php (http://www.traidnt.net/vb/showthread.php?t=57409)
[الدرس الرابع] كيف تضيف قاعدة البيانات MySQL لسيرفر IIS (http://www.traidnt.net/vb/showthread.php?t=58657)
[الدرس الخامس] تركيب ملف Php وتنفيذ صفحات Php (http://www.traidnt.net/vb/showthread.php?t=60036)
[الدرس السادس] شرح بروتوكولات تبادل المعلومات بين السيرفر والمتصفح (http://www.traidnt.net/vb/showthread.php?t=60931)
[الدرس السابع] التعليقات والمتغيرات (http://www.traidnt.net/vb/showthread.php?t=62832)
[الدرس الثامن] البيانات الحرفية والبيانات العددية (http://www.traidnt.net/vb/showthread.php?t=68694)
[الدرس التاسع] شرح متغيرات النظام والثوابت وبعض الدوال (http://www.traidnt.net/vb/showthread.php?t=70285)
http://www.traidnt.net/vb/AGT04/misc/quotes/quot-bot-left.gifhttp://www.traidnt.net/vb/AGT04/misc/quotes/quot-bot-right.gif



وإن شاء الله سنبدأ اليوم في شرح إستخدام النماذج وبعض الخواص والوسائل





نبدأ بسم الله ::





إستخدام النماذج ::

تستخدم النماذج لإستقبال قيم أو مدخلات من المستخدم أو لعرض قيم مخزنة بقاعدة بيانات كنتيجة لعملية بحث مثلاً أو أكثر ،، مثال على النماذج هو الصفحة التي تجدها دائماً عند بدء الإشتراك في خدمة يقدمها موقع معين مثل مواقع البريد الألكتروني فيطلب منك الموقع تسجيل إسمك وسنك وغيره من البيانات ويقوم بتخزين هذه البيانات تلقائياً .

ويوجد دائماً في نهاية الصفحة التي تقوم بالإدخال فيها مفتاح Submit والغرض منه هو إرسال هذه البيانات لمعالجتها .

وتتم عملية الإدخال عن طريق أدوات قياسية مثل صناديق الإدخال (**** Box) أو مفاتيخ الإختيارات (Radio buttons and check box) ، وفيما يلي شكل لكل منهم ::


http://www.eltayer.net/vb/uploaded/27.gif

والفرق بين Radio و Check هو أن الأول يمكن تنفيذ أختيار واحد فقط والثاني يعطي للمستخدم عدة إختيارات ، وسنتعرف فيما بعد كيف يمكن إدراج هذه الأدوات .

هذه الأدوات يجب أن توضع داخل النموذج ويتم الإعلان عن النموذج بالعبارتين


رمز PHP:

<Form>

</Form>



من أهم خصائص النموذج العبارتين Action و Method وفيما يلي شرح لكل منهم ::

الخاصية Action ::

تكتب على الصيغة التالية ::


رمز PHP:

<Form Action="Result_page.php">
</Form>



فتدل الخاصية على الصفحة التي يجب على برنامج السيرفر أن يقوم بالإنتقال أليها عندما يقوم المستخدم بالإنتهاء من عملية الإدخال ويضغط على مفتاح submit ويوجد بهذه الصفحة (Result_page.php) الكود اللازم لمعالجة البيانات وإظهار رسالة ترحيب (مثلاً) للمستخدم عند الإشتراك .


الخاصية Method ::

وقد تكون أحدى الحالتين ::


رمز PHP:

<Form Action="Result_page.php" Method="post">
<Form Action="Result_page.php" Method="Get">



وهما طريقتين مختلفتين لإرسال البيانات للصفحة (Result_page.php) .

وفيما يلي الفرق بين الطريقتين ::

الوسيلة Get ::

تقوم بإرسال البيانات التي قام المستخدم بإدخالها عن طريق سطر العنوان بحيث يظهر سطر العنوان مضافاً أليه المعامل ؟ ثم أسماء المتغيرات وقيمها .


http://localhost/order_page.php?name=value&age=20

وتأتي المسميات name و age من الخاصية name لأدوات الإدخال ، فعند وضع **** Box يمكن أعطاؤه الإسم age عن طريق الخاصية name ، بحيث تستطيع معرفة أن هذا الصندوق خاص بإدخال عمر المستخدم .

ولا يمكن كتابة أسماء أدوات الإدخال إلا باللغة الإنجليزية ، ولكن المدخلات تكون باللغة المراد إستخدامها .

والسطر السابق الذي يظهر في عنوان الصفحة يسمى سطر الإستعلام أو query string ، ويمكن تشفيره بحيث لا يظهر للمستخدم أو الهاكرز القيم المدخلة إلى الموقع إذا كانت البيانات سرية مثل بطاقات الإئتمان .

ونلاحظ من هنا أو الطريقة Get أنها لا تناسب إرسال بيانات حجمها كبير إلى صفحة أخرى ، لذلك يمكن إستخدام الطريقة الثانية كما سنرى .

الوسيلة Post ::

وهي نفس طريقة Get ، ولكن تستطيع إرسال بيانات بكمية أكبر ويتم هذا عن طريق إرسال البيانات من خلال إتصال مستقل ، وتتميز هذه الطريقة بأنها أكثر أمناً ، ولكن على نقيض الطريقة Get فإنها أقل سرعة .

لذلك يتم إستخدام الوسيلة Get عادة في محركات البحث ، وبذلك يستطيع الإحتفاظ بنتيجة البحث المتمثل في العنوان URL وفتحه مرة أخرى دون إعادة البحث .


درس اليوم خفيف وسهل وتعرفنا منه على أساسيات إستخدام النماذج

وإن شاء الله في الدرس القادم سيكون الدرس دسم بعض الشئ فقد وضعت هنا الأساسيات وفي الدرس القادم إن شاء الله بعض التطبيقات العملية إن شاء الله

أسأل الله أن لا أكون أطلت عليكم الحديث وإن يكون الدرس سهل ومفهوم إن شاء الله

هذا وأسأل الله لي ولكم التوفيق

Bakenam
04-03-2009, 11:33 PM
PHP Designer 2008 Professional v6.0


http://www.mpsoftware.dk/images/img_phpdesigner2008_main_s.gif



phpDesigner 2008 is today's complete integrated development environment for PHP for both beginners and professional developers that help you boost the process of editing, analyzing, debugging and publishing applications and ***sites powered by PHP and other *** languages


Designed to boost your productivity and simplify complex coding projects through intelligent set of editing tools that includes full support for PHP4/PHP5, syntax highlighters, highlighting of matching tags/braces and numerous tools and wizards to speed of your development

In phpDesigner 2008 you can work with object oriented (OO) programming in PHP5, nested code completion and have code tip displayed as you type so you do not need to look into ********ation to see classes and function attributes


The intelligent syntax highlighter in phpDesigner 2008 makes it the ideal development environment for AJAX developers. Automatic switch between syntax highlighters for PHP, HTML, CSS, and ********** dependant on your position in the file and dim the rest of the code




رابط التحميل
http://www.phpdesigner2008.com/phpde...2008_setup.exe (http://www.phpdesigner2008.com/phpdesigner2008_setup.exe)


رابط الكراك
http://rapidshare.com/files/68683456...cool3t.com.zip (http://rapidshare.com/files/68683456/PHP_Designer_2008_Professional_v6.0_cool3t.com.zip )


باسورد فك الضغط
www.cool3t.com (http://www.cool3t.com/)

Bakenam
04-03-2009, 11:35 PM
...السـلام عليكم ورحمـة الله وبركاته...

...بـلا مقدمـات...

..,,..,,..,,..,,..,,..,,..,,..,,..,,..,,..,,..

ماهي لغات البرمجة ؟
يقوم الحاسب الآلي عند أداء أي عمل من أعماله بتتبع مجموعة من التعليمات المتسلسلة
والمترابطة التي تسمى البرنامج، ويسمى من يكتب هذه التعليمات بالمبرمج، ويعتمد
تركيب الجمل والتعليمات على لغة البرمجة المستخدمة، ويتصل الإنسان بالحاسب لتوجيهه
للقيام بالأعمال التي يريدها بواسطة لغات البرمجة .

1ـ لغة الآلة :
وتسمى "اللغة الثنائية" حيث إنها تتكون من سلسلة من 0 و 1، وهي اللغة الوحيد التي
يفهمها الحاسب الآلي، حيث تحول جميع اللغات إلى لغة الآلة، حتى تتمكن معدات الحاسب
الآلي من التفاهم معها، ولأنها تتكون من صفر وواحد، لذا فقد تميزت هذه اللغة
بالصعوبة نظراً لما تتطلبه من حفظ ودقة في كتابة سلسلة طويلة من صفر وواحد بترتيب
معين، مما ينتج عنه أخطاء كثيرة من الترميز، ويجب أن يحدد المبرمج كل شي، فكل خطوة
يجب أن ينفذها البرنامج يجب أن ترمز، لذا فالمبرمج يجب أن يكون على علم بتركيب
الحاسب الداخلي، والعنا وين الرقمية لمواقع التخزين، سواء للبيانات أو التعليمات،
كما أن لكل جهاز لغة آلة تختلف عن الجهاز الآخر بحسب النوع والتركيب مما يعني أنه
يجب كتابة البرنامج بشكل ككامل مره أخرى عن الرغبة في تنفيذه على جهاز آخر، ونتيجة
لهذه الصعوبات فقد ظهرت طرق أخرى لتمثيل الترميز الثنائي، كالنظام الثماني OCTAL
والستة عشري HEX-ADECIMAL بدلا من 1، 0 فالنظام الستة عشرين يتكون من ستة عشر رمزاُ
هي : 0 ,1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 A.B,C,D,E,F .
مما يساعد على سهولة قراءة التعليمات المكتوبة وحفظها بهذه اللغة، فبدلا من كتابة
16 رقماً في سلسلة يمكن الاستعاضة عنها بأربعة رموز من رموز النظام التشغيل الستة
عشري .


2ـ لغة التجميع :
ظهرت لغة التجميع بوصفها أو لغة ترميز، تستخدم الرموز SYMBOLIC CODE للتعبير عن
تعليمات لغة الآلة، وذلك لمواجهة صعوبة الترميز بلغة الآلة، ولغة التجميع لغة قريبة
من لغة الآلة التي يفهمها الحاسب الآلي، وتسمى هذه اللغات بلغات المستوى البسيط .
ويتم استعمال مختصرات ورموز يسهل حفظها وكتابتها لكل تعليمة من تعليمات لغة الآلة،
ولغة التجميع كما في لغة الآلة مصممة للعمل على حاسب معين، مما يوفر قدرة أكبر على
استغلال موارد الحاسب الآلي ووحدة المعالجة المركزية بشكل أفضل، ويقوم البرنامج
المسمى المجمع ASSEMBLER بترجمة البرنامج المكتوب بلغة المجمع إلى لغة الآلة .


3 ـ اللغات العليا :
سميت بهذا الاسم لأنه أصبح بإمكان المبرمج كتابة البرنامج دون معرفة تفاصيل كيفية
قيام الحاسب بهذه العمليات، كمواقع التخزين وتفاصيل الجهاز الدقيقة، وتعبيرات لغات
المستوى العالي هي تعبيرات شبيهة إلى درجة كبيرة باللغة الطبيعية التي يستخدمها
الإنسان في حياته للتواصل، والتخاطب مع الآخرين .
ومن مميزات اللغات العليا التي تميزها من لغات المستوى البسيط، بالإضافة إلى ما
سبق، أن هذه اللغات غير مرتبطة بجهاز معين . أي يمكننا تنفيذ البرنامج المكتوب بلغة
من لغات المستوى العالي، كالفورتران أو الكوبول أو البيسك على أكثر من جهاز، كما
يمكن استخدام أكثر من لغة ترجمة على حاسب معين . كذلك، فإن اكتشاف الأخطاء وتصحيحها
أصبح أكثر سهولة بسبب سهولة قراءة البرامج وتتبعها وفهمها .
تسمى اللغات كالكوبول والفورتران والبيسك باللغات العليا الموجهة نحو إجراءات الحل
، PROCEDURE - ORIENTED LANGUAGES ، وهي اللغات التي يعطي فيها المبرمج التعليمات
خطوة خطوة .
ويمر البرنامج المكتوب بلغات المستوى العالي بثلاث مراح قبل أن يكون جاهزاً للتنفيذ
.

الترجمة TRANSLATION :
تحويل البرنامج المكتوب بلغة المستوى العالي إلى لغة الآلة .

الربط LINKING :
ربط الروتينات المكتبية الكائنة بالمكتبة، والتعليمات الضرورية بالبرنامج .

لتحميل LOADING :
يقوم البرنامج بتحميل شفرة الهدف والروتينات المكتبية، والتعليمات على الذاكرة
الرئيسة بغرض التنفيذ .

وكانت اللغات تصنف حسب قوتها إلى لغات أعمال، أو لغة علمية أو لغات مبتدئين ـ وفي
وقتنا الحاضر ـ فإن معظم اللغات يمكن استخدامها بكفاءة في تطبيق أنواع التطبيقات
كافة، ومن أشهر لغات المستوى العالي :

لغة الكوبول COBOL :
وكلمة COBOL هي اختصار للعبارة الإنجليزية Common Business Oriented Language ، وقد
طورت وصممت هذه اللغة من لدن لجنة من مصنعي أنظمة الحاسب الآلي ومطوريها عام 1960م
تسمى لجنة CODASYL اختصاراً لـ Conference of Data System Languages .
وقد قام المعهد الوطني الأمريكي للمعايير ANSI بتطوير نسخة معيارية من COBOL ، مفسر
كوبول يطابق المواصفات القياسية لهذا المعهد، وكان ذلك في عام 1968م وسميت
"ANSI1968" وظهر بعدها ANSI 1974 و ANSI 80 .
وينتشر استخدام لغة كوبول على نطاق واسع عالمياً حيث تستخدم في البنوك وفي المنظمات
الحكومية، وتستخدم على حاسبات كبيرة أو على حاسبات شخصية .
وتتميز لغة كوبول بقدرتها على التعامل مع الملفات؛ لذا اشتهرت بأنها لغة أعمال .


لغة الفورتران FORTRAN :
وهي اختصار عبارة FORmula TRANSlation ، وتعد لغة FORTRAN أقدم اللغات ذات المستوى
العالي، وقد ظهرت هذه اللغة في منتصف الستينات، حيث بدئ عام 1954 بالعمل على تطوير
لغة برمجة تقبل برنامجا مكتوبا بلغة قريبة من لغة الإنسان، ويحوله إلى شفرة قابلة
للتنفيذ على الحاسب الآلي، وبعد 3 سنوات أي في عام 1957م . ظهر أول مفسر فورتران.
وفي تلك الفترة كان استخدام الحاسب الآلي يكاد يكون حكراً على العلماء والمهندسين
والرياضيين، ومن الطبيعي أن تكون هذه اللغة المطورة حديثاً قد جاءت لتواكب
احتياجاتهم إذ تتميز لغة FORTRAN بقدراتها على إجراء العمليات الحسابية المعقدة وحل
المعادلات الرياضية .


لغة البيسك BASIC LANGAUGE :
وهي اختصار للعبارة الإنجليزية Beginer's All Purpose Symbolic In struction Code
أي اللغة المتعدد الأغراض للمبتدئين، وتأتي كلمة BASIC التي تعني الأساس لتحقيق
المعنى نفسه، فهذه اللغة ونظراً لبساطة تعليماتها ومحدوديتها فإنها تعد لغة مناسبة
للتعلم من قبل المبتدئين في عالم الحاسب الآلي والبرمجة، وتستخدم هذه اللغة في معظم
الحاسبات الشخصية، مما يدل على الانتشار الواسع لها، وقد طورت هذه اللغة في كلية
Dartmouth عام 1963م من لدن John Demuy و Thomas Kurtz .
وتستخدم لغة Basic الحديثة في قطاع واسع . إذ تستخدم في مجال الأعمال لقدرتها على
التعامل مع الملفات، وكذا في العمليات الرياضية من قبل العلماء والمهندسين
لامتلاكها كثيراً من الوظائف للقيام بمثل تلك العمليات المعقدة .


لغة باسكال PASCAL :
وسميت باسم العالم الفرنسي الرياضي الفذ Blaise Pascal ، وصممت هذه اللغة من قبل
العالم السويسري Niklaus Wirth ، وطرحت عام 1971م، وقد انتشرت هذه اللغة خصوصاً في
الجامعات . إذ تدرس هذه في معظم جامعات العالم لطلاب علوم الحاسب، وتمتاز لغة
PASCAL بالسهولة، واختصار الكلمات فيها إلى حد كبير، وبنيتها التركيبية وقوة
البرامج الفرعية، واستخدام المؤشرات Pointers ، وقد ظهرت نسخ جديدة من Pascal
امتازت بتلافي العيوب في النسخ السابقة، ويعد TurboPascal من شركة Borland من
البرامج المستخدمة بكثرة بين المبتدئين والتخصصين في البرامج، وتنافس هذه اللغة لغة
Basic في كثرة المستخدمين لتوافر كثير من المميزات فيها، وتستخدم هذه اللغة من قبل
الطلاب والمهندسين، كما تستخدم في قطاع الأعمال التجارية .

لغة سي C :
طورت هذه اللغة في معامل Bell من قبل Dennis Ritchie وهي تطوير لنسخة قديمه تسمى B
من لغة BCPL التي ظهرت عام 1969م . لذا سميت هذه النسخة اللاحقة بـ C .
وتشتهر لغة C باستخدامها كلغة برمجة نظم system software حيث تستخدم لكتابة برامج
النظم التشغيلية . إذ إنها تعد لغة قريبة، وتشبه إلى حد كبير لغة التجميع As-sembly
وتمتاز بسرعتها الكبيرة، كما تملك مخجموعة جيدة من التعليمات، كما أنها لغة قابلة
للنقل من جهاز إلى آخر لصغر الجزء الواجب نقله منها، وتعد لغة C من اللغات
التركيبية Structured Language .
وازداد اهتمام محترفي البرمجة بلغة الـC ، والنسخ المحسنة منها C+ , C++ . إذ إن
معظم التطبيقات تكتب بها .


لغات الجيل الرابع : Fourth-Generation language (4GL) :
سميت بهذا الاسم نسبة إلى الجيل التي ظهرت فيه، مثل هذه اللغات التي تتصف بقلة
التعليمات التي يكتبها المبرمج لتحقيق هدف ما ، فما كان يتطلب مئات الأسطر من لغة
بيسك أو الآلاف من لغة كوبول باستخدام عدد بسيط من الأسطر في هذه اللغات .
تمتاز هذه اللغات بعدة مزايا :
1ــ إنها لغة موجهة للنتائج أي إن المبرمج يهتم بطلب ما يريده من الكمبيوتر، دون أن
يوجهه لكيفية القيام بذلك .
2ــ زادت من الإنتاجية؛ لأن كتابة البرامج وصيانتها أكثر سهولة .
3ــ سهلة الاستخدام، وتتطلب قليلاً من التدريب على استخدامها، سواء كان للبرمجة أو
غيرها .
4ــ لم يعد المستخدم بحاجة إلى التفكير في الأجهزة أو هيكلية البرنامج .
وقد بدأت لغات الجيل الرابع بالانتشار بين المبرمجين، وبشكل كبير جداً لما توفره
لغات البرمجة هذه من سهولة في معاملة الملفات، وربط هذه الملفات بعضها مع بعض بغرض
التحديث أو طباعة التقارير .
كما توفر هذه اللغات قوة في المشاركة في الموارد البرمجية وخصوصاً الملفات، ومن
أمثال هذه اللغات لغة D**** من Borland ، ولغة Foxpro من Microsoft ، و Oracle من
Ingress، وتستخدم لغة الاستفسار المهيكلة SQL Structured Query Language في عمليات
بناء قواعد المعلومات وتحديثها، وتوفير الحماية اللازمة لها .

ما هي SQL ؟
SQL هي اختصار للعبارة الإنجليزية Structured Query Language أي لغة الاستفسار
المهيكلة، وهي عبارة عن مجموعة من التعليمات القريبة من اللغة الطبيعية التي توجه
نظام إدارة قواعد البيانات DBMS للقيام بعمليات بناء قواعد البيانات، وتحديثها
والبحث فيها، وعمل قواعد الحماية للبيانات .
وتمتاز لغة الاستفسار SQL بالآتي :
1ــ لغة قريبة من اللغة الطبيعية .
2ــ تستطيع الحصول على أية بيانات من قاعدة البيانات . إذ يمكن الحصول على بيانات
ملف كامل أو بعض الحقول من ملف أو مجموعة ملفات .
3ــ يهتم المستخدم بتعريف احتياجه What you want، ولا يهتم بكيفية الحصول على أو من
أين ؟ How or Where? .


اللغات الطبيعية Natural Language أو لغات الجيل الخامس :
ويقصد بها لغة الإنسان أي إيجاد لغة مبرمجة نستطيع بها توجيه الحاسب للقيام بما
نريد من أعمال، وذلك باستخدام التعبيرات الشائعة ((اطبع تقريراً يحوي اسم الطالب
والدرجة))،فالمستخدم ما عليه سوى طباعة الأمر أو إملائه للحاسب الذي يلبي الطلب .
فالمستخدم يستطيع إملاء النص وكتابته بعبارات متعدد تحمل المعنى نفسه، كأن يقول
((اطبع الاسم والدرجة لجميع الطلاب)) أو ((اطبع اسم الطالب ودرجة الاختبار
للجميع))، فالطلبان لهما المعنى نفسه، وإن اختلفا في الصياغة، فلغات البرمجة هذه
قادرة على فهم تراكيب الجمل المختلفة، وإن اختلفت اللهجات أو كان هناك أخطاء لغوية،
وإذا لم يفهم الحاسب المقصود يقوم بتقديم أسئلة لمزيد من الوضوح والوصول إلى الهدف
.
والأبحاث في مجال اللغات الطبيعية هو من المجالات التي يبحثها علم الذكاء الاصطناعي
. A.I إذ إن فهم اللغة الطبيعية يحتاج إلى كثير من الخبرات والعلاقات في ربط الجمل
وتحليل كل جملة لاستنتاج المعنى الصحيح، ومن ثم تقديم رد الفعل المناسب .


لغات الإنترنت :

لغة HTML :
وهي إحدى اللغات المستخدمة لإنشاء صفحات الويب www .
إن (Hyper**** Morkup Language) عبارة عن لغة تحوي مجموعة من الأوامر تؤدي إلى
تكوين صفحات الويب، إن إنشاء صفحة بواسطة تركيبة Ascii على منسق الكلمات يمكن أن
تحول إلى صفحة على الويب بإضافة بعض أوامر Html .
إن أوامر Html تمكن المستخدم من تنفيذ عدد من العمليات على صفحات الويب منها :
ـــ تحديد حجم النص وطريقة عرضه .
ـــ إنشاء الروابط مع الوثائق والمستندات الأخرى .
ـــ إنشاء نماذج تفاعلية مع الصفحة .
ـــ توفير الدعم للوسائط المتعددة كالفيديو والصوت والصورة .


لغة جافا **** :
وهي من اللغات المستخدمة للانترنت ولصفحات الويب في www وتهدف لغة البرمجة هذه إلى
إضافة الحيوية إلى صفحات الويب عبر النصوص المتحركة والرسوم التي تتحرك بشكل تفاعلي
والوسائط المتعددة .
ولغة جافا طورت من قبل شركة Sun Microsystems على غرار لغة C++ وتقوم الوثائق
المنشئة بلغة الترميز النصي Html باستدعاء برامج جافا كما يكن تشغيلها بصورة منفردة

..,,..,,..,,..,,..,,..,,..,,..,,..,,..,,..,,..

المصدر:
http://absba.org/vb/showthread.php?t=194821 (http://absba.org/vb/showthread.php?t=194821)

..,,..,,..,,..,,..,,..,,..,,..,,..,,..,,..,,..

.. وإن شاء الله فدتكم في نقلي ..

... وإن شاء الله يتم تثبيته ...

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

Bakenam
04-03-2009, 11:37 PM
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
الكثير يقول ان الترميز utf-8 من يساعد في نمو الموقع في محركات البحث
و انا اقول ان يساعد في ظهور الاسكربت بالشكل اللائق علي اكثر من نظام http://www.traidnt.net/vb/images/smilies/icon26.gif بعكس نظام windows-1256

الان لنشرح الطريقه :-

يقع الكثير في الخطأ الشائع بخصوص هذه العمليه و هو بإعتقاده انه بمجرد تغير الترميز من أعلى الصفحه سيتم إعتماده و ظهور قاعدة المحارف العربيه بالشكل اللائق و لكن هذا ليس صحيح يجب
تغير نوع الملف من نظام ال ansal الي نظام utf-8
عن طريق النوت باد أو اي محرر php يدعم هذه العمليه

بعد ذلك بإمكانك وضع كود الميتا هذا لتغير الترميز


رمز PHP:

<meta http-equiv="Content-Type" content="****/html; charset=utf-8" />


و إن كنت من من لا يحبوا وضع اكواد html في ملفات ال php مثلي ضع هذا الهيدر


رمز PHP:

header("Content-type: ****/html; charset=UTF-8");


و مبرووك الترميز utf-8 http://www.traidnt.net/vb/images/smilies/cupidarrow.gif

Bakenam
04-03-2009, 11:39 PM
السـلآم عليكم ورحمـة الله وبركآته

جبتلكم فيديو تتعلم فيه ال [Visual Basic 6 ] بالصوت والصورة كمـان

بدك تحمل الفيديو الحلو ..

!! ومن رابط مباشر كمــان !!

.::. تفضل .::.
إضغط هنـا (http://www.kutub.info/library/download.php?filename=05121107_916.zip&cid=18&password=6b9d53b8644dea7687826c139a0865c0)

إن شاء الله يكون سهل عليكم

وبفيدكم .. خصوصا المبتدئين منكـم .. ومن يريد التعلم من جديد

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

Bakenam
04-03-2009, 11:41 PM
السـلام عليكم ورحمـة الله وبركاته

جايبلكم [دروس] في ال [Visual Basic6]

جميلة جداً . وللمبتدئين

معلومـات عن الدروس

عنوانه : دروس في الفجوال بيسك 6
المؤلف : المعتصم بالله
نبذة عنه : كتاب عبارة عن دروس للمبتدئين في لغة الفجوال بيسك دوت نت + 6
حجم الملف : 0.18 ميجا بايت
للتحميل : http://www.kutub.info/library/images/zip.gif << اضغط هنا >>

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

ولا اظـن ذلك لأنه رابط مباشر

في المرفقات نفس الدروس

وإن شاء الله الكل بيستفيد .

Bakenam
04-03-2009, 11:44 PM
السـلام عليكم ورحمـة الله وبركاته

جبتلكم كتـاب روعـة لتعليم الفيجوال بيسك 6 ..

إن شاء الله الكل يستفيد منـه ..

اسم الكتاب: Visual Basic للجميع, نحو برمجة كائنية التوجه OOP

صورة غلاف الكتاب:

http://www.al-asiri.com/books/vb4all/cover.jpg

اللغة: عربية
المؤلف: الأستاذ تركي العسيري
نوع الملف: ZIPed PDF
حجم الملف: 1.05 ميغا بايت
تاريخ النشر:2002
عدد الصفحات:200
المستوى: مبتدأ


لتنزيل الكتاب اضغط هنا (http://www.al-asiri.com/books/vb4all/vb4all.zip)

المصدر:
http://www.vb4arab.com/vb/showthread.php?t=5391 (http://www.vb4arab.com/vb/showthread.php?t=5391)

إن شاء الله يعجبكم الكـتاب

وأرجو من كل واحد بده ينقل الموضوع ذكر المصدر

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

Bakenam
04-03-2009, 11:49 PM
بسم الله الرحمن الرحيم



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




اخواني الاعزاء في منتدانا العزيز ، خاصة الاعضاء الجدد و اللذين يريدون تعلم لغة فيجوال بيسك


قمت بكتابة هذا الدرس الذي يتعلق بكيفية عمل مفكره صغيره تشبه


[المفكرة] notepad المرفقه مع windows


== .,,. == .,,. == .,,. == .,,. == .,,. ==== .,,. == .,,. == .,,. == .,,. == .,,. ==



الادوات التي نحتاجها


1- Rich****Box و هي تتمتع بمزايا اضافيه تفوق الاداه الافتراضية ****box


2- CommonDialog وهي الاداه التي سنستخدمها في حففظ و فتح الملفات الجديده التي سنقوم
بانشائها.


ونستطيع الحصول عليهم بالنقر على الرز الايمن للماوس و الضغط على component
و اختيار الادوات السابقه.


في هذا المثال قمت بتسمية اداة صندوق النص


(Rich****Box1) بـ Editor


و اداة CommonDialog اختصارا بـ com


تنسيق البرنامج:
سنستخدم الكود التالي حتى يبقى البرنامج متناسقاً عند تغير حجم النافذه بالتصغير و التكبير



رمز PHP:

Private Sub Form_Resize()


رمز PHP:






Editor.Top = 30

Editor.Left = 30

Editor.Width = Me.Width - 200

Editor.Height = Me.Height - 800

End Sub








اوامر لائحة ملف


جديد:


رمز PHP:



Private Sub new_Click()
If sens = 0 Then
Editor = ""
Else
If MsgBox("&aring;&aacute; &Ecirc;&Ntilde;&iacute;&Iuml; &Iacute;&Yacute;&Ugrave; &Ccedil;&aacute;&Ecirc;&Ucirc;&iacute;&Ntilde;&Ccedil;&Ecirc;&iquest;", vbQuestion + vbYesNo, "Editor") = vbYes Then
Com.Filter = "&atilde;&aacute;&Yacute; &auml;&Otilde;&iacute;|*.txt|"
Com.FilterIndex = 1
Com.ShowSave
Editor.SaveFile Com.FileName
Editor.*******
End If
End If
Editor.**** = ""
End Sub




بالنسبه للمتغير sens فهو متغير قمنا بإنشاءه لنستطيع تحديد اذا ما قام المستخدم بالتعديل على النص ام لا ، و يتم التحكم به عن طريق الاجاء التالي:



رمز PHP:



Private Sub editor_Change()

sens = 1

End Sub






وسنقوم بإعطاءه قيمة اولية = صفر


فتح:


رمز PHP:



Private Sub open_Click()
Com.Filter = "&atilde;&aacute;&Yacute; &auml;&Otilde;&iacute;|*.txt|"
Com.FilterIndex = 1
Com.ShowOpen
Editor.FileName = Com.FileName
Editor.*******
Me.Caption = "Editor" & "'" & Com.FileTitle & "'"
End Sub




حفظ:


رمز PHP:




If sens = 0 Then Exit Sub
If MsgBox("&aring;&aacute; &Ecirc;&Ntilde;&iacute;&Iuml; &Iacute;&Yacute;&Ugrave; &Ccedil;&aacute;&Ecirc;&Ucirc;&iacute;&Ntilde;&Ccedil;&Ecirc;&iquest;", vbQuestion + vbYesNo, "Editor") = vbYes Then
Com.Filter = "&atilde;&aacute;&Yacute; &auml;&Otilde;&iacute;|*.txt|"
Com.FilterIndex = 1
Com.ShowSave
Editor.SaveFile Com.FileName
Editor.*******
sens = 0
End If




اغلاق:


رمز PHP:




Private Sub close_Click()
If sens = 0 Then
Editor = ""
Else
If MsgBox("&aring;&aacute; &Ecirc;&Ntilde;&iacute;&Iuml; &Iacute;&Yacute;&Ugrave; &Ccedil;&aacute;&Ecirc;&Ucirc;&iacute;&Ntilde;&Ccedil;&Ecirc;&iquest;", vbQuestion + vbYesNo, "Editor") = vbYes Then
Com.Filter = "&atilde;&aacute;&Yacute; &auml;&Otilde;&iacute;|*.txt|"
Com.FilterIndex = 1
Com.ShowSave
Editor.SaveFile Com.FileName
Editor.*******
End If
End If
Editor.**** = ""
End Sub




خروج:


رمز PHP:



Private Sub end_Click()

]If sens = 0 Then

End

]Else[/[/COLOR]center]

Call close_Click

End
[center]End If

End Sub
[/COLOR]



== .,,. == .,,. == .,,. == .,,. == .,,. ==== .,,. == .,,. == .,,. == .,,. == .,,. ==


سأقوم الآن بوضع اوامر لائحة تحرير و ارفاق البرنامج


يتبع ..



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

Bakenam
04-03-2009, 11:52 PM
السـلام عليكم ورحمـة الله وبركاته

أقدم لكم كـتاب أروع من كل الكتب الحالية لتعليم Visual Basic 6

ما بدي اطول عليكم

بس بدي منكم ردود و دعـاء كمــان بس !

في المرفقات http://www.traidnt.net/vb/images/smilies/icon30.gif

تقبلوا تحيتي . .

أخوكـم سـلطـان

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

Bakenam
04-03-2009, 11:55 PM
السلام عليكم ورحمة الله وبركاته


بدي ردود بس ودعاء كمـان لي ولوالدي


تفضلو اخواني اعضاء هذا المنتدى الجميل هذه المجموعه من الكتب لتعلم Visual Basic باللغه الانكليزيه لجميع المستويات
(المبتدئين والمتوسطين وذوي المراحل المتقدمه)


عسى ان تكون مفيده لكم




1.Visual Basic 2005 Data**** Programming (http://rapidshare.de/files/11616137/VB_2005_Data****_Programming.rar)
http://rapidshare.de/files/11616137/...rogramming.rar (http://rapidshare.de/files/11616137/VB_2005_Data****_Programming.rar)


2.Beginning Visual Basic 2005 Data****s (http://rapidshare.de/files/11910621/Beginning_Visual_Basic_2005_Data****s.rar)
http://rapidshare.de/files/11910621/..._Data****s.rar (http://rapidshare.de/files/11910621/..._Data****s.rar)




3.IT - Beginning Visual Basic 6 (http://chuckie.ickyelf.net/_____._____/****/SORTED/Programing/IT%20-%20Beginning%20Visual%20Basic%206.pdf)
http://chuckie.ickyelf.net/_____.___...0Basic%206.pdf (http://chuckie.ickyelf.net/_____._____/****/SORTED/Programing/IT%20-%20Beginning%20Visual%20Basic%206.pdf)



4.Wrox Visual Basic 2005 Programmers Reference (http://quintessence.gateit.net/E-books/Wrox/Wrox.Visual.Basic.2005.Programmers.Reference.pdf)
http://quintessence.gateit.net/E-boo....Reference.pdf (http://quintessence.gateit.net/E-books/Wrox/Wrox.Visual.Basic.2005.Programmers.Reference.pdf)



5.Design Patterns and Object Oriented Programming in Visual Basic 6 and VB NET (VBL) (http://student.uci.agh.edu.pl/~maludzin/Design%20Patterns%20and%20Object%20Oriented%20Prog ramming%20in%20Visual%20Basic%206%20and%20VB.NET%2 0(VBL).pdf)
http://student.uci.agh.edu.pl/~malud...ET%20(VBL).pdf (http://student.uci.agh.edu.pl/~malud...ET%20(VBL).pdf)



6.Visual Basic 6 in 21 Days (http://e-books.amagrammer.net/Visual%20Basic/Teach%20Yourself%20Visual%20Basic%206%20in%2021%20 Days.pdf)
http://e-books.amagrammer.net/Visual...021%20Days.pdf (http://e-books.amagrammer.net/Visual...021%20Days.pdf)



7.Programming MS Visual Basic 6 0 CHM (http://e-books.amagrammer.net/Visual%20Basic/Programming%20MS%20Visual%20Basic%206.0.CHM)
http://e-books.amagrammer.net/Visual...asic%206.0.CHM (http://e-books.amagrammer.net/Visual...asic%206.0.CHM)





وإن شاءالله الكل يستفيد


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

Bakenam
04-03-2009, 11:57 PM
اخواني الكرام

في درسنا اليوم راح نتعلم طريقة ادخال البيانات عن طريق استماره
وبحيث بعد ملاء الحقول المطلوبه يتم ارسال تلك البيانات في نفس الفورم دون اللجوء الى ارسال البيانات الى صفحة اخرى وسوف يوضح لكم الدرس اثناء الشرح


هنا شكل الفورم
http://saeedalbuainain.googlepages.com/form1.JPG

كالعادة نكتب البيانات المطلوبة
http://saeedalbuainain.googlepages.com/form3.JPG

وهنا النتيجة
http://saeedalbuainain.googlepages.com/form4.JPG

شكل الجدول
http://saeedalbuainain.googlepages.com/form2.JPG




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

تعالوا نتعلم كيف تتم هذه العملية :

بأستخدام


رمز PHP:

if($_GET['action']=="add")


وهنا الكود كامل
واي استفسار انا بالخدمة


رمز PHP:


<?
include "../include/config.php";

if($_GET['action']=="add"){


$title = $_POST['title'];
$detail =$_POST['detail'];
$sender =$_POST['sender'];
$datetime=date("d/m/y h:i:s");

$sql="INSERT INTO sms(title, detail, sender, datetime)VALUES('$title', '$detail', '$sender', '$datetime')";
$result=mysql_query($sql);

if ($result) {

echo " <CENTER><BR><BR><B><FONT color=RED>تمت الاضافة والفورم جاهز للأضافة مره اخرى";

}else{

echo "هنا مشكلة";

}
}

mysql_close();

?>
<html dir="rtl">

<head>
<meta http-equiv="Content-Language" content="en-us">
</head>

<form method="POST" action="add_msg1.php?action=add">


<div align="center">

<table border="0" cellpadding="0" cellspacing="0" width="450" dir="rtl" id="table1">
<tr>
<td>
<table border="1" cellspacing="1" width="450" dir="rtl" id="table2" bordercolorlight="#C0C0C0" bordercolordark="#FFFFFF" bordercolor="#C0C0C0">
<tr>
<td width="147"><b><span lang="ar-sa">&nbsp;عنوان الــ </span>
SMS</b></td>
<td><input type="****" name="title" id="title" size="20"></td>
</tr>
<tr>
<td width="147"><b><span lang="ar-sa">&nbsp;اسم المرسل</span></b></td>
<td><input type="****" name="sender" id="sender" size="20"></td>
</tr>
<tr>
<td width="147"><b>&nbsp;<span lang="ar-sa">اكتب هنا المسج</span></b></td>
<td><****area rows="2" name="detail" id="detail" cols="20"></****area></td>
</tr>
<tr>
<td width="147"><b>&nbsp;</b><span lang="ar-sa"><b>اختر القسم</b></span></td>
<td>
<?
include "../include/config.php";
?>
<select name="joining" style="width: 179px">
<?php
$result = mysql_query("SELECT * from cat");
while($row = mysql_fetch_array($result))
{
extract($row);
?>
<option value="<?php echo $joining;?>"><?php echo $name;?></option>
<?php
}
?>
</select>





</td>
</tr>
</table>
</td>
</tr>
</table>

</div>

<p align="center"><input type="submit" value="أضف المسج" name="B1"><input type="reset" value="مسح" name="B2"></p>
</form>

Bakenam
04-03-2009, 11:59 PM
بسم الله الرحمن الرحيم
حقيقة كثرت في الاونة الاخيرة سكربتات نتائج المدارس
وهناك اكثر من نوع من البرمجيات وقليل منها الناجح
عندما بحثت لمدرستي عن هذا السكربت
لعلي اجد السكربت بلمجان او بسعر رمزي
وجدت ان اسعار الاسكربتات الخاصة بالمدارس
ذات ارتفاع خيالي بعضها وص الى 5000 ريال
طيب كل مدرسة تدفع قيمة هذا السكربت
والمصيبة مدرسة دفعت مبلغ 1500 قيمة احد السكربتات
والمدرسة الثانية جاها ببلاش
والطريف انني سمعت ادارة تعليم شرت السكربت ووزعته على المدارس
عموما لماذا له اكثر من صورة؟؟
واين الافضل؟؟
ولماذا هذه الاسعار الخرافية للبعض والبعض الاخر يحصل عليه بالمجان؟؟
هل يوجد مبرمج يبحث عن الاجر من الله كونه يساعد طلاب علم ؟؟
هل جميع المبرمجين متكبرين ويعطيك سعره الخيالي وكانه شي بسيط اعجبك والا اضرب الباب

اخير اليكم بعض الروابط للاطلاع على هذا السكربت


الرابط الاول (http://suffa-school.net/schoolnet/login.php)


الرابط الثاني (http://www.host-sa.com/prog_schoolnet/schoolnet.htm)

الرابط الثالث (http://www.girlserv.org/)

الرابط الرابع (http://www.asaher.com/Maaref/)

ثم ادخل الرقم التالي للتجربة
1234567890


الرابط الخامس (http://www.qassimedu.gov.sa/school/index.php)

Bakenam
04-04-2009, 12:02 AM
السلام عليكم ورحمة الله وبركاته
اول شي احترت شنو اط اسم الموضوع لقيت هذا انسب شي واحترت في اي قسم لقيت هذا انسب قسم يتم فيه وضع الموضوع
المهم
الموضوع بختصار
يفيد المبتدئين والمتوسطين تقريبا ^_^ في لغة PHP طبعا
الموضوع بختصار
كل واحد محترف او متوسط يقولنا شلون تعلم لغة + في المعهد او في موقع + شنو الموقع +في اي سنة بدء+نصيحة ^_^+ اذا حاب تضيف شي :P
وبس
مثال
تعلمت في موقع (فلان الفلاني)http://www.xxx.com (http://www.xxx.com/)
بدايتي كانت في سنة 2007
ونصيحتك ^_^
اضافتك ^_^
:P

Bakenam
04-04-2009, 12:05 AM
بسم الله الرحمن الرحيم

السلام عليكم
في هذا الدرس سنتعرف على طريق كتابه IF

طرق كتابه IF
------------------------
تكتب IF بعده طرق وهي
الصيغه العامه لها هي

رمز Code:
$d=1;if ($d=="1")echo "الرقم هو 1";elseecho "الرقم ليس 1";
لنفرض اننا كتتبنه هكذا

رمز Code:
$d=1;if ($d=="1")echo "الرقم هو 1";echo "الرقم ليس 1";
سيكون مثل السابق
اي انه تستطيع الاستغناء عن else
------------------------
صيعه تعدد الاسطر
وتلاحظ اننا اضفنا اقواس
{}
حتى نعلمه بان هذه الاسطر تابعه لIF او ELSE

رمز Code:


$d=1;
if ($d=="1")
{
echo "الرقم هو 1";
echo "الرقم هو 1";
}
else
{
echo "الرقم ليس 1";
echo "$d الرقم هو";
}

طريقه الشروط المتعددد


رمز Code:

$d=1;
if ($d=="1")
{
echo "الرقم هو 1";
echo "الرقم هو 1";
}
elseif ($d=="2")
{
echo "الرقم ليس 1";
echo "$d الرقم هو";
}
else
{
echo "الرقم ليس 1";
echo "$d الرقم هو";
}


وتستطيع كتابه اكثر من شرط بزياده
elseif
وجيمع الصيغ تنطبق على السطر الواحد او السطرين
باضافه {}
لاكثر من سطر
ولاحظ انه تم استخدام معاملات المقارنه
التي تم ذكرها في الدرس الاول
------------------------
وبهذا نكون قد انتهينا من الدرس الثالث
والله الموفق

المصدر : ثلاثه بواحد (http://www.3by1.com/vb/showthread.php?t=80)

Bakenam
04-04-2009, 12:09 AM
بسم الله الرحمن الرحيم

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

المجموعة System.RegularExpressions
تقدم هذه المجموعة طريقة سهلة للتعامل مع التعبيرات المنتظمة (Regular Expressions)
وبالطبع لا يخفي علي مبرمجي البي أتش بي والبيرل هذا المصتلح
لذلك لن أتترك لشرح التعبيرات المنتظمة , بل سأكتفي بطرح المجموعة System.RegularExpressions

تضم هذه المجموعة الفئات التالية وهي
+ Regex Class
تتميز هذه الفئة بالتالي :
- هذه الفئة مشتقة من الفئة Object الموجودة بالمجموعة System
- تعتبر الفئة الأساسية بالمجموعة System.RegularExpressions

+ Match Class
تتميز هذه الفئة بالتالي :
- هذه الفئة مشتقة من الفئة Object الموجودة بالمجموعة System
- تعبر هذه الفئة علي وحدة تماثل النمط pattern مع النص الممرر input string
وتتميز بعاملين :
* Index : ويعبر عن موقع الحرف الأول للقيمة التي تماثل النمط
* Value : وتمثل القيمة التي تماثل النمط

+ MatchCollection Class
تتميز هذه الفئة بالتالي :
- هذه الفئة مشتقة من الفئة ArrayList الموجودة بالمجموعة System.Collections
- وتمثل مصفوفة من النصوص التي تم تماثلها مع النمط , او بشكل أدق هي مصفوفة عناصرها كائنات من نوع الفئة Match

ويوضح الشكل التالي تركيب المجموعة System.RegularExpressions
(لاحظ أن الأعضاء أمثال الدوال والثوابت والمتغيرات التي تحتها خط تعبر عن أعضاء إستاتيكية Static members)
http://www.arabteam2000.com/picload/Files/SystemRegularExpressions.gif
لاحظ أن المجلد System.RegularExpressions يحتوي علي التالي
- الملف Match.php يحتوي علي الفئة Match
- الملف MatchCollection.php يحتوي علي الفئة MatchCollection
- الملف Regex.php يحتوي علي الفئة Regex

كيف يمكننا إستخدام هذه الفئات :
سوف ندرج في مجلد ال bin مجموعة ال System.RegularExpressions كما يلي
http://www.arabteam2000.com/picload/Files/Img1-4.gif
يمكننا إستخدام تلك الفئات من خلال عمل تضمين including لمحتويات الملف التالي
***Application3/bin/System.RegularExpressions.php
وهذا هو محتوي الملف

رمز PHP:

<?
include_once "System.php";
include_once "System.Collections.php";

include_once "System.RegularExpressions/Match.php";
include_once "System.RegularExpressions/MatchCollection.php";
include_once "System.RegularExpressions/Regex.php";
?>


مثال لإستخدام الفئة Regex

رمز PHP:

****** language="php">
// إستخدام مكتبة System.RegularExpressions
include_once "../bin/System.RegularExpressions.php";

// Creates Regex
$regexp1 = new Regex("/\\w+/");

echo "<pre>" . $regexp1->GetType() . "</pre>";

// IsMatch
echo "<br> [IsMatch] : " . (( $regexp1->IsMatch("mezo") )? "true" : "false");
echo "<br> [IsMatch] : " . (( $regexp1->IsMatch("?") )? "true" : "false");

// Replace
$regexp1->Pattern = "/m/";
echo "<br> [Replace] : " . $regexp1->Replace("Hello mezo man", "M");

$regexp1->Pattern = "/m|h/i";
echo "<br> [Replace] : " . $regexp1->Replace("Hello mezo man", "M");

// Split
$regexp1->Pattern = "/ /";
echo "<br><pre> [Split] : " . print_r($regexp1->Split("Hello mezo man"), true) . "</pre>";

$regexp1->Pattern = "/ m/";
echo "<br><pre> [Split] : " . print_r($regexp1->Split("Hello mezo man"), true) . "</pre>";
</******>




مثال أخر لإستخدام الفئات Regex و MatchCollection و Match

رمز PHP:

****** language="php">
// إستخدام مكتبة System.RegularExpressions
include_once "../bin/System.RegularExpressions.php";

// Creates Regex
$regexp1 = new Regex("/(he\\S*)|(z(o))/");
$str = "hello mezo , is he man?";

// Matches
$matchCol = $regexp1->Matches($str);
for( $i=0; $i<$matchCol->Count(); $i++ ) {
$match = $matchCol->Items[$i];

echo "[Match " . ($i+1) . "]<br>";
echo "Value : " . $match->Value . "<br>";
echo "Length : " . $match->Length() . "<br>";
echo "Index : " . $match->Index . "<br><hr>";
}
</******>


(لاحظ أن هذا الإطار يعمل مع الإصدار الخامس PHP5)

وأنا في أنتظار اي إستفسار في هذا الموضوعhttp://www.traidnt.net/vb/images/smilies/nosweat.gif

أنتظروني قريبا مع الدرس القادم والمجموعة System.DateTime , والله الموف

Bakenam
04-04-2009, 12:13 AM
السلام عليكم ورحمة الله وبركاتة

كتاب تعليم لغة البرمجة php

تفضلو الكتاب في المرفق وهوة من احسن الكتب لتعليم لغة برمجة ال php والي مو فاهم شئ او في مشكلة يكتبلي وانا عيوني له

والسلام عليكم

Bakenam
04-04-2009, 12:16 AM
بسم الله الرحمن الرحيم

السلام عليكم
في هذا الدرس سنعرف طريقه كتابه اكواد الPHP وطرقها المتعدده مع معرفه المتغيرات والمعملات الرياضيه

التعريف بانه PHP

رمز Code:
<?php ?>او <? ?>
بهذه الطريقه نبين انه كود PHP
------------------------
طريقه تعريف المتغيرات
يتم تعريف المتغير ب $
حروف انجليزية فقط او ارقام او معا
وعدم استخدام رموز غير هذا _
مثل

رمز Code:
$a;$a1;$A1;$A;$A_23a;
مع العلم بانه يجب اقفال كل كود ب

رمز Code:
;
------------------------
المعاملات الرياضية
+
مثال 1+1
جمع
------------------------
-
مثال 1-1
طرح
------------------------
*
مثال 1*1
ضرب
------------------------
/
مثال 1/ 1
قسمة
------------------------
%
مثال 1%1
باقي القسمة
------------------------
++
مثال 1++
تعني زياده واحد
------------------------
--
مثال 1--
تعني ناقص واحد
------------------------
معادلات الاحاله

=
تكتب

رمز Code:
$ِa=$b
تعني

رمز Code:
$ِa=$b
------------------------
+=
تكتب

رمز Code:
$ِa+=$b
تعني

رمز Code:
$ِa=$ِa+$b
------------------------
-=
تكتب

رمز Code:
$ِa-=$b
تعني

رمز Code:
$ِa=$ِa-$b
------------------------
*=
تكتب

رمز Code:
$ِa*=$b
تعني

رمز Code:
$ِa=$ِa*$b
------------------------
/=
تكتب

رمز Code:
$ِa/=$b
تعني

رمز Code:
$ِa=$ِa/$b
------------------------
.=
تكتب

رمز Code:
$ِa.=$b
تعني

رمز Code:
$ِa=$ِa.$b
------------------------
%=
تكتب

رمز Code:
$ِa%=$b
تعني

رمز Code:
$ِa=$ِa%$b
------------------------
والقصد من الاحاله هو مثلا :
عندي
متغير اول 1=$a
متغير ثاني 0=$b
يتم احاله المتغير الاول مكان الثاني يعني يكون $b يساوي 1

معاملات المقارنه

تستخدم في مقارنات الصح والخطا فقط
تستخدم بكثره مع if سيتم شرحها في دروس قادمه
يساوي

رمز Code:
$ِa==$b
------------------------
لا يساوي

رمز Code:
$ِa!=$b
------------------------
اكبر من

رمز Code:
$ِa>$b
------------------------
اصغر من

رمز Code:
$ِa<$b
------------------------
اكبر من او يساوي

رمز Code:
$ِa<=$b
------------------------
اصغر من او يساوي

رمز Code:
$ِa>=$b
------------------------

وبهذا نكون قد انتهينا من الدرس الاول

والله الموفق

مصدر الدرس :

http://www.3by1.com/vb/showthread.php?p=146 (http://www.3by1.com/vb/showthread.php?p=146)

Bakenam
04-04-2009, 12:37 AM
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته

بدون مقدمات و ندخل في صلب الموضوع علي طول


الفقره الاولى

تحديد نوع المتغير المدخل قبل عملية الاستعلام

ففي بعض الاوقات نريد جلب مقال معين أو قسم تم إضافته في الاسكربت

و ذلك بيكون عن طريق جلب رقم القسم أو ال id و هذا الشكل التقليدي

ماذا لو قام الزائر بوضع نص بدل من رقم القسم سيظهر الخطأ الاتي

mysql_fetch_array(): supplied argument is not a valid MySQL result resource

أليس هذا سخيفاً

الحل يكمن في تحويل المدخل الي متغير من النوع الرقمي integer

بإستخدام الداله intval

مثال


رمز PHP:


$id=intval($_GET['id']);



فإذا قام الزائر بوضع نص سيتحول الي الرقم 0

حسناً

ماذا إذا قام الزائر بحذف كلمة
id
من المتصفح سيظهر نفس الخطأ الموجود في الاعلي

الحل يكمن في التحقق من إنشاء المتغير قبل عمل الاستعلام

مثال


رمز PHP:

if(isset($_GET[id]))
{
intval($_GET[id]);

#الاستعلام


}


ماذا إذا قام الزائر بحذف ما يساويه ال id

سيظهر نفس الخطأ أعلاه

الحل في التأكد من ان المتغير id غير فارغ عن طريق الداله

empty

مثال


رمز PHP:

if(isset($_GET[id]) and !empty($_GET['id']))
{
intval($_GET[id]);

#الاستعلام


}



الي اللقاء في الفقره الثانيه

Bakenam
04-04-2009, 12:38 AM
الفقره الثانيه


في عمليات البحث في موقعك أو تسجيل الدخول و مثل هذه الاشياء التي تحتاج الي إدخال
نصوص


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


مثلاً لدينا محرك بحث بسيط في الموقع مكون من فورم و ملف php


و قام الزائر بوضع مسافه من خلال المسطر و قام بالبحث


النتيجه سيظهر له جميع محتويات المكان الذي يبحث فيه


مما يؤثر في عمل موقعك و يؤثر علي السيرفر الحل يكمن في التأكد من أن المتغير الخاص بعملية البحث لايحتوي علي فراغ


عن طريق الداله


trim();


مثال




رمز PHP:


$search=trim($_GET['search']);

if(isset($search) and !empty($search) )
{



#الاستعلام
}


الان ماذا إذا أردت تحديد عدد الحروف في عملية البحث


عليك بإستخدام الداله


strlen();


مثال



رمز PHP:


$search=trim($_GET['search']);

if(isset($search) and !empty($search) and strlen($search)>=5 )
{



#الاستعلام
}


في هذا المثال أجبرنا الزائر علي وضع 5 حروف و إلا لا يتم الأستعلام الخاص بعملية البحث

الي اللقاء في تكملة هذه الفقره

يتبع

Bakenam
04-04-2009, 12:47 AM
السلام عليكم ورحمه الله وبركاته

السكربت التالى يظهر للمتصفح اسم الدوله باللغه الانجليزيه
وعلم الدوله
وهو دقيق جدا
ومحدث نسخته 2006 للايبيات الدول حول العالم

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

وبالتوفيق

Bakenam
04-04-2009, 12:49 AM
السلام عليكم

أريد امر بالـ php لنقل صورة من اي موقع إلى مجلد داخل موقعي ...

مثلا الصورة التالية :
http://www.traidnt.net/vb/traidnt-des/up_rigth.gif (http://www.traidnt.net/vb/traidnt-des/up_rigth.gif)
أريد جلبها لمجلد في موقعي بواسطة الـ php ...

تحياتي

Bakenam
04-04-2009, 12:58 AM
بسم الله الرحمن الرحيم

اليوم كنت جالس شبه فاضي (ماراح اكون فاضي إلا كمان سنه ) بإذن الله

قولت اشوف اي شيء اشرحه لكم هنا من الي تعلمناه من المعاقب والعذاب

حصلت كود كنت سويته من حوالي اسبوعين او 10 ايام

طبعا الموضوع في الأول كان مجرد فكرة وماهي صعبة ولاشيء

الفكره هي التحقق من محتويات حقل معين من حيث :
هل الحقل مطلوب ام لا .
هل نوع الحقل (E-mail) ام لا.
العدد الأقصي للحروف في الحقل.
العدد الأدني للحروف في الحقل.
هل الحقل أرقام ام حروف ام الإثنين معا.
والفرق بين هذا الكود وغيره :
سهولة التركيب .
سهولة الإستخدام .
عدم الحاجه لتعديل الكود كامل من البداية في حال رغبتك إضافته علي سكريبت منتهي منه بالفعل.
سهولة التعديل علي الكود لتطويره .
ظهور رسالة الخطأ علي شكل نافذة Error وليس في الصفحة التاليه ممايوفر الكثير من الوقت.
نظام Debug مركب في السكريبت يخبرك بمكان الأيرور في حالة وجوده.
مثال علي الكود :

الملف المرفق 167613 (http://www.traidnt.net/vb/attachment.php?attachmentid=167613)

طبعا ده فورم عادي فرضا تركنا اي حقل من الحقول المطلوبه فارغا ماذا سيحدث ؟؟

إليكم ماسيحدث:
الملف المرفق 167614 (http://www.traidnt.net/vb/attachment.php?attachmentid=167614)

طيب مثلا لو جينا علي خانة البريد الإلكتروني وكتبنا اي شيء (بريد إلكتروني غير صحيح)

إليكم ماسيحدث :
الملف المرفق 167615 (http://www.traidnt.net/vb/attachment.php?attachmentid=167615)

والمزيد الذي سوف تكتشفه خلال إستخدامك هذا الكود بإذن الله

ملحوظه : جميع الحقوق محفوظة لشبكة مصر و معهد ترايدنت في نقل هذا الموضوع.

ولا يسمح بنقله إلا بإذن من شبكة مصر او احد إداري معهد ترايدنت .

شرح التركيب :

الخطوه الأولي :
إستدعاء ملف الجافا التالي في الصفحة الموجود فيها الـform
رمز PHP:

<****** language="**********" src="verify.js" type="****/**********"></******>


الخطوه الثانية :
تشغيل الكود علي الـform المراد التحقق منه عن طريق الكود التالي :

رمز PHP:

<****** language="**********">
var frmvalidator = new Validator("myform");
</******>


قم بإستبدال myform بإسم الـform الخاص بك وضع الكود اسفل وسم الـform مباشرة

الخطوه الثالثه :
تخصيص نوع التحقق من كل حقل عن طريق احد الأكواد التاليه :
(ضع الكود في اي مكان ويستحسن في اخر وسم الـbody)
رمز PHP:

<****** language="**********" type="****/**********">
frmvalidator.addValidation("FirstName","alpha");// التحقق من ان الحقل firstname مكون من حروف فقط

frmvalidator.addValidation("LastName","req"); // التحقق من ان الحقل lastname تم إدخال مدخلات به
frmvalidator.addValidation("LastName","maxlen=20");// التحقق ان الحقل lastname اكبر عدد حروف به 20 حرف فقط
frmvalidator.addValidation("Email","email");// التحقق ان الحقل email عباره عن حقل لإدخال البريد الإلكتروني
frmvalidator.addValidation("Phone","numeric");// التحقق ان الحقل Phone هو للأرقام فقط ولا يقبل الحروف
frmvalidator.addValidation("Country","dontselect=0");// التحقق من ضرورة أختيار احد الخيارات الموجوده في حقل Country
</******>


يمكنك وضع اكثر من تحقق علي الخانه الواحده

ملحوظه في حال وضع كود تحقق لحقل غير موجود سيظهر لك رسالة تشير إلي ذلك في حال وجود اي خطأ في التطبيق سيظهر لك رسالة تشير إلي ذلك ^_^ وهو نظام التتبع الي ذكرته في الاول.

الخطوه الرابعه والأخيره :

رفع ملف verify.js
إلي مجلد السكريبت المستخدم فيه الكود

Bakenam
04-04-2009, 01:00 AM
اتمنى الفائدة للجميع ان شاء الله وهذه هيا السلسة

الدرس الثاني : ادواتك واحتياجاتك لتبدأ في تعلم php
http://www.traidnt.net/vb/showthread.php?t=31705 (http://www.traidnt.net/vb/showthread.php?t=31705)

ركن لغة php دروس -برمجة( شرح كتابي وبالصورة)
http://www.traidnt.net/vb/showthread.php?t=31714 (http://www.traidnt.net/vb/showthread.php?t=31714)

الدرس الاول: قبل أن تتعلم Php
http://www.traidnt.net/vb/showthread.php?t=31702 (http://www.traidnt.net/vb/showthread.php?t=31702)

مقدمة في لغة php
http://www.traidnt.net/vb/showthread.php?t=31701 (http://www.traidnt.net/vb/showthread.php?t=31701)
الدرس الثالث : بدايتك مع Php
http://www.traidnt.net/vb/showthread.php?t=31706 (http://www.traidnt.net/vb/showthread.php?t=31706)

مدخلك الصحيح لعالم php !!!

http://www.traidnt.net/vb/showthread.php?t=31707 (http://www.traidnt.net/vb/showthread.php?t=31707)

Bakenam
04-04-2009, 01:02 AM
تم صدور النسخة التجريبية لكتاب الكتروني من سلسلة البروفسور التعليمية
وهو لتعليم الخوارزميات و الباسكال حيت هما اللغة الام لل php فمن خلاله سوف تجيد الخزارزميات
التي تساعدك في حل المشاكل التحليلية
الكتاب به مقدمة لعلم الاعلام الالي ثم بعض المفاهيم الاساسية ثم تعريف للخوارزميات ثم يتسلسل في اتنعليم خطوة خطوة وهو على شكل دروس و تمارين و اعمال تطبيقية منسقة ورائعة هو منتشر في الجامعات بالمغلاب العربي رغم حداثة صدوره
وقد قامت groupkasi بوضعه على الانترنت مجانا لمساعدة اخواننا في باقي البلدان في تعلم البرمجة
وامن يرغب في بناء قاعدة صلبة للبرمجة عامة
لمشاهدة الموضوع الاصلي انقر هنا (http://hachib.free.fr/forum/showthread.php?p=172)

Bakenam
04-04-2009, 01:04 AM
في الاصدارة السابقة من لغة php كانت هناك خاصية موجوده وهي خاصية register_globals وكان معاملها في ملف php.ini تاموجود بالسيرفر
register_globals=on
وهدف هذه الخاصية أستخدم الاوامر المدخلة من النمازج أن كان post أو get مباشرة او كوكيز مباشرة بدون اي وسائط وكانت تسمي هذه العمليه session ولما كانت هذه الخاصية أحدي الثغرات كما ذكر موقع php فقد تم اغلاق الخاصية بالاصدارة الجديده من لغة php

طيب انا عندي سكربت والسكربت دا بسيط وانا خبرتي ضعيفة وموش هاقدر استغني عن ال register_globals أعمل ايه

قابلتي هذه المشكلة ووجدت الحل لها عن طريق امر يقوم لك بهذه الوظيفة extract
ويتم وضعة باول السكربت
ويتم كتابنه كالأتي


رمز PHP:

<?php
if(!empty($_GET)) extract($_GET);
if(!empty($_POST)) extract($_POST);
if(!empty($_******)) extract($_******);
?>

أرأيتم البساطة البساطة طلعت عيني يومين http://www.traidnt.net/vb/images/smilies/bleh.gif
طيب عاوز اعرف ان كانت الخاصية دي مفتوحة ام مغلقة
بسيطة جيت في جملhttp://www.traidnt.net/vb/images/smilies/nosweat.gif
هنعمل ملف php ولنفترض نسمية info.php
ونفتحة باي محرر نصوص مثل Php Expert Editorhttp://www.traidnt.net/vb/images/smilies/icon30.gif
ونكتب فيه


رمز PHP:

<?
phpinfo();
?>

ونحفظ وترفعة علي موقعك
وتكتب الرابط بتاعة
http://www.sitename.ext/info.php (http://www.sitename.ext/info.php)

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

Configuration
PHP Core

كما بالصورة التاليه

------------------------------------------------------------------------------------------------
http://www.best-solu.net/Traidnt/php/php.gif
------------------------------------------------------------------------------------------------

نبحث في الجول التالي علي register_globals فاذا وجد انه امام off معنى ذلك بان الخاصية مغلقة
كما هو موضوح بالصورة التاليه

------------------------------------------------------------------------------------------------
http://www.best-solu.net/Traidnt/php/php2.gif
------------------------------------------------------------------------------------------------
نستخدم الكود المرفق

أتمني ان أكون قد وصلت المعلومة علي قدر استطاعتي

Bakenam
04-04-2009, 01:06 AM
تعلمphp بسهولة




http://www.c4arab.com/ebooks/learn_php.pdf (http://www.c4arab.com/ebooks/learn_php.pdf)

Bakenam
04-04-2009, 01:08 AM
السلام عليكم
تحياتى لكم اخوانى
اخوانى ولاول مرة فى منتدى عربى على الاطلاق أقدم لكم المفاجاة للمبرمجين ومحبى
لغة PHP تسع ساعات تتظمن91درس لتعلم هذه اللغة المميزة وتندرج هذه الدروس
تحت أسم
VTC - Virtual Training Company
الصفحة الرئيسية للشركة صاحبة الدورة:
http://www.vtc.com/products/cplus.htm
والان أقدم لكم الملفات الفيديو المقسمة والصغيرة الحجم وسريعة التحميل....
http://alvea.free.fr/download_4free/php/0101.mov
http://alvea.free.fr/download_4free/php/0102.mov
http://alvea.free.fr/download_4free/php/0103.mov
http://alvea.free.fr/download_4free/php/0104.mov
http://alvea.free.fr/download_4free/php/0105.mov
http://alvea.free.fr/download_4free/php/0106.mov
http://alvea.free.fr/download_4free/php/0201.mov
http://alvea.free.fr/download_4free/php/0202.mov
http://alvea.free.fr/download_4free/php/0203.mov
http://alvea.free.fr/download_4free/php/0204.mov
http://alvea.free.fr/download_4free/php/0205.mov
http://alvea.free.fr/download_4free/php/0301.mov
http://alvea.free.fr/download_4free/php/0302.mov
http://alvea.free.fr/download_4free/php/0303.mov
http://alvea.free.fr/download_4free/php/0304.mov
http://alvea.free.fr/download_4free/php/0305.mov
http://alvea.free.fr/download_4free/php/0401.mov
http://alvea.free.fr/download_4free/php/0402.mov
http://alvea.free.fr/download_4free/php/0403.mov
http://alvea.free.fr/download_4free/php/0501+.mov
http://alvea.free.fr/download_4free/php/0502.mov
http://alvea.free.fr/download_4free/php/0503.mov
http://alvea.free.fr/download_4free/php/0504.mov
http://alvea.free.fr/download_4free/php/0505.mov
http://alvea.free.fr/download_4free/php/0506.mov
http://alvea.free.fr/download_4free/php/0507.mov
http://alvea.free.fr/download_4free/php/0508.mov
http://alvea.free.fr/download_4free/php/0509.mov
http://alvea.free.fr/download_4free/php/0510.mov
http://alvea.free.fr/download_4free/php/0511.mov
http://alvea.free.fr/download_4free/php/0512.mov
http://alvea.free.fr/download_4free/php/0513.mov
http://alvea.free.fr/download_4free/php/0514.mov
http://alvea.free.fr/download_4free/php/0601.mov
http://alvea.free.fr/download_4free/php/0602.mov
http://alvea.free.fr/download_4free/php/0603.mov
http://alvea.free.fr/download_4free/php/0701.mov
http://alvea.free.fr/download_4free/php/0702.mov
http://alvea.free.fr/download_4free/php/0703.mov
http://alvea.free.fr/download_4free/php/0704.mov
http://alvea.free.fr/download_4free/php/0705.mov
http://alvea.free.fr/download_4free/php/0706.mov
http://alvea.free.fr/download_4free/php/0707.mov
http://alvea.free.fr/download_4free/php/0708.mov
http://alvea.free.fr/download_4free/php/0709.mov
http://alvea.free.fr/download_4free/php/0710.mov
http://alvea.free.fr/download_4free/php/0711.mov
http://alvea.free.fr/download_4free/php/0712.mov
http://alvea.free.fr/download_4free/php/0801.mov
http://alvea.free.fr/download_4free/php/0802.mov
http://alvea.free.fr/download_4free/php/0803.mov
http://alvea.free.fr/download_4free/php/0804.mov
http://alvea.free.fr/download_4free/php/0805.mov
http://alvea.free.fr/download_4free/php/0806.mov
http://alvea.free.fr/download_4free/php/0807.mov
http://alvea.free.fr/download_4free/php/0808.mov
http://alvea.free.fr/download_4free/php/0809.mov
http://alvea.free.fr/download_4free/php/0810.mov
http://alvea.free.fr/download_4free/php/0811.mov
http://alvea.free.fr/download_4free/php/0812.mov
http://alvea.free.fr/download_4free/php/0813.mov
http://alvea.free.fr/download_4free/php/0901.mov
http://alvea.free.fr/download_4free/php/0902.mov
http://alvea.free.fr/download_4free/php/0903.mov
http://alvea.free.fr/download_4free/php/0904.mov
http://alvea.free.fr/download_4free/php/0905.mov
http://alvea.free.fr/download_4free/php/0906.mov
http://alvea.free.fr/download_4free/php/0907.mov
http://alvea.free.fr/download_4free/php/0908.mov
http://alvea.free.fr/download_4free/php/1001.mov
http://alvea.free.fr/download_4free/php/1002.mov
http://alvea.free.fr/download_4free/php/1003.mov
http://alvea.free.fr/download_4free/php/1004.mov
http://alvea.free.fr/download_4free/php/1005.mov
http://alvea.free.fr/download_4free/php/1006.mov
http://alvea.free.fr/download_4free/php/1007.mov
http://alvea.free.fr/download_4free/php/1008.mov
http://alvea.free.fr/download_4free/php/1009.mov
http://alvea.free.fr/download_4free/php/1101.mov
http://alvea.free.fr/download_4free/php/1102.mov
http://alvea.free.fr/download_4free/php/1103.mov
http://alvea.free.fr/download_4free/php/1104.mov
http://alvea.free.fr/download_4free/php/1105.mov
http://alvea.free.fr/download_4free/php/1106.mov
http://alvea.free.fr/download_4free/php/1107.mov
http://alvea.free.fr/download_4free/php/1108.mov
http://alvea.free.fr/download_4free/php/1109.mov
http://alvea.free.fr/download_4free/php/1110.mov
http://alvea.free.fr/download_4free/php/1111.mov
http://alvea.free.fr/download_4free/php/1112.mov
http://alvea.free.fr/download_4free/php/1113.mov

وماعليكم الا الزر الايمن وحفظ بأسم وبالطبع أود التنويه انه يجب تواجد برنامج
الـــ Quicktime player فى الجهاز ومن هنــا يمكنكم الحصول على البرنامج المشغل:
http://www.apple.com/quicktime/download
وما أنسى أذكر ان الدروس غير مجانية وسعرها الاصلى $129.95
وبالتأكيد فى traidnt مجانية....
وتعمل الدروس على الانظمة التالية:
Win XP, 2000, 98, NT, Mac OS X, OS 9
وتحياتى للجميع

Bakenam
04-04-2009, 01:13 AM
هذه الوصلة
http://www.anwarica.com/php

تحتوى على كتب قيمة php & mysql بينها حاليا كتابين عربى وجارى تحميل بقية الكتب ...
تحديث: كتاب عربى آخر

الكتب المتاحة اليوم:


رمز Code:

Sam teach yourself php in 24 hours === 2.2 MB
Advanced php for *** professionals ===1.3 MB
php fast easy ***dev 2nd ===3.4 MB
php & mysql ebook ===3.2 MB
php & mysql tutorial === 0.3 MB
Oreilly Upgrading to php5===0.5 MB
PHP & Mysql Arabic MR Sakr ===3.4 MB
Mastering MySQL4 ===1.8 MB
PHP & MySQL for Dummies 2nd Edition=== 3.6 MB
php & mysql *** dev welling 2001 === 6.6 MB
*** Applications Development php4 ===5.8 MB
Full lessons php Arabic === 3.6 MB
Professional php programming === 10.4 MB
OReilly learning php5 === 1.1 MB
PHP visual blueprint hungry minds2001=== 5.2 MB
O'reilly Programming PHP===1.5 MB
Learning PHP 5 === N/A MB
PHP 5 & MySQL === N/A MB
OReilly PHP Pocket Reference === N/A MB
OReilly *** Data**** Applications with PHP & MySQL ===2.6 MB
Prentice Hall - Core PHP Programming === N/A MB
Beginning PHP 4 === N/A MB
JohnWiley & Sons MySQL === 4.1 MB
PHP 5 Power Programming October 2004 === N/A MB
Sams teach yourself php in 10 minutes 2005 === 0.4 MB
Beginning PHP , Apache & MySQL *** Development === 12.7 MB
Advanced php4 === 6.4 MB
OReilly PHP ****book === 2.7 MB
Secure php development === 12.7 MB

Bakenam
04-04-2009, 01:14 AM
الفكرة هي ان تضع الاوامر التي تريد تنفيذها في ملف و تضمه باستخدام include في احد الملفات التي تنفذ بشكل مستمر على الموقع.. مثللا الصفحة الرئيسية او صفحة المقدمة header او الذيل footer ومن احدى الحركات الجيدة في ان تضع صورة في الموقع بطول بكسل في عرض بكسل ويكون قيمة الخاصية src هو http://www.example.com/image.php (http://www.example.com/image.php) و بذا لن تحتاج الى تعديل الى ملف من ملفات موقعك ...

لنفرض اننا وضعنا الاوامر التي نريد تنفيذها في الملف cron.php وعملنا لها تضمين في احد الملفات التي يتكرر استخدامها



رمز Code:
<? include('cron.php'); ?>





الان سيتنفذ الكود كل مرة يطلب فيها ذلك الملف .... هذا جيد ..لكنه ليس ما نريد ... لاننا قد نرغب في تنفيذ الكود كل شهر مثلا !
لذلك قام احد المبرمجين بكتابة برنامج يدعى Pseudo-cron تجده على الرابط

http://www.bitfolge.de/?l=en&s=pseudocron (http://www.bitfolge.de/?l=en&s=pseudocron)

يستخدم هذا البرنامج نفس الاوامر التي يستخدمها مدير المهام المجدولة cron .... و يقوم بتضمين الملفات متى اتى الوقت لذلك .. بينما انت تقوم بربط

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

Bakenam
04-04-2009, 01:21 AM
السلام عليكم

في البدايه اعجبني هذا الدرس وحبيت اطرحه للفائده ولو كانت بسيطه ..
حتى تستطيع ان تبرمج سكربت تحميل الملفات بنفسك .. وبعدين في نهايه هذا الدرس بيكون السكربت بسيط جدا .. لكن فيما بعد بعد ما تفهم الطريقه وكيفيه انشاءه .. سوف تقوم بإضافه اضافات خفيفه .. مثل عدد الصور في القاعده وعدد لمتواجدون حالياً والخ .. وتصمم له استايل ايضا .. سوالف بسيطه هذي بس اهم شي يا اخوان كيفيه برمجته
وان شاء الله يعجبكم يارب .. وحفظاً للحقوق الدرس منقول من أخوانا في http://www.php-ar.com (http://www.php-ar.com/)

بسم الله ..

سنتعلم كيف ننشيء ملف ويتم عن طريقة تحميل الملفات من الجهاز

اولا سنحتاج الى عمل فورم بسيط فيه حقل لاستعراض الملف من الجهاز ، وزر لارسال الملف ..

رمز PHP:

<form method='POST' enctype='multipart/form-data' action='up.php'>
<input type='file' name='fileup' size='20'>
<input type='submit' value='تحميل'>
</form>


احفظ الكود السابق في صفحة html باي اسم http://www.traidnt.net/vb/images/smilies/in_love.gif

ملاحظات على الكود :
1. تم تعين اتجاه الفورم الى صفحة up.php .
2. الكود التالي :

رمز PHP:

enctype='multipart/form-data'


هو الكود الخاص بعرض حقل الاستعراض لاختيار الملف .
3. اسم حقل الملف هو fileup .

الان نأتي الى كود صفحة up.php

اولا سنحتاج الى تعريف ( المسار ) لتحميل الملفات ..

لمعرفة المسار ضع الكود التالي باي صفحة php

رمز PHP:

<?
echo realpath("files");
?>

وغالبا اكثر المواقع يكون المسار لها هو
http://www.traidnt.net/vb/AGT04/misc/quotes/quot-top-left.gifاقتباسhttp://www.traidnt.net/vb/AGT04/misc/quotes/quot-top-right.gifhttp://www.traidnt.net/vb/AGT04/misc/quotes/quot-top-right-10.gif/home/User/public_html/files http://www.traidnt.net/vb/AGT04/misc/quotes/quot-bot-left.gifhttp://www.traidnt.net/vb/AGT04/misc/quotes/quot-bot-right.gif

استبدل User باسم الدخول الى حساب ftp لموقعك .. مع وضع ملف files بالمجلد www مباشرة . او ضع المسار الصحيح للمجلد ..

سنضع المسار بمتغير :

رمز PHP:

<?
$path = "/home/User/public_html/files";
?>

ايضا سنضيف الى المسار اسم الملف وهو تلقائي معرف من php كالتالي :

رمز PHP:

$path .= "/$fileup_name";



الان طريقة تحديد الامتدادات المسموحه
نضع الامتدات بمتغير مصفوفه ... http://www.traidnt.net/vb/images/smilies/nosweat.gif

رمز PHP:

$alemtdadat = array('.gif','.pmb','.jpg','.jpgf','.zip');


الان نظهر امتداد الملف المختار عن طريق هذه الدالة strrchr();

رمز PHP:

$att = strrchr($fileup_name,'.');


و وضعناه بمتغير جديد ..

الان نستخدم دالة in_array() للتأكد من وجود امتداد الملف في الامتدادات المصفوفه حقنا ..
رمز PHP:

if(! in_array($att,$alemtdadat)){
echo " عفوا هذا الامتداد غير مسموح به !!";
}else{
// البقية


الان طريقة تحديد حجم الملف ..
نضع متغير جديد فيه اكبر حجم مسموح به
رمز PHP:

$maxsize = "81920";
// تعادل 80 كيلوبايت


الان نطلع حجم الملف المختار عن طريق دالة filesize();

رمز PHP:

$file_size = filesize($fileup);


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

وبالتالي حدث تغير على الكود السابق
رمز PHP:

if(! in_array($att,$alemtdadat)){
echo " عفوا هذا الامتداد غير مسموح به !!";
}else if($file_size > $maxsize ){
echo " حجم الملف المختار اكبر من الحجم الاقصى ";
}else{

// بقية الملف


سنستخدم دالة copy لنسخ الملف وطريقة كتابتها كالتالي :

رمز PHP:

$CopyFile = copy($fileup,"$path");


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

رمز PHP:

if($CopyFile){

echo " تم تحميل الملف بنجاح ، رابط الملف : ";
echo "<a href='http://$HTTP_HOST/$fileup_name'>http://$HTTP_HOST/$fileup_name</a>";

}else{

echo " لم يتم تحميل الملف ";

}


نقفل الوسوم
رمز PHP:

}
}
}


الان كود up.php كامل http://www.traidnt.net/vb/images/smilies/icon30.gif

رمز PHP:

<?
if($fileup == ""){
ECHO " قم باختيار الملف المراد تحميله ";
}else{
$path = "/home/User/public_html/files";

$path .= "/$fileup_name";

$att = strrchr($fileup_name,'.');
$alemtdadat = array('.gif','.jpg','.jpgf','.zip','.rar');
$maxsize = "81920";
$file_size = filesize($fileup);

if(! in_array($att,$alemtdadat)){
echo " عفوا هذا الامتداد غير مسموح به !!";
}else if($file_size > $maxsize ){
echo " حجم الملف المختار اكبر من الحجم الاقصى ";
}else{

$CopyFile = copy($fileup,"$path");

if($CopyFile){

echo " تم تحميل الملف بنجاح ، رابط الملف : ";
echo "<a href='http://$HTTP_HOST/files/$fileup_name'>http://$HTTP_HOST/files/$fileup_name</a>";

}else{

echo " لم يتم تحميل الملف ";

}
}
}

?>



مع التحيه

Bakenam
04-04-2009, 01:28 AM
بسم الله الرحمن الرحيم

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

تحية غالية

بداية أعتذر عن تأخري لوضع الدروس وذلك بسبب إنشغالي الشديد وإن شاء الله بحاول قدر إستطاعتي أني ما أتأخر مرة تانية إن شاء الله

سنبدأ في الدرس الثاني من دروس تعليم لغة PHP وسنحتاج إلى تنصيب برنامج IIS حتى نستطيع تطبيق الدروس على السيرفر المحلي أو بمعنى أصح حتى نستطيع العمل دون رفع ملفات على مواقعنا على الإنترنت
وسيتم التطبيق على نظام ويندوز XP
ويمكنك التأكد من تحميل البرنامج من قبل أم لا عن طريق كتابة العنوان (http://localhost) في سطر العنوان ببرنامج أنترنت أكسبلورر
فإذا ظهرت صفحتين واحدة لها العنوان Microsoft Windwose Xp Professional والأخرى بها الملفات المساعدة الخاصة ببرنامج IIS 5.1 فإنك لن تحتاج إلى إتباع خطوات التنصيب



خطوات التثبيت ::



قم بفتح لوحة التحكم Control Panel من قائمة Start ثم أختر أيقونة Add or Remove Programs ثم أضغط DClik وأختر Clik المفتاح Add or Remove Windows Components كما في الصورة التالية ::


http://tinypic.com/fypwsn.gif
ستظهر نافذة تحتوي على جميع برامج الويندوز الإفتراضية ، قم بالتأكد من تفعيل الإختيار Internet Information Services ثم أضغط Next كما ف الصورة التالية ::


http://tinypic.com/fypxy1.gif

حتى يقوم الويندوز بتثبيت ملفات البرنامج وقد تحتاج إلى وجود إسطوانة اليندوز في مشغل الإسطوانات 0


يمكنك الآن التأكد من تثبيت هذا البرنامج بكتابة localhost في برنامج إنترنت إكسبلورر IE وستدج الدليل الأساسي Inetpub في المشغل الإفتراضي للنظام ، فإذا قمت بتنزيل الويندوز على المشغل :C فستجد مسار هذا الدليل C:\Inetpub وهذا هو الدليل الخاص ببرنامج IIS وستجد بداخله الدليل wwwroot الذي يوجد به محتويات الصفحة التي ظهرت لك بعد كتابة localhost كما في الصورة التالية ::


http://tinypic.com/fypy04.gif

ملحوظة ::

كلمة localhost أو رقم البروتوكول 127.0.0.1 يعبران عن الجهاز المحلي بدون الإتصال بالإنترنت فلكل جهاز يعمل على الشبكة العالمية رقم بروتوكول منفرد ويعبر جزء من الرقم عن البلد الذي يوجد به الجهاز
فمثلاً الرقم 192.168.20.5 يعبر عن جهاز في مصر مثلاً 0


وحتى يمكنك كتابة برامج ويب بلغة PHP يجب تركيب مترجم اللغة

وسأقوم بإذن الله في الدرس القادم بشرح كيفية تركيب مترجم لغة PHP حتى لا أطيل عليكم الحديث

وأسأل الله أن يكون الدرس سهل ومبسط وأي إستفسار تراني في الخدمة إن شاء الله

Bakenam
04-04-2009, 01:29 AM
بسم الله الرحمن الرحيم

والصلاة والسلام على أشرف المرسلين سيدنا محمد عليه أفضل الصلوات والتسليم

قمت بحمد الله بأخذ دروس مكثفة في لغة PHP لتصميم المواقع والحمد لله وصلت إلى مرحلة أحمد الله على الوصول أليها
وقمت بتجميع وتلخيص دروس بسيطة من عدة جهات حتى يتيسر علينا الوصول إلى المعلومة

وأسأل الله أن تكون بداية خير لنا وأن تعم الفائدة على جميع الرواد وأي إستفسار في أي درس تراني بإذن الله حاضر
للرد على أي إستفسار

وإن شاء الله سأقوم بإنزال دروس متتالية وأعذروني لو تأخرت فيها شوي لأنها تتطلب مني إعداد جيد

وسنبدأ اليوم بمقدمة بسيطة عن لغة برمجة الويب PHP حتى يكون تعلمنا للغة على أساس سليم إن شاء الله

بسم الله نبدأ ،،،،،

لغة PHP أو (Hyper**** Preprocessor) وتم تصميم هذه اللغة في البداية بواسطة شخص إسمه راسموس ليدروف وكانت يوماً جزء من لغة Perl حتى تم تحويلها إلى لغة مستقلة
وتنقسم الآن إلى مكتبتين هما Zend من تطوير شركة Zend ومكتبة PHP ويمكنك زيارة الموقع الرسمي للغة (www.php.net (http://www.php.net/)) سيمكنك تحميل المكتبتين معاً وكود هذه اللغة مفتوح المصدر بعكس الكثير من لغات البرجة الشائعة
كما تتميز بالكثير من الخصائص التي جعلتها من الركائز الأساسية لتطوير برامج ويب آمنة ومستقلة



وفيما يلي أهم هذه المميزات :


سهلة التعلم وتشبه إلى حد كبير من حيث قواعد اللغة إلى لغة ++C العريقة ، وبكن بدون التعقيدات الموجودة بها 0


يجب إستضافة برنامج الويب على سيرفر معين حتى يتم تنفيذه ومن أشهر السيرفرات التي يمكن أن تعمل عليها البرامج المكتوبة بهذه اللغة هو سيرفر لينكس (Linux) ويتم إستخدام برنامج أباتشي المشهور على هذا النظام الذي يستطيع تنظيم وإظهار صفحات PHP بسرعة كبيرة كما يمكن إستضافة صفحات هذه اللغة على سيرفرات ويندوزمع البرنامج IIS الذي يأتي بدء من إصدار ويندوز 2000 وسنتعلم بإذن الله فيما بعد كيفية تركيب البرنامج على ويندوز XP حتى نستطيع أن نجري تجاربنا عليها أثناء التدريب على الأمثلة بإذن الله 0


توجد بها مكتبة قوية تحتوي على الكثير من الأدوات الأساسية اللازمة لإنتاج برنامج قوي وسريع وآمن ومكتبات دوال للتعامل مع لغة وملفات XML وإرسال وإستقبال الملفات عن طريق بروتوكولات FTP ويمكنها أيضاً الإتصال بجميع قواعد البيانات المشهورة بدء من أكسيس وحتى أوركل ولكن تركيز إستخدام هذه اللغة يكون مع قاعدة اليانات القوية MySQL التي تتميز هي الأخرى بأنها مجانية ومفتوحة المصدر للتطوير 0


الكود المحمول (Portable Code) وهو مطلح شائع يدل على إمكانية كتابة الكود مرة واحدة في البرنامج وتنفيذه على السيرفرات المختلفة سواء ويندوز أو لينيكس أو يونيكس ، وهذا يسهل كثيراً حياة المبرمج ويعفيه من قضاء الساعات الإضافية لمجرد عمل تعديلات 0


في وقتنا الحالي تثير المشاكل الأمنية على الشبكة العالمية أهمية قصوى نظراً لإعتماد الكثير من الأنظمة المالية كالبنوك والمتاجر الألكترونية على هذه الشبكة فيصبح تأمين تعامل المستخدم مع البائع أو مقدم الخدمة أمراً حتمياً ، وتأتي لغة PHP لتزودك بالكثير من الأدوات التي تستطيع من خلالها تأمين إتصال المستخدم وتحديد عدد الإتصالات المسموح بها لقاعدة البيانات في نفس الوقت ، حيث أن دخول العديد من المخربين على الموقع من جميع أنحاء العالم في نفس الوقت يؤدي إلى تعطيل السيرفر وبالتالي الموقع ، وهي من الطرق المعروفة لمنظمات الهاكرز العالمية لإختراق وتعطيل المواقع 0


تعتبر لغة غير محدودة ، أي لا تنتجها شركة معينة أو تقتصر حقوق النشر على مؤسسة معينة بذاتها ولكن يتم تطوير اللغة من جميع المطورين على مستوى العالم ، فيمكنك أن تقوم بالتعديل مباشرة في كود اللغة وتزويدها بخصائص معينة تناسبك أو البحث عما تحتاج أليه من الموارد الغير محدودة لهذه اللغة ، فحقاً هذه اللغة تستحق ولو جزء بسيط من وقتاً للإطلاع عليها وتعلمها 0



وهذه هي أهم أسباب رخص تكفلة إتضافة صفحات PHP وإقبال الكثير على إستخدامها 0

أسأل الله أن لا أكون أطلت عليكم

ولي رجاء ،، عند نقل الدروس يرجى ذكر المصدر وجزاكم الله خيراً

وإن شاء الله في الدرس القادم سنبدء بالإعدادات اللازمة للبدء في البرمجة بإستخدام هذه اللغة الممتعة 0


والله ولي التوفيق

Danna
04-29-2009, 09:15 PM
السلام عليكم ورحمة الله وبركاته

شكرا على الموضوع وفى انتظار المزيد والمزيد من التميز

والموضوعات القيمة

اللى دايما بتفاجئينا بيها ويارب نشوف دايما

المزيد والمزيد منك