У нас есть сайт электронной коммерции с большим количеством товаров.

У нас много дизайнеров , каждый из которых является владельцем нескольких продуктов.

Мы отображаем дизайнеров в раскрывающемся списке, после выбора дизайнеров мы можем выбрать заказы этих дизайнеров, после того как мы выберем заказы, мы сможем выбрать связанные продукты.

В основном мы выбираем все 3 выпадающих поля и отправляем форму и сохраняем значения в базе данных.

1 . Если заказ содержит продукты только одного дизайнера , после того, как мы выберем эти продукты и отправим форму, то опять же, если мы выберем тот же дизайнер, ранее выбранный заказ не будет отображаться . Хорошо. Пример: здесь вы можете увидеть, что мы выбрали "kidsdial2" в качестве дизайнера, заказываем "100000142" и отправляем форму.

enter image description here

Поэтому, когда мы выбираем "kidsdial2" в следующий раз , мы не можем увидеть заказ "100000142"

enter image description here

2 . Если заказ содержит продукты только нескольких дизайнеров , после того, как мы выберем эти продукты и отправим форму, мы снова выберем тот же дизайнер, ранее выбранный Заказ все еще отображается . Но мы и здесь хотим скрыть «Порядок». вот в чем проблема.

Пример: здесь заказ "100000141" содержит изделия нескольких дизайнеров. Итак, мы выбрали конструктор "kidsdial2" и заказ "100000141", выбрали продукты и отправили форму.

enter image description here

Когда мы выбираем "kidsdial2" в следующий раз , мы не хотим видеть заказ "100000142".

enter image description here

html

<form  action="update_paidstatus.php" id="" onsubmit="return validate(); ">
    <select onchange="getOrderDetail(event);" name="designer_id" id="designer_id">
        <option value="">Select Designer</option>
        <?php
        while($data = $stmt->fetch())
        {
        if($data['type']=="admin")continue;
        ?>
        <option value="<?php echo $data['userID'];?>">
            <?php
            echo $data['name'];
            ?>
        </option>
        <?php } ?>
    </select>

    <div id="ordernumbers">
        <select name="designerorder_id" id="designerorder_id" class="designerorder_id" onchange='getProductDetail(this.value)'>
            <option value="">Select Order</option>
        </select>
    </div>

    <div id="productnumbers" name="dproduct_id" id="dproduct_id">
        <select id="mySelect">
            <option>Select Products</option>
        </select>
    </div>
</form>

сценарий

function getOrderDetail(e)
  {
    var designerId=e.target.options[e.target.selectedIndex].value;    
    var url="http://sbdev2.kidsdial.com:81/php/site6/designerpaidstatus.php?designer_id="+designerId+"&opration=2";
       var request = jQuery.ajax( {
                url: url ,
                type: 'POST',                      
            } );

            request.done( function (result)
            {  
              //document.getElementById('ordernumbers').innerHTML =result;
              $(".designerorder_id").html(result);

            } );
            request.fail( function ( error )
            {
                console.dir(error);             
            } );
     }

php

require_once '../../app/Mage.php';
Mage::app();
$order = Mage::getModel('sales/order')->getCollection()->addAttributeToFilter('designer_id',array('like' => '%'.$id.'%'));

$htmltext='<select>';  
$htmltext.="<option value=''>Select Order</option>";

foreach ($order as $orderData) 
{

    $data=array();
    $sqlq1="select dproduct_id from order_details where designer_id='".$id."' and designerorder_id='".$orderData->getIncrementId()."'";

    $sqlq=mysqli_query($conVar,$sqlq1);

    while($rdata=mysqli_fetch_assoc($sqlq))

    {
        $data[]=$rdata['dproduct_id'];
    }

    $orderitems=$orderData->getData('dproduct_id');
    $oitem=explode(',',$orderitems);
    $finalValue=$orderData->getIncrementId()."-".$orderitemsarray[$k];
    $result=array_diff($oitem,$data);
    $result1=implode(',',$result);

    if(count($result)>1)

    {  
         $result2=array(); 
         foreach($result as $product) 
           { 
             $_product = Mage::getModel('catalog/product')->load($product); 
             $_productDesignerId = $_product->getDesignerId(); 

                if(trim($_productDesignerId) == trim($id)) 
                     { 
                         $result2[] = trim($product); 
                     } 
           } 

         $result2=implode(',',$result2);

        $htmltext=$htmltext.'<option class="'.$result2.'" name="'.$result2.'" value="'.$orderData->getIncrementId().'">'. $orderData->getIncrementId().'</option>';
    } 

}

    $htmltext=$htmltext."</select>";
    echo $htmltext;exit;   

Образец базы данных:

enter image description here

