嘿伙计我需要问的是我怎么能用while循环循环javascript 正如我的代码是这个
$i=0;
while($row = mysqli_fetch_array($result)) {
echo '<div class="grid_1_of_4 images_1_of_4" >
<form method="post" action="......">
<a class = "popup-link" href = "'.$row['shade_enlarged_img'].'" alt = "" title = "'.$row['shade_desc'].'">
<img src="'.$row['shade_img'].'" alt="" title = "click to enlarge"/> </a>
<h2>'.$row['shade_desc'].'</h2>
<p style="font-size:0.95em"><b>Code: '.$row['shade_code'].'</b></p>
<p>Category: '.$row['categories'].'</p>';
$code=$row['shade_code'];
$result_quantity = mysqli_query($con,"SELECT ...........);
$num_of_rows=mysqli_num_rows($result_quantity);
$count=0;?>
<script>
function showUser(str) {
if (str=="") {
document.getElementById("txtHint<?php echo $i; ?>").innerHTML="";
return;
}
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
var url = "getprice.php?brand=<?php echo $row['brand_name']; ?>&category=<?php echo $row['categories'];?>&q="+str;
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("txtHint<?php echo $i; ?>").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
</script> <?php
echo '<p style="font-size:0.71em">Available Packaging: <select name="product_qty" onchange="showUser(this.value)" style="margin-left:4px; font-size:1.02em;">
<option value=""></option>';
while($row_quantity = mysqli_fetch_array($result_quantity)) {
echo '<option value="'.$row_quantity['quantity'].'">'.$row_quantity['quantity'].' '.$row_quantity['quantity_unit'].'</option>';
}
echo '</select></p>';
echo '<div id="txtHint'.$i.'"><b>Person info will be listed here.</b></div>';
echo '</p>';
echo '<p style="font-size:0.71em">Quantity: <input type="number" style="display:inline; width:50px;" name="number_of_units" min="1"></p>';
echo '<button class="button"><span class="cart-button"><img src="images/cart.jpg" alt="" />Add to Cart</span> </button>
<input type="hidden" name="product_code" value="'.$row['shade_code'].'" />
</form>
</div>'; $i++;
代码工作正常但是因为我通过mysqldatabase的while循环调用所有项目所以当我运行此代码时,这仅适用于第1项并且休息不起作用.. 观看此图片以获得快速视角http://imgur.com/2qM0FzX
答案 0 :(得分:1)
我认为你会遇到#products
的问题,因为你不能一遍又一遍地使用id="products"
,否则jQuery不知道要切换哪个。实际上,与#priceInput
相同。尝试添加自动递增$i
,如下所示。
<?php
$i = 0;
while($row = mysqli_fetch_array($result)) { ?>
<div class="grid_1_of_4 images_1_of_4" >
<form method="post" action="page.php">
<a class = "popup-link" href = "<?php echo $row['shade_enlarged_img']; ?>" alt = "" title = "<?php echo $row['shade_desc']; ?>">
<img src="<?php echo $row['shade_img']; ?>" alt="" title = "click to enlarge"/> </a>
<h2><?php echo $row['shade_desc']; ?></h2>
<p style="font-size:0.95em"><b>Code: <?php echo $row['shade_code']; ?></b></p>
<p>Category: <?php echo $row['categories']; ?></p>
<script>
$(function () {
$('#products<?php echo $i; ?>').change(function () {
$('#priceInput<?php echo $i; ?>').val($('#products<?php echo $i; ?> option:selected').attr('data-price'));
});
});
</script>
<p style="font-size:0.71em">Available Packaging: <select id="products<?php echo $i; ?>" name="product_qty" style="margin-left:4px; font-size:1.02em;" onChange="ShowInfo('<?php echo $i; ?>','<?php echo $row['brand_name']; ?>','<?php echo $row['categories']; ?>')">
<?php
$code = $row['shade_code'];
$result_quantity = mysqli_query($con,"SELECT ............");
$num_of_rows = mysqli_num_rows($result_quantity);
$count = 0;
while($row_quantity = mysqli_fetch_array($result_quantity)) { ?>
<option value="<?php echo $row_quantity['quantity']; ?>" data-price="<?php echo $row_quantity['price']; ?>"><?php echo $row_quantity['quantity'].' '.$row_quantity['quantity_unit']; ?></option><?php
} ?>
</select></p>
<div id="txtHint<?php echo $i; ?>"><b>Person info will be listed here.</b></div>
Price :<input type="text" name="price" value="" id="priceInput<?php echo $i; ?>" disabled="disabled"/>
<p style="font-size:0.71em">Quantity: <input type="number" style="display:inline; width:50px;" name="number_of_units" min="1"></p>
<button class="button"><span class="cart-button"><img src="images/cart.jpg" alt="" />Add to Cart</span> </button>
</form>
</div><?php
$i++;
} ?>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js"></script>
<script>
function ShowInfo(IdNum,RowBrand,RowCat) {
// Get the value of the selected dropdown
var SelVal = $('#products'+IdNum).val();
$.ajax({
type : 'GET',
url:"getprice.php?brand="+RowBrand+"&category="+RowCat+"&q="+SelVal;
success: function(result){
$('#txtHint'+IdNum).html(result);
}
});
}
</script>
答案 1 :(得分:0)
尝试.=
,它将继续添加mysqli_fetch_array查询的最新结果。
然后只需将您分配给$ just_a_variable的总计值回显到页面或返回到ajax等。
<?php
$just_a_variable = '';
$just_a_variable .= '<p style="font-size:0.71em">Available Packaging: <select id="products" name="product_qty" style="margin-left:4px; font-size:1.02em;">';
while($row_quantity = mysqli_fetch_array($result_quantity)) {
$just_a_variable .= '<option value="'.$row_quantity['quantity'].'" data-price="'.$row_quantity['price'].'">'.$row_quantity['quantity'].' '.$row_quantity['quantity_unit'].'</option>';
}
$just_a_variable .= '</select></p>';
$just_a_variable .= ' Price :<input type="text" name="price" value="'.$row_quantity['price'].'" id="priceInput" disabled="disabled"/>';
echo $just_a_variable;
?>
答案 2 :(得分:0)
这是因为mysql_fetch_array函数一次返回一行。如果你想要所有的行,你应该迭代结果
$row = mysqli_fetch_array($result_quantity);
$total = mysql_num_rows($variable_resultfrom_sql_query);
while($row = mysql_fetch_array($variable_resultfrom_sql_query))