У нас есть сайт электронной коммерции с большим количеством товаров.
У нас много дизайнеров , каждый из которых является владельцем нескольких продуктов.
Мы отображаем дизайнеров в раскрывающемся списке, после выбора дизайнеров мы можем выбрать заказы этих дизайнеров, после того как мы выберем заказы, мы сможем выбрать связанные продукты.
В основном мы выбираем все 3 выпадающих поля и отправляем форму и сохраняем значения в базе данных.
1 . Если заказ содержит продукты только одного дизайнера , после того, как мы выберем эти продукты и отправим форму, то опять же, если мы выберем тот же дизайнер, ранее выбранный заказ не будет отображаться . Хорошо. Пример: здесь вы можете увидеть, что мы выбрали "kidsdial2" в качестве дизайнера, заказываем "100000142" и отправляем форму.
Поэтому, когда мы выбираем "kidsdial2" в следующий раз , мы не можем увидеть заказ "100000142"
2 . Если заказ содержит продукты только нескольких дизайнеров , после того, как мы выберем эти продукты и отправим форму, мы снова выберем тот же дизайнер, ранее выбранный Заказ все еще отображается . Но мы и здесь хотим скрыть «Порядок». вот в чем проблема.
Пример: здесь заказ "100000141" содержит изделия нескольких дизайнеров. Итак, мы выбрали конструктор "kidsdial2" и заказ "100000141", выбрали продукты и отправили форму.
Когда мы выбираем "kidsdial2" в следующий раз , мы не хотим видеть заказ "100000142".
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;
Образец базы данных:
Изменить - 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);
}
}
?>
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
engineer
, я запомню два имени: одно - visweswarayya
, а другое - вы ...
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Обратите внимание, что JavaScript — это НЕ Java. Включите все теги, относящиеся к вашему вопросу: например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [стройный] и т. д.
hide order in dropdown if that order's products are already selected and submitted in form before
....single designer'products
, но он не работает, если в заказе естьmultiple designer's products
.....