PHP上的Javascript函数返回结果,重复ID问题
我想知道是否有人可以帮助我或引导我在正确的方向与这一个…基本上,我有一个Javascript函数,它计算从mysql数据库的门票价格和从下拉菜单的数量之间的总数。Javascript和PHP工作得很好…但只是第一个结果,功能不是动态的,需要帮助解决这个问题 在我的PHP中,从SQL语句返回一个表:PHP上的Javascript函数返回结果,重复ID问题,javascript,php,function,Javascript,Php,Function,我想知道是否有人可以帮助我或引导我在正确的方向与这一个…基本上,我有一个Javascript函数,它计算从mysql数据库的门票价格和从下拉菜单的数量之间的总数。Javascript和PHP工作得很好…但只是第一个结果,功能不是动态的,需要帮助解决这个问题 在我的PHP中,从SQL语句返回一个表: $postCodeSQL = "SELECT * FROM ticket WHERE locationID IN (SELECT locationID FROM location WHERE post
$postCodeSQL = "SELECT * FROM ticket WHERE locationID IN (SELECT locationID FROM location WHERE postCode LIKE '$pcSearch') ";
$postCoderesult = mysql_query($postCodeSQL) or die(mysql_error());
while ($pcRow = mysql_fetch_assoc($postCoderesult)) {
$ID = $pcRow['ticketID']; //row in ticket table on database
$venue = $pcRow['venue'];
$ticketPrice = $pcRow['tPrice'];
$date = $pcRow['date'];
$time= $pcRow['time'];
echo "<tr>\n";
echo "<td id=\"venuePlace\">$venue <input type='hidden' id='venuePlaceHidden' class='venuePlaceHidden' value='".$venue."'></td>\n";
echo "<td id=\"ticketprice\">£$ticketPrice <input type='hidden' id='ticketPriceHidden' class='ticketPriceHidden' value='".$ticketPrice."'></td>\n";
echo "<td >
<select name =\"showQuantity\" id=\"showQuantity\" class =\"showQuantity\" onChange=\"calculateCost()\" >
<option value=\"Select\">Select...</option>
<option value=\"1\">1</option>
<option value=\"2\">2</option>
<option value=\"3\">3</option>
<option value=\"4\">4</option>
<option value=\"5\">5</option>
</select>
</td>\n";
echo "<td id=\"date\">$date <input type='hidden' id='dateHidden' class='dateHidden' value='".$date."'></td>\n";
echo "<td id=\"time\">$time <input type='hidden' id='timeHidden' class='timeHidden' value='".$time."'></td>\n";
echo "<td> <input type= \"button\" class= \"buyMe\" value= \"Buy\" name=\"buyMe\" onclick=\"grandTotal()\" >
</td>\n";
echo "</tr>\n";
}
如前所述,此函数适用于表返回的顶部结果,但是在我的表中有多个返回的结果,JS不适用于这些值。我的问题与重复ID有关,因为返回的每个结果都有相同的ID
我给了每个结果一个类,但我不能使用“getElementByClass”方法。
请问是否有人知道如何编辑此代码,以便JS函数将用于返回的其他结果?我有一种感觉,我可能需要一个foreach循环来声明“对于返回的每个值,应用JS函数…”或者类似的东西
非常感谢您的帮助,我正在努力提高我的接受率 如果您有多组相同的ID用于不同的结果,那么最好将它们与数字一起使用:venuePlaceHidden_01,venuePlaceHidden_02
因此,您需要在创建表的代码和分析JS中的值的代码中添加圆圈和递增的$num变量。使用动态Id尝试此代码
<script>
function quantityChange(id) {
//Select the value of the drop down list
var quantity = $('.showQuantity_'+id+'option:selected').val();
//get the value of the number from the tPrice column in 'ticket' table
var ticket = parseInt(document.getElementById('ticketPriceHidden_'+id).value);
//get the venue value
var venue = document.getElementById('venuePlaceHidden_'+id).value;
var date = document.getElementById('dateHidden_'+id).value;
var time = document.getElementById('timeHidden_'+id).value;
//multiply them together
var total = quantity * ticket;
$('#summary_'+id).html('You have chosen '+ ' ' + quantity + ' ' + 'tickets @' + ' ' + venue + ' = ' + ' ' + '£' + total);
}
</script>
<?php
$postCodeSQL = "SELECT * FROM ticket WHERE locationID IN (SELECT locationID FROM location WHERE postCode LIKE '$pcSearch') ";
$postCoderesult = mysql_query($postCodeSQL) or die(mysql_error());
$i=0;
while ($pcRow = mysql_fetch_assoc($postCoderesult)) {
$ID = $pcRow['ticketID']; //row in ticket table on database
$venue = $pcRow['venue'];
$ticketPrice = $pcRow['tPrice'];
$date = $pcRow['date'];
$time= $pcRow['time'];
echo "<tr>\n";
echo "<td id=\"venuePlace\">$venue <input type='hidden' id='venuePlaceHidden_$i' class='venuePlaceHidden' value='".$venue."'></td>\n";
echo "<td id=\"ticketprice\">£$ticketPrice <input type='hidden' id='ticketPriceHidden_$i' class='ticketPriceHidden' value='".$ticketPrice."'></td>\n";
echo "<td >
<select name =\"showQuantity\" id=\"showQuantity_$i\" class =\"showQuantity\" onChange=\"quantityChange($i)\" >
<option value=\"Select\">Select...</option>
<option value=\"1\">1</option>
<option value=\"2\">2</option>
<option value=\"3\">3</option>
<option value=\"4\">4</option>
<option value=\"5\">5</option>
</select>
</td>\n";
echo "<td id=\"date\">$date <input type='hidden' id='dateHidden_$i' class='dateHidden' value='".$date."'></td>\n";
echo "<td id=\"time\">$time <input type='hidden' id='timeHidden_$i' class='timeHidden' value='".$time."'></td>\n";
echo "<td> <input type= \"button\" class= \"buyMe\" value= \"Buy\" name=\"buyMe\" onclick=\"grandTotal()\" >
</td>\n";
echo "</tr>\n";
$i++;
echo "<div id = 'summary_$i'></div>";
}
?>
解释
首先,它在继续之前出现。您的查询是否应该从ticket tkt、location loc WHERE tkt.locationID=loc.locationID和loc.postCode(如“$pcSearch””)更改为“SELECT tkt.*”?谢谢您的回复,但SQL运行良好,不是问题所在。问题在于在PHP中返回重复ID,无法实现动态行为。您正在为和元素设置重复ID。而不是将concat$ID设置为您创建的元素的ID。这是一个好主意,我将尝试一下……我将在代码中尝试concat$ID?i、 e.回声$地点。。。。这将是echo$VICE…*代码的其余部分*??感谢您的回复。上面的PHP适用于该表中返回的所有结果,因此表中的结果2的ID也将为“ticketPriceHidden”、“venuePlaceHidden”等。因此,当调用JS函数时,它仅适用于返回的第一个结果。我需要一种方法将$ID传递给每个返回的结果,这样每个返回的结果都有自己的值,如果这有意义的话?所以有一个问题,您需要解决,我在我的unswer中指出:您需要更改代码,这样,结果2将有索引为2的ID,等等,对于JS处理代码也是如此。这是多个结果页面的通用解决方案,实现简单,理解清晰,效果良好!嘿非常感谢您的帮助,我想我的思路是对的,但是我不断地遇到一个错误:document.getElementByIdticketPriceHidden\uu+id为null您有什么想法吗?Thanksdocument.getElementByIdticketPriceHidden\uID为空。来自:var ticket=parseIntdocument.getElementById'ticketPriceHidden_uz'+id.value;对不起,如果我第一次不清楚的话。啊,我想我明白你想告诉我什么。我的PHP中有一个问题,因为返回的每个结果都会向表中添加一个输入按钮。因此,如果我试图声明:onChange=quantityChange1…这将只适用于第一个结果,其他结果也将如此。我真的很抱歉,我很难解释这类事情!基本上,我在第一行中的输入按钮可以工作,但返回的第二个按钮没有显示正确的值。:/我现在开始迷惑自己了,哈哈。我也没有提到,也不知道这是否有帮助,但场馆和票价都存储在mysql数据库中。
<script>
function quantityChange(id) {
//Select the value of the drop down list
var quantity = $('.showQuantity_'+id+'option:selected').val();
//get the value of the number from the tPrice column in 'ticket' table
var ticket = parseInt(document.getElementById('ticketPriceHidden_'+id).value);
//get the venue value
var venue = document.getElementById('venuePlaceHidden_'+id).value;
var date = document.getElementById('dateHidden_'+id).value;
var time = document.getElementById('timeHidden_'+id).value;
//multiply them together
var total = quantity * ticket;
$('#summary_'+id).html('You have chosen '+ ' ' + quantity + ' ' + 'tickets @' + ' ' + venue + ' = ' + ' ' + '£' + total);
}
</script>
<?php
$postCodeSQL = "SELECT * FROM ticket WHERE locationID IN (SELECT locationID FROM location WHERE postCode LIKE '$pcSearch') ";
$postCoderesult = mysql_query($postCodeSQL) or die(mysql_error());
$i=0;
while ($pcRow = mysql_fetch_assoc($postCoderesult)) {
$ID = $pcRow['ticketID']; //row in ticket table on database
$venue = $pcRow['venue'];
$ticketPrice = $pcRow['tPrice'];
$date = $pcRow['date'];
$time= $pcRow['time'];
echo "<tr>\n";
echo "<td id=\"venuePlace\">$venue <input type='hidden' id='venuePlaceHidden_$i' class='venuePlaceHidden' value='".$venue."'></td>\n";
echo "<td id=\"ticketprice\">£$ticketPrice <input type='hidden' id='ticketPriceHidden_$i' class='ticketPriceHidden' value='".$ticketPrice."'></td>\n";
echo "<td >
<select name =\"showQuantity\" id=\"showQuantity_$i\" class =\"showQuantity\" onChange=\"quantityChange($i)\" >
<option value=\"Select\">Select...</option>
<option value=\"1\">1</option>
<option value=\"2\">2</option>
<option value=\"3\">3</option>
<option value=\"4\">4</option>
<option value=\"5\">5</option>
</select>
</td>\n";
echo "<td id=\"date\">$date <input type='hidden' id='dateHidden_$i' class='dateHidden' value='".$date."'></td>\n";
echo "<td id=\"time\">$time <input type='hidden' id='timeHidden_$i' class='timeHidden' value='".$time."'></td>\n";
echo "<td> <input type= \"button\" class= \"buyMe\" value= \"Buy\" name=\"buyMe\" onclick=\"grandTotal()\" >
</td>\n";
echo "</tr>\n";
$i++;
echo "<div id = 'summary_$i'></div>";
}
?>
<script>
function abc(id){
alert('#ticketPriceHidden_'+id);
var tph = document.getElementById('ticketPriceHidden_'+id).value;
if(tph == ''){
alert('this field is required......');
}
}
</script>
<a href="javascript:;" onclick="abc(1);">1</a>
<a href="javascript:;" onclick="abc(2);">2</a>