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

الموضوع: هل ممكن عمل كود استعلام من الداتا بيز لاظهار مستخدمى مصر عن طريق الاى بى؟

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

    هل ممكن عمل كود استعلام من الداتا بيز لاظهار مستخدمى مصر عن طريق الاى بى؟



    لدى قاعده مسجل بها اعضاء و كل عضو مسجل معه اى بى

    لدى قائمه بمدى ارقام الاى بى المصريه و لكنها كبيره

    لذلك سيحتاج شخص محنك لادخاله فى كود استعلام

    اريد كود استعلامى يظهر المصريين عن طريق الاى بى و يظهرهم بالاسماء







  2. #2


    مجرد محاولة

    كود PHP:
    <?php
    $seldb
    mysql_connect($host,$username,$password);
    $conmysql_select_db($dbname,$seldb);
    $getip mysql_query(SELECT ip,username FROM users WHERE $username=username AND $ip=ip);
    echo 
    "<table>";
    while (
    $row mysql_fetch_assoc($getip)){
    echo 
    "
    <tr>
    <td>"
    .$row['username']."</td>
    </tr>
    <tr>
    <td>"
    .$row['ip']."</td>
    </tr>"
    ;
    }
    echo 
    "</table>";
    mysql_free_result($getip);
    ?>
    لا اعتقد ان الكود سيعمل و لكني مثلك سأنتظر الخبراء ليأتوا بالطريقة الصحيحة
    كما أن الكود ينقصه اختيار الأي بي الخاص بمصر فقط
    و ان شاء الله ألاخوة يفيدوك





    التعديل الأخير تم بواسطة اسلام مصطفي ; 30-10-2010 الساعة 08:18 PM
    __________________
    Twitter : eMostafa91

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


    نعم يمكن ذلك بكل بساطة
    لنفرض انك لديك عضو مصري لديه هذا الاي بي 41.186.232.28
    وكل اعضاء مصر مثلا يبدأون ب 41.186 او 41 فقط
    ستستخدم like
    كود PHP:
     SELECT from users WHERE ip_address like '%41.186' 
    ولا تنسى وضع علامة % في اول الرقم حتى يكون شرط التشابه من المقطع الاول من الاي بي





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

  4. #4
    عضو فعال
    تاريخ التسجيل
    May 2006
    المشاركات
    1,259


    مجرد محاولة

    كود PHP:
    <?php
    $seldb
    mysql_connect($host,$username,$password);
    $conmysql_select_db($dbname,$seldb);
    $getip mysql_query(SELECT ip,username FROM users WHERE $username=username AND $ip=ip);
    echo 
    "<table>";
    while (
    $row mysql_fetch_assoc($getip)){
    echo 
    "
    <tr>
    <td>"
    .$row['username']."</td>
    </tr>
    <tr>
    <td>"
    .$row['ip']."</td>
    </tr>"
    ;
    }
    echo 
    "</table>";
    mysql_free_result($getip);
    ?>
    لا اعتقد ان الكود سيعمل و لكني مثلك سأنتظر الخبراء ليأتوا بالطريقة الصحيحة
    كما أن الكود ينقصه اختيار الأي بي الخاص بمصر فقط
    و ان شاء الله ألاخوة يفيدوك
    انا عامل نفس الكود تقريبا و مشكلتى هى ازاى ادخل الايبيهات المصريه فى الكود علما ان الرينج بتاعها حوالى 250 رينج

    نعم يمكن ذلك بكل بساطة
    لنفرض انك لديك عضو مصري لديه هذا الاي بي 41.186.232.28
    وكل اعضاء مصر مثلا يبدأون ب 41.186 او 41 فقط
    ستستخدم like
    كود PHP:
     SELECT from users WHERE ip_address like '%41.186' 
    ولا تنسى وضع علامة % في اول الرقم حتى يكون شرط التشابه من المقطع الاول من الاي بي
    اخى الفاضل يوجد اكثر من 250 رينج للايبيهات المصريه فلن ينفع هذا الكود

    من امثله الرينج المصري

    41.64.0.0 - 41.65.255.255
    41.67.64.0 - 41.67.127.255
    62.241.128.0 - 62.241.159.255
    64.34.248.112 - 64.34.248.127
    209.236.119.134 - 209.236.119.141
    212.12.224.0 - 212.12.255.255

    كل دى ايبيهات مصريه






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


    اذا ليس هناك حل الا عمل كود برمجي لوب على كل الايبيهات بعدد الrange اللي معك كما تقول 250
    اي ستقوم بعمل حلقة تكرار 250 مرة على array تحمل ال 250 رينج بالدالة foreach
    وقم بعمل حقل اضافي في قاعدة البيانات وليكن country_flag واذا كان العضو مصري ضع به رقم 1 واذا لم يكن مصري ضع الرقم 0
    وعند الاستعلام استعلم على اساس هذا الحقل





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

  6. #6
    عضو فعال
    تاريخ التسجيل
    Jun 2008
    المشاركات
    1,600


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

    لهذا الغرض نستعمل دوال ip2long , long2ip
    وذلك لتحويل الايبي لقيمة رقمية قابلة للمقارنة بسهولة

    يعني عندك المجال التالي:

    41.32.0.0 - 41.47.255.255

    نشغل عليه الدالة ip2long
    http://php.net/manual/en/function.ip2long.php

    يصبح
    689963008 - 691011583
    طبعًا نخزن بداية المدى ونهايته كل واحد في حقل في قاعدة البيانات

    عندما نخزن كل ال ranges التي لدينا لمصر
    فإن اي ايبي مصري سوف يكون بين هذه الارقام اذا ما حولناه ل long

    بعد ان قمنا بتخزين المجالات بصورة صحيحة
    الان نعمل الاستعلام
    الفكرة اننا نفحص ايبيهات المشتركين
    ونعمل select للمشتركين الذين ايبيهاتهم من داخل المجالات التي في الجدول فقط(بالتالي من مصر فقط)

    هذا هو الاستعلام:
    كود PHP:
    SELECT name FROM users JOIN ip_ranges ON ip BETWEEN range_from AND range_to 
    وهو يشترح نفسه

    على كل حال الكود الذي كتبته بالمرفقات

    ويحوي:
    -ملف تكست لتخزين ال ranges لتحليلها وادخالها الى قاعدة البيانات بطريقة مرتبة
    عن طريق الدالة insert_ranges
    - ملف قاعدة البيانات جاهز
    -ملف الفحص وفيه الاكواد

    انتبه ان ايبي العضو يجب ان يتم حفظه كرقم bigint وليس varchar

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





    التعديل الأخير تم بواسطة ahmad sadiq ; 12-05-2011 الساعة 02:17 AM





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

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

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