在回声中?或者,还有更好的方法?

时间:2012-05-01 09:14:41

标签: php sql echo isset

$sql = "SELECT * from post where forum_id = $_GET[id]";
    $result = mysqli_query($conn, $sql) or die('Error querying database.');     
    while ($row = mysqli_fetch_array($result)) {
        echo '' . $row['fourm_id']; 
        echo '<div id="post3">
            <p class="1">
            <span class="name">'.'
            ' .$row['name']. '</span>'.
            '<span class="trip">
            ' .' !'
            . $row['title'].''.
            ' </span>'.
            ' <span class="time">
            ' .$row['time']. '' . 
            ' </span>'.
            ' </p>
            <p class="2">
            <span class="texts">
            ' .$row['texts']. '' .
            ' </span>'.
            ' </p>'.
            if (!isset($_SESSION["user_id"])) { 
            }
             else {
             '<a href="delete_post.php?fourm_id=' . $row['id']. '>Delete</a>' . }
            ' </div>';
         } 
        mysqli_close($conn);

?>

代码中的错误是显而易见的,只是显示了我想要做的事情。

这个回声我在这里显示用户帖子,我怎么去坚持在那里的isset所以只有管理员可以看到删除链接?或者是否有其他方式在回声之外进行,而不是在用户帖子之外?

2 个答案:

答案 0 :(得分:0)

<?
$data = array();
$sql  = "SELECT * from post where forum_id = ".intval($_GET['id']);
$res  = mysqli_query($conn, $sql) or trigger_error(mysqli_error($conn));
while ($row = mysqli_fetch_array($result)) {
  $data[] = $row;
}
?>
<?php foreach($data as $row): ?>
<?=$row['fourm_id']?>
<div id="post3">
  <p class="1">
    <span class="name"><?=$row['name']?></span>
    <span class="trip"> !<?=$row['title']?></span>
    <span class="time"><?=$row['time']?></span>
  </p>
  <p class="2">
    <span class="texts"><?=$row['texts']?></span>
  </p>
<?     if (isset($_SESSION["user_id"])): ?>
  <a href="delete_post.php?fourm_id=<?=$row['id']?>">Delete</a>
<?     endif ?>
</div>
<? endforeach ?>

答案 1 :(得分:-1)

如果您想以内联方式进行,可以使用ternary operatorsprintf之类的内容。

三元运算符(如果只有几个插入,则最好):

echo "Foo ".(isset($bar) ? "bar" : "");

(s)printf(如果您有多次插入,则最好):

printf("Foo %s", isset($bar) ? "bar" : "");

然而,这不会扩展很多,所以当你有大规模的“字符串结构”时,将输出分成多个语句会更加明智:

echo "Foo ";
if (isset($bar)) {
    echo "bar";
}

如果你有很多插入,这是最好的。