اذهب إلى المحتوى
  • 0

[php] تكرار الكود بقيم منفصلة و مختلفة

محمد المصري12

السؤال

سلام عليكم

   $new_order = $_POST['new_order'];
    $old_order = $_POST['old_order'];
    $done = 1;
    $admin = $_POST['admin'];


#1 - Import Threads
    $get_old_thread_data = $conn->query('SELECT * FROM order_threads WHERE order_id = ' . $old_order);

    if (mysqli_num_rows($get_old_thread_data) > 0) {

        $ot/*old thread*/ = [];
        foreach ($get_old_thread_data as $a) {
            $ot[] = $a;

        }
#4 - copy new Order_thread data
        foreach ($ot as $ot => $values) {

            $new_ot = $conn->prepare('INSERT INTO order_threads (order_id, thread_id, color_select, colorNumber_input, countPiece, total, hadr, egmaly, mPrice, BakaraCost, factory, user)
VALUES (?,?,?,?,?,?,?,?,?,?,?,?)');

            $new_ot->bind_param("ssssssssssss", $new_order, $values['thread_id'], $values['color_select'], $values['colorNumber_input'], $values['countPiece'], $values['total'], $values['hadr'], $values['egmaly'], $values['mPrice'], $values['BakaraCost'], $values['factory'], $admin);
            //print_r($a);
            $run = $new_ot->execute();

        }
        if ($run === false) {
            echo $new_ot->error;
            die();
        }
    }


/*------------- GET Order Buttons -----------------*/

#1 - Import Button
    $get_old_button_data = $conn->query('SELECT * FROM order_buttons WHERE order_id = ' . $old_order);

    if (mysqli_num_rows($get_old_button_data) > 0) {

        $ob/*old thread*/ = [];
        foreach ($get_old_button_data as $a) {
            $ob[] = $a;

        }
#4 - copy new Order_thread data
        foreach ($ob as $ob => $values) {

    $new_ob = $conn->prepare('INSERT INTO order_buttons (order_id, button_id, color_select, colorNumber_input, countPiece, total, hadr, egmaly, kgPrice, mcp, ButtonPrice, factory, user)
VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)');

            $new_ob->bind_param("sssssssssssss", $new_order, $values['button_id'], $values['color_select'], $values['colorNumber_input'], $values['countPiece'], $values['total'], $values['hadr'], $values['egmaly'], $values['kgPrice'], $values['mcp'],$values['ButtonPrice'], $values['factory'], $admin);
            //print_r($a);
            $run = $new_ob->execute();

        }
        if ($run === false) {
            echo $new_ob->error;
            die();
        }
    }

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~ GET ZIPPERS  ~~~~~~~~~~~~~~~~
###############################################

$get_old_z_data = $conn->query('SELECT * FROM order_zippers WHERE order_id = ' . $old_order);

    if (mysqli_num_rows($get_old_z_data) > 0) {

        $oz/*old thread*/ = [];
        foreach ($get_old_z_data as $a) {
            $oz[] = $a;

        }
#4 - copy new Order_thread data
foreach ($oz as $oz => $values) {

$new_oz = $conn->prepare('INSERT INTO 
    
order_zippers (order_id, zipper_id, color_select, size_select, colorNumber_input, countPiece, total, hadr, egmaly, kgPrice, mcp, MPrice, factory, user)

VALUES 
    
(?,?,?,?,?,?,?,?,?,?,?,?,?,?)');

            $new_oz->bind_param("ssssssssssssss", $new_order, $values['zipper_id'],$values['color_select'], $values['size_select'], $values['colorNumber_input'], $values['countPiece'], $values['total'], $values['hadr'], $values['egmaly'], $values['kgPrice'], $values['mcp'],$values['MPrice'], $values['factory'], $admin);
            //print_r($a);
            $run = $new_oz->execute();

        }
        if ($run === false) {
            echo $new_oz->error;
            die();
        }
    }

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~ GET Capsons  ~~~~~~~~~~~~~~~~
###############################################
    $get_old_c_data = $conn->query('SELECT * FROM order_capsons WHERE order_id = ' . $old_order);

    if (mysqli_num_rows($get_old_c_data) > 0) {

        $oc = [];
        foreach ($get_old_c_data as $a) {
            $oc[] = $a;

        }
#4 - copy new Order_thread data
        foreach ($oc as $oc => $values) {

            $new_oc = $conn->prepare('INSERT INTO 
    
order_capsons (order_id, capson_id, color_select, colorNumber_input, countPiece, total, hadr, egmaly, kgPrice, mcp, MPrice, factory, user)

VALUES 
    
(?,?,?,?,?,?,?,?,?,?,?,?,?)');

$new_oc->bind_param("sssssssssssss", $new_order, $values['capson_id'],$values['color_select'], $values['colorNumber_input'], $values['countPiece'], $values['total'], $values['hadr'], $values['egmaly'], $values['kgPrice'], $values['mcp'],$values['MPrice'], $values['factory'], $admin);
            //print_r($a);
$run = $new_oc->execute();

}
if ($run === false) {
    echo $new_oc->error;
    die();
        }

    }


//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~ GET Rubbers  ~~~~~~~~~~~~~~~~
###############################################
    $get_old_r_data = $conn->query('SELECT * FROM order_rubbers WHERE order_id = ' . $old_order);

    if (mysqli_num_rows($get_old_r_data) > 0) {

        $or = [];
        foreach ($get_old_r_data as $a) {
            $or[] = $a;

        }
#4 - copy new Order_thread data
        foreach ($or as $or => $values) {

            $new_or = $conn->prepare('INSERT INTO 
    
order_rubbers (order_id, rubber_id, color_select, colorNumber_input, countPiece, total, hadr, egmaly, kgPrice, mcp, MPrice, factory, user)

VALUES 
    
(?,?,?,?,?,?,?,?,?,?,?,?,?)');

            $new_or->bind_param("sssssssssssss", $new_order, $values['rubber_id'],$values['color_select'], $values['colorNumber_input'], $values['countPiece'], $values['total'], $values['hadr'], $values['egmaly'], $values['kgPrice'], $values['mcp'],$values['MPrice'], $values['factory'], $admin);
            //print_r($a);
            $run = $new_or->execute();

        }
        if ($run === false) {
            echo $new_or->error;
            die();
        }
        else {
            echo 'done';
        }
    }

 

لو لاحظتم حضراتكم انا بكرر بيانات من مجموعة جداول و انسخها لاستخدامات اخرى

المهم بنية الجداول متشابهة بنسبة 90 % تقريبا

الكود متكرر لكل جدول بتفاصيله و التنفيذ line by line

هل الطريقة دي في التكويد سليمة ؟

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

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

ناس قالولي ممكن الكود بتعمل OOP بس انا لسه ما بدأتش فيه فخبرتي فيه محدودة

اقتراحات حضراتكم و تقييمكم  مع خالص الشكر ؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

وضع اكواد ذات مهام مختلفة ضمن نفس المجال شيء غير مقترح ابدا، حاول كشيء من التنظيم فقط فصل كل هاته المكونات واجعلها في ملف أو وظيفة منفصلة وهذا من اوجه تطبيق مبدأ يسمى بمبدأ فصل المهام Seperating of concerns. حاول ايضا الحفاظ على احتواء كل منها على مهمة واحدة يمكن التعبير عنها، وذلك كتطبيق لمبدأ المسؤولية الواحدة Single responsibility principle. 

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

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

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...