Php Ajax foreach循环故障

时间:2016-02-12 03:04:23

标签: php ajax

美好的一天。

我正在进行投票,投票将使用ajax显示。 举例来说,我有3个民意调查:民意调查1,民意调查2,民意调查3。 您必须单击轮询1的链接以显示轮询1的结果,其中由于ajax,页面将不会重新加载。 结果以百分比显示。

以下是摘录。

$poll_response = query($con, "SELECT *FROM `responses` WHERE `id` = '{$poll_id}'");
$count_response = rows($poll_response);

if($count_response > 0)
{
    $responses_array = array();

   for($j=1;$j<=$count_response;$j++)
    {
        $fetch = fetch($poll_response);
        $response = $fetch['response'];
        $responses_array[] = $response;
    }

    $responses_values = array_count_values($responses_array);
    $min_value = min($responses_values);


    foreach($responses_values as $value=>$count_value)
    {
    ?>
         <div id='votes'> </div>

       <script type="text/javascript">                                          
         var percent_num,width,min_val;
         var each_count = "<?php echo $count_value;?>";
         var total = "<?php echo $count_response;?>";
        var response = "<?php echo ucfirst($value);?>";
        var min_val = "<?php echo $min_value;?>";

       if(each_count > 0)
       {
            percent_num = ( (each_count *100)/total);
            percent_num = Math.round(percent_num);
            width = percent_num*2;
       }
      else
     {
        width = 1;
       percent_num = 0;
     }

if(total > 0)
{
    var votes = $("#votes");
    votes.html("<table width='50%'><tr><td width='25%'>"+response+"</td><td> &nbsp; &nbsp;<img src='../images/poll_green.jpg' width="+width+" height=20 border=10/> &nbsp;"+percent_num+"% </td><td><span class='badge'>"+each_count+"</span></td><br/></tr></table>");

}
else
{
    document.write("<div class='alert alert-danger'>No result yet</div>");
}

 </script>
  <?php
  }
  ?>

上面代码的问题是它只在数据库中显示一条记录。 举例来说,如果你点击Poll 1和Poll 1的链接就这样:

您最喜欢哪个电脑品牌? 一个)。生命值 B)戴尔 C)宏基。 D)三星

有10人投票支持惠普,4人投票给戴尔,7人投票给宏基,15人投票给三星。

它应该显示每个计算机品牌的标题,包括投票数和百分比,这意味着将显示4条记录,但是,如果ajax是ajax,它只显示戴尔的票数和百分比。使用,但它显示所有计算机品牌的投票数和百分比通常如果只使用PHP

请问,这可能是什么原因以及可能的解决方案?

由于

2 个答案:

答案 0 :(得分:0)

我认为你没有在这里将值添加到你的响应数组

$responses_array[] = $response;

我会尝试递增索引。

for($j=1;$j<=$count_response;$j++)
    {
        $fetch = fetch($poll_response);
        $response = $fetch['response'];
        $responses_array[j] = $response;
    }

答案 1 :(得分:0)

试试这个

$responses_array[j] = $fetch['response'];

而不是

$response = $fetch['response'];
$responses_array[] = $response;