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

الموضوع: الحاجة أم الإختراع ( 10 ) : العرض الأبجدي للأسماء العربية بقاعدة البيانات !!

  1. #1
    عضو فعال جدا
    تاريخ التسجيل
    Dec 2000
    المشاركات
    2,697

    الحاجة أم الإختراع ( 10 ) : العرض الأبجدي للأسماء العربية بقاعدة البيانات !!



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

    كود PHP:
    <a href="browse.php?L=A">( )</a>
    <
    a href="browse.php?L=B">( )</a>
    <
    a href="browse.php?L=C">( )</a>
    <
    a href="browse.php?L=D">( )</a>
    ..... 
    و هكذا ..
    و في ملف browse.php يوضع كود شبيه بالتالي :

    كود PHP:
    $query=mysql_query("SELECT * FROM table WHERE feild LIKE '$L%' ORDER BY name");
    while(
    $result=mysql_fetch_array($query)){
    echo
    "<a href=\"browse.php?id=$result[id]\">$result[name]</a><br>";

    ومهمة الكود السابق الإستعلام عن الأسماء المبدوءة بالحرف المختار الموضوع كقيمة للمتغير L ثم عرضها بشكل مرتب حسب الحروف الأبجدية الإنجليزية A to Z ..

    و كمثال يمكن إستعمال هذا المثال ..

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

    كود PHP:
    #
    # Table structure for table 'feild'
    #

    CREATE TABLE `feild` (
      `
    idint(10unsigned NOT NULL auto_increment,
      `
    namevarchar(255NOT NULL default '',
      
    PRIMARY KEY  (`id`),
      
    KEY `id` (`id`)
    TYPE=MyISAM;

    #
    # Dumping data for table 'feild'
    #

    INSERT INTO feild VALUES (1,'Ahmed Adel');
    INSERT INTO feild VALUES (2,'Badr Salman');
    INSERT INTO feild VALUES (3,'Khaled Alghamdi');
    INSERT INTO feild VALUES (4,'Abdullah Sami');
    INSERT INTO feild VALUES (5,'Salem Ali'); 
    و ملف السكربت و ليكن إسمه مثلاً browse.php :

    كود PHP:
    <?php
    $dbserver
    ="localhost";
    $dbuser="";
    $dbpass="";
    $dbname="table";
    mysql_connect($dbserver,$dbuser,$dbpass);
    mysql_select_db($dbname);
    echo
    "<a href=\"browse.php?L=A\">A</a>
    <a href=\"browse.php?L=B\">B</a>
    <a href=\"browse.php?L=C\">C</a>
    <a href=\"browse.php?L=D\">D</a>
    .........
    <a href=\"browse.php?L=S\">S</a> /
    <a href=\"browse.php\">All</a><br><br>"
    ;
    if((!isset(
    $L))){
    $query=mysql_query("SELECT * FROM feild ORDER BY name");
    while(
    $result=mysql_fetch_array($query)){
    echo
    "<a href=\"browse.php?id=$result[id]\">$result[name]</a><br>";
    }
    }
    if(isset(
    $L)){
    $query=mysql_query("SELECT * FROM feild WHERE name LIKE '$L%' ORDER BY name");
    while(
    $result=mysql_fetch_array($query)){
    echo
    "<a href=\"browse.php?id=$result[id]\">$result[name]</a><br>";
    }
    }
    ?>
    لكن هناك مشكلة ستكون في حالة الأسماء عربية .. و قد واجهتني و سألت فيها عدد من الإخوة و لكن لم يعطني أحدهم حلاً عملياً سريعاً .. إلى أن وفقني الله لهذا الحل الذي إستنتجه من إفادة أفادني بها سابقاً الأستاذ عبد الرحمن ..
    المشكلة كانت أن السكربت لا يفرق بين ( ب ) و ( ت ) و ( ث ) .. لأنها بنفس الرسم .. لذا الإسم المبدوء بحرف الباء سيظهر في كلا الأحرف و كذلك الإسم المبدوء بحرف الجيم مثلاً سيظهر بحرف الحاء ..
    فكان الحل الإستعلام لكن مع شرط BINARY ..
    و بالمثال يتضح المقال :

    كود PHP:
    <?php
    $dbserver
    ="localhost";
    $dbuser="";
    $dbpass="";
    $dbname="table";
    mysql_connect($dbserver,$dbuser,$dbpass);
    mysql_select_db($dbname);
    echo
    "<a href=\"browse.php?L=أ\">أ</a>
    <a href=\"browse.php?L=ب\">ب</a>
    <a href=\"browse.php?L=ت\">ت</a>
    <a href=\"browse.php?L=ث\">ث</a>
    .........
    <a href=\"browse.php?L=و\">و</a> /
    <a href=\"browse.php\">الكل</a><br><br>"
    ;
    if((!isset(
    $L))){
    $query=mysql_query("SELECT * FROM feild ORDER BY BINARY name");
    while(
    $result=mysql_fetch_array($query)){
    echo
    "<a href=\"browse.php?id=$result[id]\">$result[name]</a><br>";
    }
    }
    if(isset(
    $L)){
    $query=mysql_query("SELECT * FROM feild WHERE BINARY name LIKE '$L%' ORDER BY BINARY name");
    while(
    $result=mysql_fetch_array($query)){
    echo
    "<a href=\"browse.php?id=$result[id]\">$result[name]</a><br>";
    }
    }
    ?>
    على إفتراض أنك أنشأت مثل القاعدة السابقة لكن وضعت قيم عربية ..
    التغيير كان بالروابط و كذلك بالسطر :

    كود PHP:
    $query=mysql_query("SELECT * FROM feild ORDER BY BINARY name"); 
    حيث طلب من أمر الإستعلام عرض الأسماء بترتيب رقمي و هو الملائم للأسماء باللغة العربية .. حيث يرتبها من أ إلى ي ..

    و كذلك كان بالسطر :

    كود PHP:
    $query=mysql_query("SELECT * FROM feild WHERE BINARY name LIKE '$L%' ORDER BY BINARY name"); 
    وقد وضعنا BINARY مرتين ..
    المرة الأولى ليتم إختيار الإسم المبدوء بالحرف المختار بشكل رقمي ليناسب اللغة العربية و لو لم نضعها فسيكون حين تطلب الأسماء التي تبدأ بحرف الباء و لنقل مثلا ( بدر سالم ) فإن هذا الإسم سيظهر في الأسماء بحرف الباء + الأسماء بحرف السين !! ..
    و بالنسبة للمرة الثانية التي وضعنا فيها BINARY لترتيب الأسماء أبجدياً ..

    شكراً للأستاذ عبدالرحمن و آسف لو كانت الفكرة طرحت سابقاً لكن مو مهم التكرار يعلم الشطار ..





    رضا غير متواجد حالياً


  2. #2
    عضو نشيط
    تاريخ التسجيل
    Nov 2002
    المشاركات
    193


    جزاك الله خيرا على هذا الدرس أخى رضا وزادك الله





    __________________
    «·´`·.(*·.¸(`·.¸ ¸.·´)¸.·*).·´`··»
    «·´¨*·.¸¸ * P H P Z * ¸.·*¨`·»
    «·´`·.(¸.·´(¸.·* *·.¸)`·.¸).·´`·»
    phpz غير متواجد حالياً

  3. #3
    عضو فعال جدا
    تاريخ التسجيل
    Feb 2002
    المشاركات
    2,289


    جزاك الله خيرا انزلت الدرس لاقراءه بتمهل

    وفقك الله لما يحبه ويرضاه





    المهمة9 غير متواجد حالياً

  4. #4
    عضو فعال جدا
    تاريخ التسجيل
    Dec 2000
    المشاركات
    2,697


    و إياكم ..





    رضا غير متواجد حالياً





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

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

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