Изменить - update_paidstatus.php

$newURL="http://sbdev2.kidsdial.com:81/php/site6/paidstatus.php";

if(isset($_POST) && $_POST!="" && !empty($_POST)){ // checking if form submision is occured or not.

    $sucessFlag=true;
    $productIds=explode(",",$_POST['dproduct_id']);

    $oDate = new DateTime($_POST['dueDate']);
    $sDate = $oDate->format("Y-m-d");   
    if(isset($conVar) && !empty($conVar) && $conVar!="")
    {
       for ($i=0; $i< count($productIds); $i++) {   

         $sqlQueryToUpdate="INSERT INTO order_details ( designer_id,designerorder_id,dproduct_id,dpaid_status,delivery_status,due_date) VALUES('".$_POST['designer_id']."','".$_POST['designerorder_id']."','".$productIds[$i]."','".$_POST['PaidStatus']."','".$_POST['PaidStatus']."','".$sDate."')";

            $sucessFlag=mysqli_query($conVar,$sqlQueryToUpdate);
                if($sucessFlag==TRUE)
                    {
                       echo "UPDATE SUCESSFULLY";
                    }
                    else
                    {
                    echo " not done.";
                    }           
         }
        header('Location: '.$newURL);  
    }
}
 ?>
0
user6619012 6 Янв 2017 в 12:10
1
У вас есть вопрос?
 – 
Nina Scholz
6 Янв 2017 в 12:11
Да, мне нужно hide order in dropdown if that order's products are already selected and submitted in form before ....
 – 
user6619012
6 Янв 2017 в 12:12
И он работает, только если в заказе есть single designer'products, но он не работает, если в заказе есть multiple designer's products .....
 – 
user6619012
6 Янв 2017 в 12:16
1
Почему бы вам не перейти на раскрывающийся список ajax?
 – 
Pranav MS
6 Янв 2017 в 12:27
Это намного лучше, я понятия не имею о ajax, поэтому я проигнорировал его, не могли бы вы каким-то образом помочь найти решение ...
 – 
user6619012
6 Янв 2017 в 12:30

1 ответ

Лучший ответ

Представьте, что есть два конструктора D1 и D2. Продукты P11 и P12 принадлежат D1, а продукты P21 и P22 принадлежат D2. Теперь есть заказ O1, в котором есть продукты P11 и P22. Проверьте встроенные комментарии.

    // fetches all order for the particular designer. Try to use = condition rather than like if possible.
// So as per our eg; If Desginer = D1 then  it will return O1
        $order = Mage::getModel('sales/order')->getCollection()->addAttributeToFilter('designer_id',array('like' => '%'.$id.'%')); 

        $htmltext='<select>';  
        $htmltext.="<option value=''>Select Order</option>";

        foreach ($order as $orderData) 
        {

            $data=array();
// Will fetch the product id based on the designer id and desginer order id
// So in our eg: It will return only P1 since P2 is linked to D2
            $sqlq1="select dproduct_id from order_details where designer_id='".$id."' and designerorder_id='".$orderData->getIncrementId()."'";

            $sqlq=mysqli_query($conVar,$sqlq1);

            while($rdata=mysqli_fetch_assoc($sqlq))

            {
                $data[]=$rdata['dproduct_id']; //P1
            }

            $orderitems=$orderData->getData('dproduct_id');
            $oitem=explode(',',$orderitems); // [P1,P2]
            $finalValue=$orderData->getIncrementId()."-".$orderitemsarray[$k];
            $result=array_diff($oitem,$data); //P2
            $result1=implode(',',$result);

            if(count($result)>1)

            {  
                 $result2=array(); 
                 foreach($result as $product) 
                   { 
                     $_product = Mage::getModel('catalog/product')->load($product); 
                     $_productDesignerId = $_product->getDesignerId(); 

                        if(trim($_productDesignerId) == trim($id)) 
                             { 
                                 $result2[] = trim($product); 
                             } 
                   } 

                 $result2=implode(',',$result2);

                $htmltext=$htmltext.'<option class="'.$result2.'" name="'.$result2.'" value="'.$orderData->getIncrementId().'">'. $orderData->getIncrementId().'</option>'; //order data gets appended
            } 

        }

            $htmltext=$htmltext."</select>";
            echo $htmltext;exit;  //order id with P2
0
gvmani 7 Янв 2017 в 02:05
Какие изменения вы внесли? Я не вносил никаких изменений в ваш код, просто объяснял причину.
 – 
gvmani
6 Янв 2017 в 21:50
С этого момента, когда кто-то скажет engineer, я запомню два имени: одно - visweswarayya, а другое - вы ...
 – 
user6619012
7 Янв 2017 в 02:01