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

الموضوع: يرجا افادتنا بافضل اكواد الاستعلام من قاعدة البيانات والاتصال (ضروري - ادخل للتفاصيل)

  1. #1
    عضو فعال جدا
    تاريخ التسجيل
    Jun 2003
    المشاركات
    2,270

    يرجا افادتنا بافضل اكواد الاستعلام من قاعدة البيانات والاتصال (ضروري - ادخل للتفاصيل)



    السلام عليكم
    صارلي فترة بواجه في مشكلة max_user_connections والشركة قامت كذا مرة بزيادة المساحة الخاصة بالقاعدة اعتقد
    وفي النهاية توصلت الى خلاصة وهي الاكواد التي قمت انا ببرمجتها ليست بالممتازة اي تشكل ضغط كبير على قاعدة البيانات والاتصال بها!!!!!!

    لذلك اذا ممكن احد الاخوان ذوي الخبرة افادتنا بطريقة نص الاكواد وخاصة الاكواد التي تتعلق بالاتصال مع قاعدة البيانات يعني UPDATE و SELECT و DELETE و INSERT

    يعني انا شاهدة اكثر من طريقة مكتوب فيها كود ال select ما هو افضل وأخف كود.......


    وما هو افضل كود لعمل اتصال بقاعدة البيانات؟؟؟

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


    كود PHP:


    <?php
    $dbserver
    ="localhost";
    $dbuser="database user name";
    $dbpass="database user password";
    $dbname="database name";
    $connect_mysql=mysql_connect($dbserver,$dbuser,$dbpass);

    if(
    $connect_mysql){
    mysql_select_db($dbname);
    } else {

    echo 
    "<center><b>حدث خلل اثناء محاولة الاتصال في قاعدة البيانات <br><br> نعتذر عن هذا الخلل الفني البسيط - سوف يعود الموقع للعمل خلال لحظات <br> يرجا الانتظار
    <br><br><br> فريق العمل</b></center>"
    ;
    exit();
    }

    ?>

    وياريت توضيح فائدة وكيفية استخدام die لاني كتصوري مفيدة جدا وانا لم استخدمها ابداً


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

    وشكرا





    __________________


    عاشت فلسطين وعاشت المقاومة
    http://www.palintefada.com/arabic
    http://www.palissue.com/arabic
    موقع انتفاضة فلسطين - موقع القضية الفلسطينية
    الكاسر



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


    اخي اعمل ملف واحد اسمه config مثلا وضع به معلومات القاعده ودالة الاتصال بها..
    اكرر داله!! لكي تنادي الداله في كل مره تريد الاتصال

    كود:
    <?php
    
    
    //database information
    $dbname="database";
    $dbuser="root";
    $dbpass="";
    $dbhost="localhost";
    
    //built function to connect to db
    function connectdb()
       {
         global $dbhost,$dbname,$dbuser,$dbpass;
    
          mysql_connect($dbhost,$dbuser,$dbpass)
            or die ("couldn't connect to mysql server");
          mysql_select_db($dbname)
            or die("couldn't select db:$dbname");
       }
    
    ?>
    الان كل مره تريد الاتصال اعمل connectdb();

    عند عرض نتائج القاعده:

    كود:
        connectdb();
        $result=mysql_query("select * from TTT");
         while($row=mysql_fetch_assoc($result))
             {
               $id=$row['id'];
               $name=$row['name'];
               
               print "$id --- $name<br>";
             }
    الشرح.. بالبدايه عملنا اتصال بقاعدة البيانات .. نادينا للداله connectdb الي عملناها في ملف الكونفغ.. ولكن تذكر انه يجب عليك ان اعمل include او require للملف في هذه الصفحه!!

    ثاني سطر استخرجنا البيانات من القاعده.. والمفتاح هو المتغير result طبعا هذا متغير نحن حددناه!
    اخترنا select يعني اختار.. * يعني الكل .. from TTT يعني من الجدول TTT
    تستطيع ان تحدد شروط داخل ال select مثلا

    كود:
    select * from TTT where id ='3'
    وشروط متعدده:
    كود:
    select * from TTT where id='3' and name=$var
    وايضا order التي تحدد لنا طريقة العرض.. يعني حسب ال id او حسب ال name ةبالتالي سيعرض حسب الاحرف او الكلمات:
    كود:
    select * from TTT where id='3' order by id
    هنا سيعرض حسب ال id من الصغير للكبير ولو اردت بالعكس يعني من الكبير للصغير فقط تضع الكلمه asc بعد الامر.. وهي تعني من الكبير للصغير..
    ملاحظه: عكسها هو desc ولكن بما انه هو الافتراضي فلا نكتبه:
    ملاحظه اخرى.. نحن عملنا الشروط المتعدده هي and تستطيع طبها عمل or يعني أو!!

    limit هي لتحديد عدد النتائج.. مثلا لو عملت limit 100 يعني اعطيني فقط اول 100 نتيجه حسب الشروط التي وضعناها طبعا

    مثال يدمج كل الامور.. لنفرض اننا نريد استخراج البيانات فقط للدوله مصر والكويت.. وفقط او 50 نتيجه
    :
    كود:
    "select * from TTT where country='egypt' or country='kuwait' order by id asc limit 50"
    عملنا order by id asc يعني الترتيب حسب حقل ال id ولكن من الكبير للصغير!!


    الان بالنسبه لل while فقد عرفنا بداخلها مصفوفه تحمل جميع نتائج الاستعلام. mysql_fetch_assoc يضع النتائج في مصفوفه عناصرها هي اسماء الحقول .. لذلك فقد رايت نتيجه استخراجهم
    ملاحظه mysql_fetch_array هي شبيهه بmysql_fetch_assoc ولكن عن طريقها تحمل المصفوفه ايضا العناصر 0..1..2..3 الخ بحيث ان 0 هو الحقل الاول 1 هو الثاني وهكذا
    انا شخصيا افضل ال assoc لان الامور ستكون اوضح!
    --------------------------------------------------
    الحذف:

    كود:
    connectdb();
       $q="delete from TTT where id=5 limit 1";
       $r13=mysql_query($q13);
    هنا حذفنا الحقل امن الجدول TTT والذي رقم ال id الخاص به هو 5
    طبعا في حالات البرمجه الرقم يكون متغير!!.. عادي مكان ال 5 تكتب المتغير
    طبعا ستقول لي لماذا عملنا limit 1 بما انه لن يكون اكثر من حقل قيمته 5 ..
    طبعا الاي دي هو رقم فريد ولا يتكرر صحيح ؟ ؟
    ولكن نعمل limit 1 لزيادة الاطمئنان وزيادة الخير خيرين وايضا لكي يتوقف البرنامج عن البحث عند ايجاده اول سجل يحمل الرقم 5

    ربما انت تقارن الان كود الحذف بكون العرض.. انا عملتهم بطريقه مختلفه
    ساكتب لك كود الحذف بالطريقه المختصره الي استخدمتها في العرض:
    كود:
    $q=mysql_query("delete from TTT where id=5 limit 1)";
    نختصر السطرين بسطر واحد!! قارن المثالين وستعرف ماذا فعلت .. بالاولى عرفت المتغير وبعدها عملت له mysql_query ولكن هنا عملت ال mysql_query فورا لقيمته!

    -----------------------------------------------------------
    وضع البيانات في الجدول TTT
    طبعا انت تستقبل بيانات (متغيرات) وتضعها في الحقول:
    ولا تنسى الاتصال بقاعدة البيانات قبل اي تعامل مع القاعده:
    كود:
    
       $q11="insert into TTT values('','$newcat','1')";
    $r11=mysql_query($q11);
    هنا المتغير الامر insert into TTT يعني : "ضع داخل الجدول TTT "
    وبعدها نكتب القيم : هنا انا افترضت ان لدينا 3 حقول الاول هو ال id وضعت به قيمه فارغه لانه طبعا سيكون auto_increment يعني سيضع قيمه بشكل تلقائي لوحده!!
    الحق الثاني وضعت به المتغير newcat على فرض ان هذا المتغير الذ استقبلته من النموذج مثلا!!
    والاخير وضعت به القيمه 1 لا ادري لماذا .. يمكن ان يكون متغير او لا اعرف اي شئ
    ملاحظه يجب ان تكون الادخالات بالترتيب كما هي في القاعده ويجب ان يكون نفس عدد الحقول وان لم ترد ذلك يجب ان تسمي كل حقل باسمه!!

    -------------------------------------------------------------------------------
    التعديل:

    كود:
    $q14="update TTT set name='$newcatname' where id=$catid limit 1";
    $r14=mysql_query($q14);
    نعدل الجدول TTT بان نضع مكان الحقل name القيمه الجديده التي في المتغير newcatname
    ولكن هذه التعديلات فقط للحقول للنتائج التي تطابق الشرط يعني id=$catid .. وطبعا مره اخرى كتبنا limit 1 مع اننا نستطيع الاستغناء عنها في هذه الحاله لانه لن يكون نفس id لنتيجتين!!
    لاحظ انك لو لم تضع الشرط فسيغير كل الحقول!

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

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






  3. #3
    عضو فعال جدا
    تاريخ التسجيل
    Jun 2003
    المشاركات
    2,270


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

    اول اشب في الدالة تبعت الاتصال بقاعدة البيانات ما هي اهمية
    global $dbhost,$dbname,$dbuser,$dbpass;

    او بالاحرة ما هي وضيفة الدالة global واهل تستخدم في كل الدوالات؟؟؟


    وثانيا
    انت كاتب
    كود PHP:

    $q
    ="delete from TTT where id=5 limit 1";
       
    $r13=mysql_query($q); 

    وهنا الطريقة التي استخدمها انا
    كود PHP:

    $q
    =mysql_query("delete from TTT where id=5 limit 1"); 

    وايضا هناك سؤال اخر عن كلمة mysql_query ماذا تعني بالضبط؟؟؟ لاني مرة رأيت حسب ما اتذكر اشي اسمه mysql_error


    وياريت توضيح اكثر عن دالة die ?
    وشكرا لك عزيزي وتحياتي





    __________________


    عاشت فلسطين وعاشت المقاومة
    http://www.palintefada.com/arabic
    http://www.palissue.com/arabic
    موقع انتفاضة فلسطين - موقع القضية الفلسطينية
    الكاسر


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


    طيب نبدأ ب global
    طبعا احنا عملنا داله function للاتصال والداله تستقبل معلومات القاعده
    اخي العزيز الدوال لا تتعرف على المتغيرات التي بخارجها
    مثلا لو انت عملت متغير وهو $name وبعدين عملت داله وداخل الداله حاولت تطبع المتغير فلن يطبع شئ لان الداله لن تتعرف عليه..
    هذا المتغير الذي هو خارج الداله نوعه global يعني عام. اما المتغيرات التي نعملها داخل الداله فاسمها local يعني محليه

    الان نحن نريد الاتصال بالقاعده وعندنا متغيرات وهي الاسم واسم القاعده والباسوورد والسيرفر .. لكن الداله لن تتعرف على هذه المتغيرات لذلك نكتب global واسماء المتغيرات بعدها بمعنى ان يجعل الداله تقرا هذه المتغيرات الخارجيه!!

    جرب بنفسك اعمل داله واعمل قبلها متغير وجرب اطبعه echo داخل الداله فلن يطبع.. وجرب مره اخرى ولكن اعمل global للمتغير فسيتعرف عليه

    -----------------------
    بالنسبه لثانيا.. عزيزي طريقتك وطريقتي نفسها .. انت دمجت السطرين في سطر واحد.. ولو ترجع لردي الاول تلاي ان انا اعطيتك الطريقتين!!

    -------------------
    بالنسبه ل mysql_query لا اعرف كيف اشرحها بالعربي ولكن هي ترسل استفسار لقاعدة البيانات الحاليه (الفعاله)
    مثلا نحن نفذنا استعلام حذف حقل معين ووضعناه بالمتغير Q يجب بعدها ان نعمل mysql_query للمتغير اي للاستعلام

    انت طريقتك كانت بدمجهم يعني انت عملت mysql_query للاستعلام!
    ----------

    اخر شئ لا يوجد طريقه معينه افضل من طريقه لكن كل طريقه لها استخدامها مثلا:
    MYSQL_FETCH_ASSOC او MYSQL_FETCH_ARRAY كلاها يضعان النتائج في مصفوفه ولكن على مع اختلاف بسيط لذلك انت تقرر ما يناسبك

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

    انت تريد ان تستخرج السجل الذي اسم المستخدم به هو "الكاسر"
    الافضل ان تعمل LIMIT 1 والافضل احيانا بعد ايجاد السجل الاول (بما انه فقط مستخدم واحد اسمه الكاسر) يعمل BREAK ولا يكمل الفحص.
    ----------------------------
    الداله DIE المقصود بها ان لم ينجح الاتصال لاي سبب من الاسباب اكتب التالي!!
    MYSQL_ERROR ان لم ينجح الاستعلام.. انا قليلا ما استعملها

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

    الداله IF هي اساس البرمجه!!

    تحياتي






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


    ربما تحتاج الى mysql_pconnect لكي تتخلص من مشكلة max_user_connections ... وهي نفس الداله mysql_connect الا ان الاتصال بقاعدة البينات لن يتم اغلاقة بانتهاء تنفيذ البرنامج سبقى لفتره معينه .

    راجع
    http://php.net/mysql_pconnect
    http://www.php.net/manual/en/feature...onnections.php





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

  6. #6
    عضو فعال جدا
    تاريخ التسجيل
    Jun 2003
    المشاركات
    2,270


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


    بارك الله فيكم
    والف شكر يا اخوان





    __________________


    عاشت فلسطين وعاشت المقاومة
    http://www.palintefada.com/arabic
    http://www.palissue.com/arabic
    موقع انتفاضة فلسطين - موقع القضية الفلسطينية
    الكاسر






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

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

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