私のカート内で私の製品のドロップダウンが2つあります。 すべての製品は、foreachループ内のセッションに格納されます。 しかし、私のドロップダウンはループからの最初の製品でのみ機能します。 例:カートに2つの製品がある場合、製品の行は両方のdorpdownsに基づいてコストを得ます。 ですが、2番目の製品は最初のドロップダウンから同じコストを得ています。 誰かがこの問題を解決する方法を教えてください。ループ内のドロップダウンは、foreachループの最初の項目値のみを取得します。php/ajax
cart.phpでcheckout.phpで私のスクリプト
$(document).ready(function() {
$('.fabric, .size').on('change', sendData);
function sendData() {
var fabricID = $('.fabric').val();
var sizeID = $('.size').val();
var cost = $(this).attr('data-id');
if (fabricID !== "" && sizeID !== "") {
$.ajax({
type : 'GET',
url : 'calculates.php',
dataType : 'json',
data : {
prod_id:cost,
fabric_id: fabricID,
size_id: sizeID
}
}).done(function(data) {
$('.icms' + cost).text(data.val);
});
}
}
});
私のPHPのforeachループが
function cart(){
global $conn;
$fabric_options = '<option>Select Fabric</option>';
$query2 = "SELECT * FROM almofadas";
$result = mysqli_query($conn,$query2);
while($rows = mysqli_fetch_assoc($result)){
$tecido=$rows['tecido'];
$id_price=$rows['id_price'];
$t50='50';
$t45='45';
$fabric_options .= '<option value="'.$id_price.'">'.$tecido.'</option>';
}
if(!isset($_SESSION['icms'])) {
$_SESSION['icms']='0';
}else{
$_SESSION['icms'];
}
foreach ($_SESSION as $name => $value) {
if($value > 0){
if(substr($name, 0, 8) == "product_"){
$length = strlen($name) -8;
$item_id = substr($name,8 , $length);
$query = "SELECT *
FROM gallery2
WHERE gallery2.id =".escape_string($item_id). "";
$run_item = mysqli_query($conn,$query);
while($rows = mysqli_fetch_assoc($run_item)){
$vari = $rows['variante'];
$num = $rows['title'];
$id = $rows['id'];
$btn_add ='<button type="button" class="btn btn-success actions plus" data-action="plus" product_id="'.$id.'"><i class="fa fa-plus fa-lg" aria-hidden="true" add_btn></i></button>';
$btn_remove ='<button type="button" class="btn btn-warning actions less" data-action="remove" product_id="'.$id.'"><i class="fa fa-minus fa-lg" aria-hidden="true" remove_btn></i></button>';
$btn_delete ='<button type="button" class="btn btn-default actions" data-action="delete" product_id="'.$id.'" onclick="deleteRow(this)"><i class="fa fa-times fa-lg" aria-hidden="true"></i></button>';
if($rows['variante'] < 1){
$vari="";
}else{
$vari = "-".$rows['variante'];
}
$product = '
<tr>
<td style="width:100px; "><img src="../'.$rows['image'].'" style="width:90%;border: 1px solid black;"></td>
<td>'.$num.''.$vari.'</td>
<td style="width:15%;">
<select name="fabric" class="fabric select form-control selectpicker" required="" data-id="'.$id.'">
'. $fabric_options . '
</select>
</td>
<td>
<select data-id="'.$id.'" class="select size form-control selectpicker" required style="width:80%;" >
<option>Select size</option>
<option value="'.$t50.'">50x'.$t50.'</option>
<option value="'.$t45.'">45x'.$t45.'</option>
</select>
</td>
<td class="product'.$id.'">'.$value.'</td>
<td class="icms">R$: '.$_SESSION['icms'].'</td>
<td class="total'.$id.'" data-id="'.$id.'">R$: '.$value * $_SESSION['icms'] .' </td>
<td>
'.$btn_add.' '.$btn_remove.' '.$btn_delete.'
</td>
</tr>';
echo $product;
}
}
}
}
}
と私の計算が行われる場所です。..
calculates.php
<?php header('Content-Type: application/json');
include_once '../incluedes/conn_cms.php'; //session allways start here
if(isset($_GET["size_id"],$_GET["fabric_id"],$_GET['prod_id'])){
$size_id=$_GET["size_id"] ;
$fabric_id=$_GET["fabric_id"] ;
$prod = $_GET['prod_id'];
$prodname = 'product_'.$prod;
$query3 =" SELECT * FROM valores_almofadas WHERE size='$size_id' AND price_id ='$fabric_id'";
$result = mysqli_query($conn,$query3);
while($rows = mysqli_fetch_assoc($result)){
if($_SESSION['estado'] == 'SP'){
$ICMS = $rows['icms_7'];
}else{
$ICMS = $rows['icms_12'];
}
$_SESSION['icms']=$ICMS;
}
echo json_encode($_SESSION['icms']);
}
私はどのように私のドロップダウン作業foreach製品を作ることができますか?
:引数リストの後に行方不明に)私はこれに変更VARSで何か –
はfabricID = $( 'ファブリック[データ-ID = '+ ID +を']' VAR)のval(。 );構文エラーが解消されました。一つ目は、製品の最初のコストが他のものに繰り返されていることです。 –
構文エラーを修正しました。他のすべてに表示されている製品のコストについては、$ _SESSION ["icms"]値が1つしかありません。どの製品が計算されていても、calculate.phpを呼び出すたびに上書きされます。確かに、製品IDごとに1つの値が必要ですか?私はそれが役に立たないと思う。 – ADyson