虽然我过去多次使用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链接,尝试更改脚本标记的位置。
抱歉这么长的问题。希望它有意义。
答案 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添加?