النتائج 1 إلى 13 من 13

الموضوع: PHP5 : وشرح تعليمي لملحقة SQLite

  1. #1
    عضو سوبر نشيط
    تاريخ التسجيل
    Oct 2003
    المشاركات
    718

    PHP5 : وشرح تعليمي لملحقة SQLite



    PHP5 : وشرح ملحقة SQLite

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

    اسعد الله اوقاتكم بكل خير ..

    لدي اليوم درس بسيط ومميز عن لغة PHP5 ، والتي حاليا اتعلمها ..

    فأحببت ان افيد كلما انتهيت من قسم معين ان اشرحه ..

    لعله عند انتهاء الدرس يستغرب البعض انني لم اضعه في قسم قواعد البيانات .. ولذلك لسبب ، انها لا تحتاج لسيرفر Mysql ولكن ملحقة مع PHP5 ..


    === بداية الموضوع ===

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

    تعالوا لنتعلم سويا ما هي SQLite ..

    المميزات:
    + لاتحتاج إلى سيرفر Mysql
    + سهلة الاستخدام.
    + تأتي مع PHP5 كملحقة.
    + خفيفة وسريعة.
    + تنشأ على شكل ملفات.
    + استعلامات الـSQLite كإستعلامات Mysql

    العيوب:
    + عند استخدام عملية فإن جميع الجداول تغلق. ( لم استوعبها بالشكل المطلوب ).

    === تعال نكتشف كيف ذلك ===

    لنبدأ الاتصال بقاعدة ، او انشاء الملف ..
    في البداية ننشئ الاتصال بقاعدة البيانات ..

    سوف ننشئ ملف بإسم crm.db على الترخيص 0666

    كود PHP:
    $db = new SQLiteDatabase("crm.db",0666,&$error) or die("Failed: $error"); 
    سوف ننشئ تركيب جدول قاعدة البيانات ... نضعه في متغير create_query

    في الـ SQLite كل ما عليك في انشاء تركيب الجدول لا تحتاج إلى شيئين ..

    1. Integer - رقمي
    2. varchar - نصي

    الرقمي (integer ) يجب كتابته.
    النصي ( Varchar ) لا يجب كتابته وهو اعلى من 255 حرف وليس محدد.

    عندما ترغب في تعيين Primary Key .. بكل بساطة .. اكتب امامه ذلك ..

    كود PHP:
    $create_query "
                    CREATE TABLE document
                        (id integer primary key,
                        title,
                        intro,
                        body
                    );
                    
                    CREATE TABLE dictionary
                        (id integer primary key,
                        word
                    );
                    
                    CREATE TABLE lookup
                        (document_id    integer,
                        word_id            integer,
                        postion            integer
                        );
                    
                    CREATE UNIQUE INDEX word ON dictionary(word);
                    "

    سوف نطلب منه الان اضافة هذا الجدول في قاعدة البيانات التي انشئناها وهي crm.db

    كود PHP:
    $db->query($create_query); 
    == هنا انتهينا من انشاء ملف قاعدة البيانات وانشاء الجدول الذي نرغب به.

    سوف نبدأ الان في الاضافة في قاعدة البيانات .. ونضع الاضافة في متغير insert_date

    كود PHP:
    $insert_data "insert into document (title,intro,body) values ('Learn PHP5 with Albanner','Hello world with SQLite','This site use SQLite Wow')"
    الان سوف نضيف التنفيذ لهذا المتغير .. لكي يضيفه في ملف قاعدة البيانات ..

    كود PHP:
    $db->query($insert_data); 
    == هنا انتهينا من اضافة المعلومات في قاعدة البيانات ..

    سوف نبدأ الان الاستعلام واظهار النتائج من ملف القاعدة .. ونبدأ في وضع استعلامنا في متغير ..

    كود PHP:
    $show_data "select * from document"
    سوف ننفذ الاستعلام ونضعه في Fetch ..

    كود PHP:
    $show $db->query($show_data);
    $ft $show->fetch(); 
    والان باقي طباعة هذا الاستعلام ..

    كود PHP:
    echo "$ft[id]. <b>$ft[title]</b> <br>$ft[body]"
    الكود كاملا ..

    كود PHP:
    <?php

    $db 
    = new SQLiteDatabase("crm.db",0666,&$error) or die("Failed: $error");

    $create_query "
                    CREATE TABLE document
                        (id integer primary key,
                        title,
                        intro,
                        body
                    );
                    
                    CREATE TABLE dictionary
                        (id integer primary key,
                        word
                    );
                    
                    CREATE TABLE lookup
                        (document_id    integer,
                        word_id            integer,
                        postion            integer
                        );
                    
                    CREATE UNIQUE INDEX word ON dictionary(word);
                    "
    ;

    $db->query($create_query);

    $insert_data "insert into document (title,intro,body) values ('Learn PHP5 with Albanner','Hello world with SQLite','This site use SQLite Wow')";
    $db->query($insert_data);

    $show_data "select * from document";
    $show $db->query($show_data);
    $ft $show->fetch();

    echo 
    "$ft[id]. <b>$ft[title]</b> <br>$ft[body]";
    ?>
    ==== انتهى الدرس ===

    وسوف يظهر لك النتيجة كما في الصورة ..



    =================

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

    اتمنى ان اكون وفقت في توصيل المعلومة ..

    اخوكم/ نايف
    albanner





    الصور المرفقة الصور المرفقة  
    __________________
    أخي [ محمد الفارس ] في كل رد اقول .. شكراً لك ...
    البانر.نت .. نصنع من الافكار دليل


  2. #2
    عضو شرف
    تاريخ التسجيل
    Apr 2002
    المشاركات
    1,379


    "+ عند استخدام عملية فإن جميع الجداول تغلق. ( لم استوعبها بالشكل المطلوب )."
    sqlite تتعامل مع ملف لتخزين البينات وقد يحتوى هذا الملف على اكثر من جدول عند الكتابة للملف تقوم بإغلاقة حتى لا يحدث تعارض وهذا يعنى إغلاق جميع الجداول أي في نفس الوقت يمكن لشخص واحد الكتابة ويمكن للجميع القراءه , يحدث ذلك في أي تطبيق يتعامل مع الملفات .





    __________________
    ضيف الله العتيبي مبرمج حر و مهندس معتمد من زيند (ZCE)
    الاتصال: daif@daif.net او جوال: 0556639884
    الخدمات: تقديم استشارات برمجيه, تطوير بوابات/خدمات إلكترونيه للقطاع العام او الخاص .

  3. #3
    عضو شرف
    تاريخ التسجيل
    May 2007
    المشاركات
    1,647


    "+ عند استخدام عملية فإن جميع الجداول تغلق. ( لم استوعبها بالشكل المطلوب )."
    sqlite تتعامل مع ملف لتخزين البينات وقد يحتوى هذا الملف على اكثر من جدول عند الكتابة للملف تقوم بإغلاقة حتى لا يحدث تعارض وهذا يعنى إغلاق جميع الجداول أي في نفس الوقت يمكن لشخص واحد الكتابة ويمكن للجميع القراءه , يحدث ذلك في أي تطبيق يتعامل مع الملفات .
    أليست MySQL عبارة عن محرك يعتمد على الملفات كذلك؟ إذا كان كذلك، فإن هذا العيب موجود هناك أيضاً .. أو أنني لم أستوعب الموضوع كذلك ..

    لكن، وفقاً لطفيف المعلومات التي أمتلكها، فإني أذكر أن هناك بعض الدوال في PHP من دوال التعامل مع MySQL والتي تغلق الجداول أثناء عملها .. أنتظر توضيحاتكم ..

    شكراً أستاذ albanner على الموضوع الشيّق ..

    تحياتي، أشرف السمهوري





    __________________
    # اتبعني على Twitter
    # عِرفان ساهم ببناء المحتوى العربي العلمي على الإنترنت!

  4. #4
    عضو سوبر نشيط
    تاريخ التسجيل
    Jun 2003
    المشاركات
    789


    جزاك الله خير، فعلا SQLite، تفيد حق السكربتات البسيطه إلى ماتحتاج قاعده بيانات كبيره، مثل سكربت تعليقات الخ





    __________________
    متى استعبدتم الناس وقد ولدتهم أمهاتهم أحرار........
    -----------------------------------
    شبكة الشعر الادبيه

  5. #5
    عضو شرف
    تاريخ التسجيل
    Apr 2002
    المشاركات
    1,379


    "أشرف السمهوري" الفرق هنا ان sqlite تضع جميع الجداول لقاعدة البينات في ملف واحد , اما mysql فهي تضع لكل جدول عدة ملفات كمثال كل جدول من النوع MyISAM يتكون من ملف MYD وتخزن فيه البينات , MYI ويخزن فيه الفهارس , FRM وتخزن فيه بنية الجدول.
    - لماذا sqlite تغلق جميع الجداول بدلا من جدول واحد , كما ذكرت هي تعتمد على اغلاق الملف الذي يحتوى على الجداول وهذا بدوره يغلق جميع الجداول ... صحيح يمكن برمجيا ان اغلاق جدول واحد بدون اغلاق الملف لكن اعتقد ان sqlite تستخدم هذه الطريقة لكونها الاسرع بدلا من التحقق في كل بالطريقة البرمجية .

    راجع
    MySQL :: MySQL 5.0 Reference Manual :: 13.1 The MyISAM Storage Engine





    __________________
    ضيف الله العتيبي مبرمج حر و مهندس معتمد من زيند (ZCE)
    الاتصال: daif@daif.net او جوال: 0556639884
    الخدمات: تقديم استشارات برمجيه, تطوير بوابات/خدمات إلكترونيه للقطاع العام او الخاص .

  6. #6
    عضو سوبر نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    947


    جيد .. بحسب تقييمكم ما الأسرع MySql أم SQLite خصوصاً في قواعد البيانات الكبيرة
    اعتقد MySql





    __________________
    قل اللهم مالك المُلك تؤتي الملك من تشاء وتنزع الملك ممن تشاء وتعز من تشاء وتذل من تشاء بيدك الخير انك على كل شىء قدير

  7. #7
    عضو نشيط جدا
    تاريخ التسجيل
    May 2006
    المشاركات
    477


    albanner
    مجهود جميل
    وفقك الله ،

    daif
    كلامك صحيح .. هذا هو الفرق الخاصه بتخزين الداتا في ملفات سواء في MYSQL أو SQLITE .. لذلك في حال التعاملات الكبيره و الداتا الضخمه ف Mysql أفضل بكثير .. تلاحظها من بنيتها التحتيه ، لذلك مهما كانت SQlite فهي فقط للتطبيقات البسيطه

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





    __________________
    أحمد عبد الفتاح
    www.servmix.com
    لمراسلتي : admin@servmix.com


  8. #8
    عضو نشيط جدا
    تاريخ التسجيل
    Jan 2008
    المشاركات
    383


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

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





    __________________
    منتديات الريسي التطويرية منتدى الدعم الفني المجاني
    http://www.alreesi.net/vb/
    دبليو سبورت :- الرياضة ما بين يديك + http://www.wsport.net/
    كود PHP:
    http://www.wsport.net 

  9. #9
    عضو شرف
    تاريخ التسجيل
    Apr 2002
    المشاركات
    1,379


    "مهندس مصرى" - "Eng/ Ahmed"
    - الأسرع طبعها هو sqlite راجع هنا SQLite Database Speed Comparison
    - الأفضل يكون على حسب تطبيقك اذا كان صغير او موجه مثلا لاجهزة الجوالات سيكون ايضا sqlite .





    __________________
    ضيف الله العتيبي مبرمج حر و مهندس معتمد من زيند (ZCE)
    الاتصال: daif@daif.net او جوال: 0556639884
    الخدمات: تقديم استشارات برمجيه, تطوير بوابات/خدمات إلكترونيه للقطاع العام او الخاص .

  10. #10
    عضو سوبر نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    947


    "مهندس مصرى" - "Eng/ Ahmed"
    - الأسرع طبعها هو sqlite راجع هنا SQLite Database Speed Comparison
    - الأفضل يكون على حسب تطبيقك اذا كان صغير او موجه مثلا لاجهزة الجوالات سيكون ايضا sqlite .
    جيد هذا فى حالة التطبيقات الصغيرة
    لنفرض لدي قاعدة بيانات 2 جيجا اعتقد ال mysql ستكون اسرع في هذه الحالة





    __________________
    قل اللهم مالك المُلك تؤتي الملك من تشاء وتنزع الملك ممن تشاء وتعز من تشاء وتذل من تشاء بيدك الخير انك على كل شىء قدير

  11. #11


    يمكنك مع الماي سكول او اي قواعد بيانات أخري محترفة مثل الأوراكل ان تستخدم ال transaction وأن تغلق الكتابة علي متغير بذاته حينما يتم التعامل معه في إحدي العمليات حتي لا تحدث مشكلة من 3 مشكلات أهما أن يتم سحب قيمة المتغير والتعامل معها في حين أن أخر قام بالكتابة عليها بقيمة جديدة
    فيكون الشخص الثاني أخذ القيمة القديمة وتعامل معها

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

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





    __________________
    السيف أصدق أنباء من الكتب

  12. #12


    شكراً على الموضوع الرائع
    لقد اتضح لى الامر الان
    بارك الله فيكم






  13. #13
    عضو جديد
    تاريخ التسجيل
    May 2008
    المشاركات
    28


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










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

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

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