我的问题是如何将下面的代码整整到echo
?我有echo
使用while
所需要的多个这些,我已经玩弄了它但还没弄明白要做什么。我看到的答案,我已经尝试过,但他们只是没有处理我的代码。我需要将所有这些代码放在一堆,但是我在插入" like按钮"部分。问题始于
$likes = (empty($_POST['like'])) ? : $_POST['like'] ;
这里是完整的代码
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
echo '
<div class="wrapper">
<div class="submissions">
<div class="logo-logo"><h2>Questions.</h2>
<div class="checkboxes">'.$row['formtype'].'
</div>
</div>
<div class="top-submit">
“'. $row["actual_quote"] . '”
</div>
<div class="poster">- '. $row["poster"].'
<div class = "like">- '.
$likes = (empty($_POST['like'])) ? : $_POST['like'] ;
$dislikes = (empty($_POST['dislike'])) ? : $_POST['dislike'] ;
$ip = $_SERVER['REMOTE_ADDR'];
if(isset($_POST['like'])){
$likes1 = $likes+1;
$voted1 = $voted+1;
$query2 = $db->prepare("INSERT INTO voters (voted, ip) VALUES ( :voted, :ip)");
$query2->bindParam(':voted', $voted1, PDO::PARAM_STR);
$query2->bindParam(':ip', $ip, PDO::PARAM_STR);
$query2->execute();
header("Location: like.php?");
$update1 = $db->prepare("INSERT INTO votes (likes) VALUES ( :likes)");
$update1->bindParam(':likes', $likes1, PDO::PARAM_STR);
$update1->execute();
}
if(isset($_POST['dislike'])){
$dislikes1 = $dislikes+1;
$voted1 = $voted+1;
$query2 = $db->prepare("INSERT INTO voters (voted, ip) VALUES ( :voted, :ip)");
$query2->bindParam(':voted', $voted1, PDO::PARAM_STR);
$query2->bindParam(':ip', $ip, PDO::PARAM_STR);
$query2->execute();
header("Location: like.php?");
$update1 = $db->prepare("INSERT INTO votes (dislikes) VALUES ( :dislikes)");
$update1->bindParam(':dislikes', $dislikes1, PDO::PARAM_STR);
$update1->execute();
}
$stmt = $db->query("SELECT * FROM voters");
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$row3 = $stmt->fetch();
echo "Likes: $likes <br /> Dislikes: $dislikes<br />";
if(isset($row3['voted'])){
if(isset($row3['ip'])){
echo "You have already voted for this.";
}
} else {
echo "<form action = '' method = 'post'> <input type = 'submit' name = 'like' value = 'like'> <input type = 'submit' name = 'dislike' value = 'dislike'></form>";
}'
</div>
<!-- use select to get the items to stay on the page-->
</div>
</div>
</div>
';
}
可能有一个非常简单的解决方案,但我到处寻找它。我最后尝试使用.
,但它并不是那样的。有什么建议吗?
编辑我更改了一部分,整个代码从$likes
开始,在else{}
之后结束,因此:
<div class = "like">';
include("like.php");
echo'</div>
答案 0 :(得分:1)
你不是。你停止你的回声,做你的其他代码,并再次开始回声。
echo 'foo';
bar();
echo 'baz';
答案 1 :(得分:0)
你不应该以这种方式使用echo。
尝试将HTML保持在变量中,并在检查所有必要条件后使用点连接所有需要的其他HTML。
$output = '<div>blahblah</div>';
if ($somedatafromDB == true) {
$output .= '<p>true!!</p>';
} else {
$output .= '<p>false :/</p>';
}
// and finally
echo $output;
答案 2 :(得分:0)
问题也可能是三元运营商:
您的代码目前正在
$likes = (empty($_POST['like'])) ? : $_POST['like'] ;
尝试将其更改为
$likes = (empty($_POST['like'])) ? 0 : $_POST['like'];
如果$_POST['like']
为空,您需要指定要返回的内容。
如果x?y:z
为真,则三元运算符(y
)返回x
,否则返回z
。在您的情况下,y
丢失,可能会在执行期间导致错误。
在脚本开头的一个好习惯是ini_set("display_errors", "on");
,用于调试目的。