معهد دعم اتش فى اى بى اس لحلول الويب - Powered by vBulletin


 
 
صفحة 1 من 2 12 الأخيرةالأخيرة
النتائج 1 إلى 10 من 20

الموضوع: موسوعة دروس للغة الـــ php

  1. #1
    أدارى
    الصورة الرمزية HVIPS4


    تاريخ التسجيل: Jun 2011
    رقم العضوية: 6
    الدولة: Cairo
    المشاركات: 1,979
    HVIPS4 غير متواجد حالياً

    موسوعة دروس للغة الـــ php


    اخواني

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


    اخواني ان حاب اتعلم هذي اللغه وشده حبي لتعلمي لها جمعت موسوعه وراح اطرحها لتعم الفائدة للجميع ان شاء الله رب العالمين


    ويارب انها تحوز على رضاكم اخواني


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


    ::::دروس مبتدئين::::


    درس: -


    تركيب Apache و PHP و MySQL على Linux




    الجزء الاول : Apache

    1.1 ما هو الـ Apache ؟

    هو برنامج خادم الويب الأكثر شعبيه في العالم طبقاً لدراسة NetCraft Web Server 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/


    قم بتحميل أخر نسخه يفضل ذالك .


    من خلال الرابط أعلاه يمكنك تحميل النسخ 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





    طبعاً 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





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


    Code ..


    ServerName localhost






    أيضاً قم بالبحث عن هذا DocumentRoot سوف تجده بعد ServerName مباشرتاً , هذا الجزء يجب أن يشير الى الدليل الذي سوف تضع به ملفات HTML لإستخدامها هذا الدليل سوف يكون الدليل الرئيسي لخادم ويبك . وهذا مثال


    Code ..


    DocumentRoot "/home/phpvillage/my_web_site"






    ملاحظه مهمه : الشرطه يجب أن تكون أماميه مثل هذا ( / )


    مثال : لو وضعنا ملف html في هذا المسار /home/phpvillage/my_web_site أسمه example.html سوف نقوم بتصفحه كتالي localhost/example.html


    لان بعد عمل التعديلات الازمه مهم جداً جداً أن تقوم بإعادة تشغيل Apache مرى أخر من خلال هذا الامر


    Code ..


    ./bin/apachectl restart
    نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي





    1.7 مصادر Apache على الإنترنت ؟


    Apache Web Server Documentation

    http://httpd.apache.org/docs/


    Apache Today

    http://apachetoday.com


    Apache Week

    http://www.apacheweek.com



    الجزء الثاني : PHP


    2.1 ما هي الـ PHP ؟

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

    2.2 كيف يمكن الحصول عليها ؟


    يمكنك الحصول على ملف 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





    أو من خلال الموقع مباشرتاً


    الان بعد الحصول على ملف الـ 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 Documentation

    http://www.php.net/docs.php


    PHPBuilder.com

    http://www.phpbuilder.com


    About Perl/PHP

    http://perl.about.com


    Zend

    http://www.zend.com


    DevShed - PHP

    http://www.devshed.com/Server_Side/PHP/




    الجزء الثالث : MySQL


    3.1 ماهو الـ MySQL ؟


    هو خادم قواعد البيانات SQL متعدد المستعملين و متعدد المواضيع وهو سريع جداً


    3.2 كيف يمكن الحصول عليه ؟


    يمكن زيارت هذا الموقع وتحميل النسخه مجاناً

    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





    او من الموقع مباشرتاً


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

    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 ..

    scripts/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


    Building a Database-Driven Web Site Using PHP and MySQL

    http://www.mysql.com/articles/ddws/


    MySQL Documentation

    http://www.mysql.com/doc/


    SQL Interpreter & Tutorial

    http://www.sqlcourse.com


    نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي

  2. #2
    أدارى
    الصورة الرمزية HVIPS4


    تاريخ التسجيل: Jun 2011
    رقم العضوية: 6
    الدولة: Cairo
    المشاركات: 1,979
    HVIPS4 غير متواجد حالياً

    رد: موسوعة دروس للغة الـــ php


    كيف نقوم بإرسال بريد جماعي !!


    سنتطرق في هذا الدرس عن كيفية عمل ملف خاص لارسال رساله للاعضاء ...

    مثلا في المنتديات الكبيرة مثل ال VBZooM & vBulletin ... هنالك صفحة في الادمن من خلالها يمكنك مراسلة اعضاء المنتدى .. اذا كنت تتمنى ان يكن في برنامجك مثل هذة الميزه تابع الدرس ... نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي

    أولاً :
    قبل البدء يجب عليك التجربة اولا و بعدها التطبيق على برنامجك .. الآن طبق مع الدرس للتجربه فقط لكي تستطيع تصليح اخطائك ...

    يجب ان يكون لدينا جدول في قاعدة البيانات يحتوي على الايميلات .. لنفترض ان لدينا جدول 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);
    INSERT INTO Mail(id , email)
    VALUES('NULL' , PhpVillageنقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعيyahoo.com);
    INSERT INTO Mail(id , email)
    VALUES('NULL' , PhpVillageنقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعيhotmail.com);
    INSERT INTO Mail(id , email)
    VALUES('NULL' , 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 لا تعمل في السيرفر الشخصي إلا باستخدام أحد البرامج التي تسمح بذلك ..

  3. #3
    أدارى
    الصورة الرمزية HVIPS4


    تاريخ التسجيل: Jun 2011
    رقم العضوية: 6
    الدولة: Cairo
    المشاركات: 1,979
    HVIPS4 غير متواجد حالياً

    رد: موسوعة دروس للغة الـــ php


    كيف تصنع دالة خاصة بك


    كتـابة الدوال
    الدرس الأول : كيفية صنع دالة خاصة بك ..
    الدالة هي ما يسمى بالـ 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 قد ظهرت بعد إستدعـاء الدالة ، وهذه هي الفكرة الأسـاسية للدوال مع أن المثـال يعتبر بسيطاً ، لكن الدوال تقوم بأكثر من ذلك بكثير ..
    نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي

  4. #4
    أدارى
    الصورة الرمزية HVIPS4


    تاريخ التسجيل: Jun 2011
    رقم العضوية: 6
    الدولة: Cairo
    المشاركات: 1,979
    HVIPS4 غير متواجد حالياً

    رد: موسوعة دروس للغة الـــ php




    إدراج الملفـات في الـ 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 .


    هذا كل شي في هذا الدرس ، أتمنى أن يكون مفيداً للجميع ..

    نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي

  5. #5
    أدارى
    الصورة الرمزية HVIPS4


    تاريخ التسجيل: Jun 2011
    رقم العضوية: 6
    الدولة: Cairo
    المشاركات: 1,979
    HVIPS4 غير متواجد حالياً

    رد: موسوعة دروس للغة الـــ php


    إستخدام الـ Cookies


    مقدمة

    تعد الكعكات ( الـ cookies ) من الوسائل المفيدة في انشاء مواقع اكثر تفاعلية ، فبواسطتها ستتمكن من معرفة هل قام المتصفح بزيارة موقعك من قبل ام لا ..

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


    اقسام الدرس :

    1- معلومات عامة .
    2- زراعة الكعكات على جهاز العميل .
    3- قراءة الكعكات من جهاز العميل .
    4- تطبيق : تخصيص لون الخلفية .

    المصادر :

    http://www.geocities.com/paledu5/issues.htm

    http://totalquality.dubaipolice.gov....nternash36.htm

    http://urnotalone.8m.com/cookies.htm

    http://www.hotuae.com/et/cookies.html

    http://www.freewebs.com/paz1/cookies.htm

    http://www.planet-source-code.com/vb...d=357&lngWId=8

    http://www.devshed.com/Server_Side/PHP/Cookies

    http://www.free2code.net/tutorials/php/cookie2



    معلومات عامة


    - ما هي ملفات الكوكيز ؟

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

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


    - كيف يتم إيداع ملفات الكوكيز على جهازك ؟

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

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


    ----- [ معيلق]


    - مكونات ملف الكوكيز :

    يتكون عادة من عدة اجزاء هي اسم الملف ، قيمته ، تاريخ انتهاء مفعوله ، الموقع المالك له ...


    زراعة الكعكات على جهاز العميل


    أولا : كيف تزرع ملفات الكعكات :

    يتم ذلك باستخدام الدالة setcookie و تعريفها بالشكل التالي :
    Code ..


    boolean setcookie ( string name [, string value [, int expire

    [, string path [, string domain [, int secure]]]]])






    تهمنا المدخلات الثلاث الاولى و هي :

    name : اي اسم الكعكة ... فبامكانك ارسال اكثر من كعكة الى متصفح واحد و عندها يصبح الاسم هو الطريقة الوحيدة للتمييز .

    value : القيمة ... فقط قيم نصية ... لا يمكنك وضع مصفوفة كقيمة و هذا أامر مهم ... لكن انتبه بامكانك وضع مصفوفة لكن بطريقة اخرى ... ؟ كيف ؟ : استخدم الدالة serialize لتحويل اي متغير في بي اتش بي الى شكل نصي و من ثم استخدم unserialize لاعادته الى الشكل الطبيعي .


    expire : اي عدد الثواني من بدية عصر اليونكس ( 1 يناير 1970 ) و التي بعدها سيقوم المتصفح على جهاز المستخدم بحذف الكعكة ... و هنا ثلاث حالات :

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

    مثال :

    Code ..


    <?

    setcookie('site','http://www.albrhan.com/',time()+3600);
    ?>





    من الدوال المفيدة دالة time و التي ترجع الوقت الحالي على شكل عدد الثواني من بداية عصر اليونكس (1 يناير 1970) .


    ثانيا كيف تحذف او تعدل كعكة:

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

    مثال :

    Code ..


    <?

    setcookie('site','',time()-360000);
    ?>






    ملاحظات :

    1- عندما تحدد زمنا ماضياً اجعله قيمة كبيرة لكي تتفادى فارق التوقيت بين الخادم و العميل .
    2- لكي تعدل أي كعكة عليك حذفها و إرسالها من جديد .

    ملاحظة مهمة :

    يجب ان تستدعي الدالة setcookie قبل أن ترسل اي شيء الى المتصفح .. فمثلا الكود التالي لن ينجح :
    Code ..


    <html>

    <body>
    <?
    setcookie('site','islamway.net',time()+20000);
    echo " Alfjr.com : the best islamic forum";
    ?>
    </body>
    </html>





    بل لو كان هنالك مجرد سطر فارغ قبل علامة البداية ?> فلن تعمل الدالة setcookie ...


    المثال السابق كان من الممكن ان يكون :

    Code ..


    <? setcookie('site','islamway.net',time()+20000);

    ?>
    <html>
    <body>
    <? echo " Alfjr.com : the best islamic forum"; ?>
    </body>
    </html>



    قراءة الكعكات من جهاز العميل


    - كيف تستقبل المتغيرات من الكعكة :

    كما قلنا بانه بامكانك ارسال اكثر من كعكة الى متصفح واحد ..
    عندما يطلب المستخدم من متصفحهِ صفحة على موقعك فان المتصفح يقوم بارسال جميع الكعكات التي قمت انت بزراعتها عند المستخدم ... PHP تسهل عليك قراءة هذه الكعكات و تخزنها في مصفوفة اسمها COOKIE_$ و هي مصفوفة من النوع Associative Arrays بحيث ان المفتاح هو اسم الكعكة و القيمة قيمة الكعكة كما ارسلتها .

    مثال :

    Code ..


    <?

    echo $_COOKIE['site'];
    ?>






    و هذه تطبع :

    Code ..


    islamway.net




    تطبيق : تخصيص لون الخلفية


    كمثال بسيط دعنا نقوم بانشاء موقع مبسط و نستخدم الكعكات لكي نحفظ لون الخلفية المحببة الى الشخص ..


    - ماذا لدينا ؟

    1- الملف user.php : يقوم الملف بعمليتين :
    --> الاولى : تحديد اللون الذي اختاره الزائر .
    --> الثانية : عرض نموذج اختيار الللون و حفظ اللون المختار

    2- الملف index.php إحدى صفحات الموقع و التي تستفيد من خدمات الملف user.php .


    وإليك الكود الخاص بكل ملف :

    1- الملف user.php :
    Code ..


    <?

    /*-----------------------
    Cookies-Based 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="text" 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;
    setcookie('color',$_GET['color'],time()+36000);
    header('Location:index.php');

    }


    function get_color(){

    global $_COOKIE;
    if(isset($_COOKIE['color'])){
    return $_COOKIE['color'];
    }else{
    return "#FFFFFF";
    }
    }

    function clear_color(){

    setcookie('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>

    نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي

  6. #6
    أدارى
    الصورة الرمزية HVIPS4


    تاريخ التسجيل: Jun 2011
    رقم العضوية: 6
    الدولة: Cairo
    المشاركات: 1,979
    HVIPS4 غير متواجد حالياً

    رد: موسوعة دروس للغة الـــ php


    نـقل قواعد البيـانات


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


    في مثالنا هنا سنقوم بشرح طريقة نقل قاعدة بيـانات منتدى الـ
    VB الشهير ، لذلك ستجد مجموعة كبيرة من الجدوال تقريباً 49 جدولاً ، ولإن القاعدة ستكون كبيرة نسبياً سنقوم بتخفيف بعض البيـانات منها فسنقوم بالتـالي :

    تفريغ الجداول التـالية ( عن طريق فتح الجدول واختيـار Empty ) ..

    1- adminlog
    2- search
    3- searchindex
    4- word

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


    بعد تفريغ الجدوال قم بالرجوع الى الصفحة التي يتم استعراض جميع الجداول فيها ، وستجد أسفل الصفحة العنوان التـالي View dump (schema) of database وبجانبه الخيـارات التـالية

    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 ، ستقوم بالتأكيد بعملية تركيب جديدة للمنتدى عن طريق الـ install ، ما يهمنا هنا هو طريقة استرجاع قاعدة البيانات التي قمنا بحفظها في ملف sql الى الموقع الجديد ، كل ما عليك فعله هو فتح الـ phpmyadmin في الموقع الذي تريد أن تنقل القـاعدة اليه ، وتقوم بما يلي :

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


    نقطة أخيرة ستسهل عليك نقل قاعدة البيـانات وهي تقسم الملف إن كان كبيراً ، والطريقة ببسـاطة عن طريق فتح الملف واقتطاع إجزاء منه حسب الحاجة التي تراها ووضع الأقسـام في ملفات ذات امتداد sql ، مثلا 1.sql و 2.sql الخ .. لكن تأكد من أن كل ملف يبدأ بالجملة insert into ، وأن حجمه ليس كبيراً ، 50kb ستكون مناسبة .

    نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي

  7. #7
    أدارى
    الصورة الرمزية HVIPS4


    تاريخ التسجيل: Jun 2011
    رقم العضوية: 6
    الدولة: Cairo
    المشاركات: 1,979
    HVIPS4 غير متواجد حالياً

    رد: موسوعة دروس للغة الـــ php


    لماذا لغة PHP ?


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


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


    نقول : تستفيد منها في اضافة بعض البرامج التفاعلية الضرورية لموقعك . ألا ترغب في أن تتعرف على رأي زوارك في موقعك وأن تحصل على مقترحات عملية منهم ؟ الحل أن تضيف سجل زوار يتيح لزوارك كتابة آرائهم ومقترحاتهم ، وبي إتش بي تتيح لك ذلك .


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

    1- عداد زوار لمعرفة عدد زوار موقعك . والعدادات المتقدمة منها تعطيك تفاصيل إحصائية مفيدة .
    2- منتدى . والمنتديات معروفة لدى الجميع تقريبا ، وفوائدها معروفة ، فهي التي تزيد من زوار موقعك ، وتفيد زوار موقعك في الاجتماع في مكان واحد وتبادل الخبرات والفوائد .
    3- برنامج لمشاركة الزوار ، بحيث يضع الزائر مقالته أو مشاركته في موقعك بدون تدخل منك وبذلك تجد المحتويات الجديدة على موقعك دائما .
    4- برنامج للبطاقات وهذا معروف ..

    بالإضـافة الى أنواع لاحصر لها من البرامج ..


    الآن دعونا نشرح قليلا ماهي لغة بي إتش بي ، هناك لغات كثيرة تشابه هذه اللغة منها لغة Perl أو ASP ، وهي لغات تعمل من جهة المستضيف أو ما يسمى بالـ ServerSide language ، أي أنها تعمل من قبل المستضيف الذي تعمل عليه وتقوم بإخراج النتائج على شكل HTML يفهمها المتصفح ، وهي بذلك لا تثقل حاسوب زائر الموقع بأية أعباء . وكذلك توفر مرونة عالية في البرمجة لا تتوفر في لغات HTML و Java script والتي تعمل على حاسوب زائر الموقع .


    بدأت لغة البي إتش بي بفكرة أحد الهواة Ramsus Ledrof الذي فكر في كيفية تضمين شفرات ال HTML شفرات أكثر تعقيدا ، إلى أن بدأت هذه اللغة بالنمو وأصبحت أغلب المواقع لاتخلو من برنامج واحد على الأقل مصمم بالـ PHP .


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


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


    تتابع تطوير اللغة حتى صدور النسخة PHP 4 والذي احتوى على تكنولوجيا تسمى Zend وتساعد على تسريع الصفحات المعتمدة على بي إتش بي وأيضا الإصدار الجديد يدعم خدمات مختلفة والتي في السابق كانت تدعم فقط برنامج الخادمات الشهيرة Apache . حاليا هنالك أكثر من مليون ونصف المليون صفحة في عالم الإنترنت الواسع تعتمد على تطبيقات لغة بي إتش بي وأيضا الكثير من المواقع العربية إعتمدت تطبيقات هذه اللغة .


    لماذا وما الدافع في اختيار تعلم لغة بي إتش بي مع وجود الكثير من اللغات المنتشرة مثل Perl و CGI وJava script و Cold Fusion و ASP . الأمرفي غاية البساطة . لغة PHP لغة سهلة ، قوية ، متماسكة وتستطيع عمل كل شيء نريده .


    هل تعلم لغة بي إتش بي صعبة ؟ أكيد ليست بصعوبة لغة البيرل ، ونستطيع القول أن من يملك أساسيات لغة الـ C يستطيع بكل سهولة استيعاب عمل أوامر لغة PHP لأنها اعتمدت على طريقة الأوامر في لغة السي ، وأما الأشخاص الذين لم يحالفهم الحظ في تعلم لغات البرمجة فلا تقلقوا فالأمر ليس صعبا في تعلم اللغة وفقط تحتاج للمواصلة وفهم الأوامر .


    وهدفنا هو تعليمكم أساسيات اللغة لاستخدامها في صفحاتكم ، ولانحتاج منك إلا معرفة القليل من لغة HTML ..

  8. #8
    أدارى
    الصورة الرمزية HVIPS4


    تاريخ التسجيل: Jun 2011
    رقم العضوية: 6
    الدولة: Cairo
    المشاركات: 1,979
    HVIPS4 غير متواجد حالياً

    رد: موسوعة دروس للغة الـــ php


    العوامل:


    العوامل

    - العمليات الرياضية :
    هي نفسها العمليات التي درستها في المرحلة الابتدائية من ( جمع + ، طرح - ، ضرب * ، قسمة / ) والزائد عليهم التي لم تدرسه تقريبا هو باقي القسمة ( % ) ..

    مثال شامل على كل العمليات في الـ 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 يطبع
    ?>

  9. #9
    أدارى
    الصورة الرمزية HVIPS4


    تاريخ التسجيل: Jun 2011
    رقم العضوية: 6
    الدولة: Cairo
    المشاركات: 1,979
    HVIPS4 غير متواجد حالياً

    رد: موسوعة دروس للغة الـــ php


    قواعد البيانات :


    قواعد البيانات

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

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


    ومن المهم معرفة بعض الاساسيات في الـ RDBMS ، والتي من شأنها تسهيل عملية فهمك التام لطريقة عملها والتعامل معها ..


    1- الجداول Tables :

    تعتبر أكبر جزء في قاعد البيانات ، وهي عبارة عن أعمدة وصفوف تحتوي على قيم معينة .

    2- الأعمدة Columns :

    لكل عمود في الجدول أسم خاص يختلف عن أسماء الأعمدة الأخرى في نفس الجدول ، ويجب ان يكون لكل عمود نوع خاص به يصف نوع البيانات التي ستخزن فيه ، وكم يظهر في الصورة ، فان عمود الرقم من النوع الرقمي Integer ، اما الحقلين الآخرين فهي نصوص Text .

    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 databases;







    بعد كتابة هذا الأمر ( بعد مؤشر الـ mysql> ) ، سيتم استعراض قواعد البيانات في السيرفر الذي قمنا بالاتصال به ، وفي حالة عدم وجود أي قاعدة بيانات قمت باعدادها من قبل ، فان من الطبيعي أن تجد قاعدتي بيانات موجودة بشكل تلقائي عند تثبيت السيرفر Mysql ، وتلك القاعدتان هي test – mysql .


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


    بعد استعراض قواعد البيانات بالأمر السابق ، سنقوم بانشاء قاعدة بيانات باسم PHP ، ولعمل ذلك قم بكتابة الأمر التالي :


    Code ..



    create database PHP;







    لو قمنا بكتابة الأمر السابق ( show database ) سنرى أن قواعد البيانات أصبحت 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 text not null,
    counter int
    );






    شرح المثال :

    - قمنا بكتابة ( create table users ) وهذا يعني انشاء جدول باسم users .
    - القوس ) يعني بداية تسمية حقول الجدول وخصائص تلك الحقول .
    - السطر الأول من اسماء الحقول هو ( id ) والرمز ( int ) يعني وصف نوع البيانات التي ستخزن في الـحقل ( id ) ، وهي في هذه الحالة تعني نوع البيانات الرقمية ، اما الرمز ( not null ) فيعني عدم امكانية أن يكون هذا الحقل فـارغاً ، بل يجب أن يحتوي على قيمة ، والـ ( auto_increment ) يجعل الحقل يحتوي على قيم متسلسلة يستحيل تكرارها ، وسيبدأ من الرقم 1 ويبدأ بالزيادة بمقدار واحد في كل مرة يتم ادخال صف جديد الى هذا الجدول ، وفي النهاية الرمز ( Primary Key ) يعني أن الحقل هو المفتاح الرئيسي لهذا الجدول أو بمعني أنه سيتم التفريق بين صفوف الجدول اعتماداً على هذا الحقل ولهذا وضعنا ( auto_increment ) لضمان عدم اختلاط البيانات .
    - السطر الثاني يحتوي على اسم الحقل ( name ) ونوع البيانات ( text ) أي نصي ، ونفس الرمز السابق الذي ذكرناه وهو ( 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 ) وكذلك البيانات بما يناسب الذي تريد القيام به .

  10. #10
    أدارى
    الصورة الرمزية HVIPS4


    تاريخ التسجيل: Jun 2011
    رقم العضوية: 6
    الدولة: Cairo
    المشاركات: 1,979
    HVIPS4 غير متواجد حالياً

    رد: موسوعة دروس للغة الـــ php



    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 .
    نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي

 
صفحة 1 من 2 12 الأخيرةالأخيرة

ضوابط المشاركة

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