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

الموضوع: سؤال : التاكد من عناصر المصفوفة اذا كانت موجودة قبل ..؟

  1. #1

    سؤال : التاكد من عناصر المصفوفة اذا كانت موجودة قبل ..؟



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

    كيف حالكم شباب

    اخواني لو فرضنا ان لدي مصفوفة كالتالي

    كود PHP:
    $name=array("عبدالله","خالد","احمد"); 
    وعندي بقاعدة البيانات جدول فيه الحقول التالية :
    id
    name
    test

    وابية يتاكد من قاعد البيانات اذا كان الاسم موجود يطبع موجود ويزود الحقل test برقم 1

    واذا كان مو موجود يطبع غير موجود ويقوم باضافتة للقاعدة ويزود الحقل test برقم 1

    يعني :

    لو فرضنا ان اسم عبدالله واحمد موجودين في القاعدة وخالد مو موجود
    عبدالله .. موجود +1
    خالد .. غير موجود .. يتم اضافتة تلقائياً ويتم اضافة رقم 1 الى الحقل test
    احمد .. موجود +1

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

    اتمنى المساعدة وشكرا لكم





    __________________
    سبحان الله وبحمدة ، سبحان الله العظيم


  2. #2
    عضو نشيط جدا
    تاريخ التسجيل
    Mar 2003
    المشاركات
    305


    جرب وان شاء الله يضبط معاك

    كود PHP:
    // المتغير اللي فيه الاسم
    $n 'احمد';

    // المصفوفة
    $name=array("عبدالله","خالد","احمد");

    // التحقق
    if (in_array($n$name))
    {
        echo 
    $n .' موجود';
        
    mysql_query("UPDATE table SET test = test + 1 WHERE name = '$n'");
    }
    else
    {
        echo 
    $n .' غير موجود';
        
    mysql_query("INSERT INTO table (name, test) VALUES ('$n', 1)");







    __________________
    # مشاريع :
    - الفوائد .. خلاصة العلم والمعرفة
    - غواصة .. اجمع اصدقاءك وابحر بالغواصة

    # مدونتي nawaf.me

  3. #3


    يعطيك العافية اخي العملاق بس شكلي ما وضحت الكود الي ابيه شوف اخوي

    انا عندي مصفوفة فيها اكثر من اسم الي هي $name
    ابيه ياخذ العنصر الاول من المصفوفة احمد ويروح للجدول الي بقاعدة البيانات ولنفرض اسمها names
    ويتاكد اذا كان موجود يطبع موجود واذا كان مو موجود يضيفة للقاعدة

    وبعدين ياخذ العنصر الثاني خالد ويتاكد بنفس الطريقة والثالث الخ

    يعني عندي اكثر من اسم ابيه يتاكد منهم الي موجود يكتب موجود ويزود الحقل test +1
    والي مو موجود يضيفة ويزود الحقل test +1 يعني عمليتين مرة واحدة يضيفة ويزود 1 ..؟

    ان شاء الله اكون وضحت لك


    وشكرا لك





    __________________
    سبحان الله وبحمدة ، سبحان الله العظيم

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


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

    أخي العزيز

    تحتاج لاستعراض عناصر المصفوفة عنصر عنصر
    وإذا وجد العنصر يتم اضافة 1 الى قيمة الحقل test،، ويطبع "موجود" الى الشاشة
    أما إذا لم يجده فيضيف صف جديد فيه الاسم ويضيف أيضاً 1 الى قيمة الحقل test،، ويطبع "غير موجود" الى الشاشة

    الأمر بسيط ان شاء الله

    تأمل الكود التالي، جربه وان شاء الله يؤدي المطلوب بكل دقة:

    كود PHP:
    while($nm current($name))
    {
    @
    extract(@mysql_fetch_array(@mysql_query("SELECT COUNT(name) AS c FROM names WHERE BINARY name='$nm'")));
    if(
    $c 0)
    {
    @
    mysql_query("UPDATE names SET test=test+1 WHERE BINARY name='$nm'");
    echo 
    "موجود";
    }
    else
    {
    @
    mysql_query("INSERT INTO names VALUES ('', '$nm', 1)");
    echo 
    "موجود";
    }
    next($name);

    الكود هذا كتبته لى افتراض ان الجدول اسمه names
    ويتكون فقط من الحقول التالية:
    id رقم الصف وهو حقل من النوع INT وهو مميز ومتصاعد تلقائياً
    name الإسم وهو حقل من النوع varchar
    test وهو العدد المطلوب زيادته وهو حقل من النوع INT


    جرب الكود واخبرني بالنتيجة

    تحياتي لك






    __________________
    مدونتي

  5. #5


    شكرا لك اخوي محمود بالفعل هذا الي كنت احتاجة روح الله يوفقك دنيا وآخرة

    وما انسى اخي الفاضل العملاق على حبة للمساعدة الله يوفقكم

    اخي محمود ممكن تشرح لي بعض الدوال الي ماني فاهم وش عملها :


    كود PHP:
    current
    @
    extract
    COUNT
    AS 
    بعدين وش الحكمة من BINARY مع ان يمكن الاستغناء عنها

    اقلبها مرت علي بس ما اعرف كيف اوظفها واكون شاكر لك ومقدر اذا شرحت لي استخدامتها





    __________________
    سبحان الله وبحمدة ، سبحان الله العظيم

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

    اليس هذه اسهل



    كود PHP:
    <?
    foreach($name as $n){
        
    mysql_query("UPDATE `names` SET `test`=`test`+1 WHERE BINARY `name`='$n' ");
        if(!
    mysql_affected_rows()){
            
    mysql_query("INSERT INTO `names` VALUES('','$n','1') ");
        }
    }
    ?>






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

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


    اقتباس المشاركة الأصلية كتبت بواسطة ابو عابد
    اخي محمود ممكن تشرح لي بعض الدوال الي ماني فاهم وش عملها :
    كود PHP:
    current
    @
    extract
    COUNT
    AS 
    بعدين وش الحكمة من BINARY مع ان يمكن الاستغناء عنها
    السلام عليكم ورحمة الله وبركاته

    أخي الكريم بالنسبة لسؤالك، فاليك الآتي:
    ()current تستخدم لجلب قيمة العنصر الحالي في المصفوفة، وتستخدم هي و next في حلقات التكرار لاجراء عمليات على قيم عناصر المصفوفة، وهي ترتبط بـ
    ()next حيث تقوم بتحريك مؤشر قراءة المصفوفة الى العنصر التالي

    أما علامة @ فهي تستخدم لاخفاء الأخطاء - إن وجدت - الناتجة عن تنفيذ التعبير أو الدالة التي تتلوها مباشرةً،

    أما ()extract، فعند تمرير مصفوفة لها تقوم باخراج عناصر هذه المصفوفة في متغيرات بنفس أسماء العناصر

    COUNT وهي تستخدم داخل استعلامات mySQL لايجاد عدد السجلات في الحقل الممرر لها..

    AS c وقد استخدمتها هنا لاسناد عدد السجلات الناتج لمتغير، حتى أتمكن من الوصول اليه فيما بعد باسم هذا المتغير

    أما عن BINARY فيجب استخدامها عند البحث او مقارنة الحقول من النوع VARCHAR والتي تحتوي على حروف عربية،
    وبدون استخدامها تظهر نتائج غير دقيقة
    اما في حالة الحروف الانجليزية فلا داعي لاستخدامها أبداً....


    أرجو أن أكون قد وفقت في هذا الشرح البسيط

    ولو فيه خطأ ياريت حد يصححلي

    تحياتي لك






    __________________
    مدونتي

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


    اقتباس المشاركة الأصلية كتبت بواسطة daif
    كود PHP:
    <?
    foreach($name as $n){
        
    mysql_query("UPDATE `names` SET `test`=`test`+1 WHERE BINARY `name`='$n' ");
        if(!
    mysql_affected_rows()){
            
    mysql_query("INSERT INTO `names` VALUES('','$n','1') ");
        }
    }
    ?>
    بالفعل هذا الكود أسهل

    وهو طريقة مختصرة للوصول للمطلوب





    __________________
    مدونتي

  9. #9


    تمام صار معانا اخونا ضيف الله .. :nice:

    شكرا لك اخي محمود والشرح مختصر وواضح وومفهوم ..
    وكويس انك نبتهتني على BINARY لاني في فترة من الفترات كنت اجرب عمليات المقارنة وما كان يفرق بين حرفي س - ش

    طيب اخواني ابي اضيف للكود دالة الاستبدال str_replace او اي دالة اخرى تحذف الارقام 1 - 9 والشرطات - , _ الخ من عناصر المصفوفة ان وجدت .

    اعرف المحترفين لهم طرقهم المختصرة والسريعة تكفون الفزعة

    انا جربت :
    كود PHP:
    $nm1 str_replace(
                   array (
    "0","1","2","3","4","5","6","7","8","9"," - "),"",$name); 
    بس ما جاء معاي ..


    سؤال على الطاير :
    فيه برنامج يقوم بتنسيق الكود البرمجي؟ :con2: ..





    __________________
    سبحان الله وبحمدة ، سبحان الله العظيم

  10. #10


    خلاص شباب انتهيت ووصلت للي ابغاه بفضل الله ثم بجهدكم المبارك

    بالنسبة للسؤال السابق حق دالة الاستبدال str_replace نجحت فيها ايضاً بس مع كود اخينا محمود


    النتيجة النهائية للكود :

    كود PHP:


      
    while($nm current($name))
    {
      
    $nm=str_replace(
                   array (
    "0","1","2","3","4","5","6","7","8","9"," - "),"",$nm);
    @
    extract(@mysql_fetch_array(@mysql_query("SELECT COUNT(name) AS c FROM names WHERE BINARY name='$nm' ")));
    if(
    $c 0)
    {
    @
    mysql_query("UPDATE names SET test=test+1 WHERE BINARY name='$nm'");
    echo 
    "موجود";
    }
    else
    {
    @
    mysql_query("INSERT INTO names VALUES ('','$nm','1')");
    echo 
    "غير موجود"
    }
    next($name);


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

    على العموم خلاص وصلت للي ابغاه وشكراً جزيلاً لكم جميعاً
    العملاق
    محمود
    ضيف الله


    والى اللقاء في اسئلة واستفسارات اخرى ان شاء الله





    __________________
    سبحان الله وبحمدة ، سبحان الله العظيم





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

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

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