PHP if语句在for循环中并追加结果在div中

时间:2017-03-15 15:39:53

标签: php jquery if-statement for-loop

虽然我过去多次使用stackoverflow获取答案,但这是我在stackoverflow上的第一个问题。我研究了很多关于我的问题但无法回答这个具体问题。希望发布实际问题可能有所帮助。

所以这里是: 我在artwork.php中有2个div。

echo '<div id="on_going_art"></div>';

echo '<div id="completed_art"></div>';

我的数据库有2个表:artwork和user_hour_log 每个user_id可以分配多个art_id,每个art_id可以有多个user_hour_log条目。 假设$ art []是一个包含多个art_id的数组,我从cookie获取user_id:

for ($i=0; $i<count($art); $i++){

            $query2= "SELECT *, SUM(total_time) AS total_time FROM user_hour_log WHERE user_id = '".$user_id."' && art_id = '".$art[$i]."'";
            $result2 = mysqli_query($conn, $query2);

            $row2 = $result2 -> fetch_assoc();
            $hours_completed_artwork = $row2['total_time'];

            $query3= "SELECT * FROM artwork WHERE winner_user_id = '".$user_id."' && art_id = '".$art[$i]."'";
            $result3 = mysqli_query($conn, $query3);
            $row3 = $result3 -> fetch_assoc();
            $highest_bid_hours = $row3['highest_bid_hours'];

我在这里检查$ hours_completed_artwork是否小于$ highest_bid_hours,然后在#on_goin_art中追加,另外附加在#completed_art中:

if($hours_completed_artwork < $highest_bid_hours) {
                    echo '<script type="text/javascript">
                            $(document).ready(function() {
                                $("#on_going_art").append("
                                    echo "<div class=\"row box1\">";
                                    echo "<div class=\"col-xs-4 col-sm-4 col-md-4\">";
                                    echo "<img class=\"img-responsive thumbnail\" src=\"http://i.imgur.com/jYea7Id.jpg?1\">";
                                    echo "</div>";
                                    echo "<div class=\"col-xs-8 col-sm-8 col-md-8\">";
                                    echo "<h6 >"'.$row3['artwork_name'].'"<span id=\"percentage\">"'.number_format($hours_completed_artwork/ $highest_bid_hours *100,0).'"%</span> </h6>";
                                    echo "</div>";
                                    echo "</div>";
                                ");
                            });
                        </script>';
    } else if($hours_completed_artwork >= $highest_bid_hours)  {
                        echo '<script type="text/javascript">
                                $(document).ready(function() {
                                     $("#completed_art").append("
                                        echo "<div class=\"row box1\"> \n";
                                        echo "<div class=\"col-xs-4 col-sm-4 col-md-4\"> \n";
                                        echo "<img class=\"img-responsive thumbnail\" src=\"http://i.imgur.com/jYea7Id.jpg?1\"> \n";
                                        echo "</div> \n";
                                        echo "<div class=\"col-xs-8 col-sm-8 col-md-8\"> \n";
                                        echo "<h6 >'.$row3['artwork_name'].'<span id=\"percentage\">100% </span> </h6> \n";
                                        echo "</div> \n";
                                        echo "</div>";
                                     ");
                                });
                            </script>';

问题是追加不起作用,如果我只附加字符串,例如:&#39;不完整&#39;并且&#39;完成&#39;它完美地附加在正确的div中,但它并没有用我的代码。

我尝试在包含dint工作的脚本标签之前关闭php标签。 我已经包含了Google CDN jquery链接,尝试更改脚本标记的位置。

抱歉这么长的问题。希望它有意义。

2 个答案:

答案 0 :(得分:0)

这是一个工作片段:

$row3['artwork_name'] = 'Some name';
$hours_completed_artwork = 40;
$highest_bid_hours = 50.00;

$percentage = $hours_completed_artwork < $highest_bid_hours ? number_format($hours_completed_artwork/ $highest_bid_hours *100,0) : 100;
$html = '<div class="row box1">\'+
         \'<div class="col-xs-4 col-sm-4 col-md-4">\'+
         \'<img class="img-responsive thumbnail" src="http://i.imgur.com/jYea7Id.jpg?1">\'+
         \'</div>\'+
         \'<div class="col-xs-8 col-sm-8 col-md-8">\'+
         \'<h6 >'.$row3['artwork_name'].'<span id="percentage">'.$percentage.'%</span> </h6>\'+
         \'</div>\'+
         \'</div>';


$snippet = '<script type="text/javascript">
$(document).ready(function() {
    $("#on_going_art").append(\''.$html.'\');
});
</script>';

echo '<div id="on_going_art"></div>';
echo $snippet;

我重构了代码以使其更易于维护。在javascript中,你不能只将html抛入append函数。需要使用+和单引号连接新行。那是现在建立的。此外,因为只有百分比是100或变量,我把那个批次放在一个变量中。

答案 1 :(得分:-1)

你的报价搞砸了。 并且你在字符串中有多个回声,我想你只是复制了代码并将其放入字符串中。

首先构建html,将其放入var,然后使用它会更容易:

if($hours_completed_artwork < $highest_bid_hours) {
    $html = "<div class=\"row box1\">
             <div class=\"col-xs-4 col-sm-4 col-md-4\">
             <img class=\"img-responsive thumbnail\" src=\"http://i.imgur.com/jYea7Id.jpg?1\">
                                </div>
                                <div class=\"col-xs-8 col-sm-8 col-md-8\">
                                <h6 >".$row3['artwork_name']."<span id=\"percentage\">".number_format($hours_completed_artwork/ $highest_bid_hours *100,0)."%</span> </h6>
                   </div>
                   </div>";

    echo "<script type=\"text/javascript\">
          $(document).ready(function() {
               $(\"#on_going_art\").append('".$html."');
          });
         </script>";

//....

更好的是使用HEREDOC或NEWDOC

无论如何,这个结构对我来说似乎有些奇怪。为什么不首先通过php包含html?是否真的必须稍后通过javascript添加?