-1

現在、数量のある商品をいくつか掲載しているウェブサイトを作成中です。この数量は、サイズと色によって異なります。

そこで、まだ残っている数を確認してフィードバックするために、次の手順を考え出しました。

<div class="product_stock" id="stock_form<?php echo $i; ?>"><?php 
  $size = $product_sizes[0];
  $color = $product_colors[0];
  $sql = "SELECT * FROM products WHERE product_id = '$product_id' AND size = '$size' AND color = '$color'";
  $result = mysql_query($sql) or die(mysql_error());  
  echo $sql;

  if(mysql_num_rows($result) > 0) {
    $product_stock = mysql_fetch_array($result);
    if($product_stock['stock'] > 0) {
      echo "Nog ".$product_stock['stock']." verkrijgbaar";
    } else {
      echo "Combinatie is niet meer verkrijgbaar";
    } 
  }?>
</div>
<div class="product_text"> 
  <?php echo $product['text']; ?>       
</div>
<div class="product_num">
  art: #<?php echo $product['product_id']; ?>
</div>
<div class="product_bar_bot">
  <form name="form<?php echo $i; ?>" action="shopping_cart.php?">
    <input type="hidden" name="id" value="<?php echo $product['pid']; ?>"/>
      <select name="size" class="product_select" onChange="get_stock('form<?php echo $i; ?>');">
    <?php foreach($product_sizes as $p_size) { ?>
    <option>
      <?php echo $p_size; ?>
    </option>
  <?php } ?>
</select>
<select name="color" class="product_select" onChange="get_stock('form<?php echo $i; ?>');"> 
  <?php foreach($product_colors as $p_color) { ?>
    <option value="<?php echo $p_color; ?>">
      <?php echo $color_array[$p_color]; ?>
    </option>
  <?php } ?>
</select>
<input type="hidden" name="url" value="sale">
<input type="hidden" name="action" value="add">
<input type="text" name="amount" value="1" size="1" style="vertical-align: top; margin-top: 9px;"></input>
<img src="images/icons/cart_shop.png" align="top"/> 
<input type="submit" class="button" value="Voeg toe" style="vertical-align: top; margin-top: 7px;">

呼び出す必要のある関数:

function get_stock(formid) {
  var form = document.forms[formid];
  var size = form.size.value;
  var color = form.color.value;
  var pid = form.id.value;
  var stock = 'stock_'+formid;

  // code for IE7+, Firefox, Chrome, Opera, Safari
  if (window.XMLHttpRequest)  {
    xmlhttp=new XMLHttpRequest();
  } else {
    // code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState==4 && xmlhttp.status==200) {
      document.getElementById(stock).innerHTML=xmlhttp.responseText;
    }
  }
  xmlhttp.open("GET","get_stock.php?id="+pid+"&size="+size+"&color="+color,true);
  xmlhttp.send();
}

私が抱えている問題は、一部のフォームでは機能するが、一部のフォームではget_stock.phpページが呼び出されないことです。

さらに詳しい情報が必要な場合は、遠慮なくお問い合わせください。

4

1 に答える 1

0

@Bergiのコメントのおかげで、私はすでに修正した小さなエラーを作成しました。毎回$iに+1を追加してフォームを作成していましたが、間違った場所で$ iをリセットしたため、たとえば$ i=1の1つ以上になりました。

于 2012-06-05T15:37:17.580 に答える