Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP上的Javascript函数返回结果,重复ID问题_Javascript_Php_Function - Fatal编程技术网

PHP上的Javascript函数返回结果,重复ID问题

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

我想知道是否有人可以帮助我或引导我在正确的方向与这一个…基本上,我有一个Javascript函数,它计算从mysql数据库的门票价格和从下拉菜单的数量之间的总数。Javascript和PHP工作得很好…但只是第一个结果,功能不是动态的,需要帮助解决这个问题

在我的PHP中,从SQL语句返回一个表:

$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\">&pound;$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 + ' = '  + ' ' +  '&pound;' + 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\">&pound;$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 + ' = '  + ' ' +  '&pound;' + 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\">&pound;$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>