按钮在循环之后不会出现,即使它在循环之前放置它也能正常工作

时间:2014-04-15 21:26:12

标签: php

我的footer.php中有admin按钮,当我在页面末尾包含它时按钮没有出现..但如果我把它放在这段代码之前:

<?php if ($row["rights"]=="2"):?>
<div id='cssmenu-admin'>
<ul>
<li name='admin' class='active'><a href='administration.php'><span>Admin</span></a></li>
</ul>
</div>
<?php endif; ?>
来自footer.php的

在循环之前它的工作方式应该如此。

这是我的footer.php文件:

<div id="footer">
<hr>Copyrighted (C) 2014 by djdanas@gmail.com<br>
<?php if ($row["rights"]=="2"):?>
<div id='cssmenu-admin'>
<ul>
<li name='admin' class='active'><a href='administration.php'><span>Admin</span></a></li>
</ul>
</div>
<?php endif; ?>
</div>
<br><hr>

这是我的页面文件:

<!DOCTYPE HTML> 
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Pagrindinis</title>
<link href="CSS/stilius.css" rel="stylesheet" type="text/css"/>
<link href="CSS/menu.css" rel="stylesheet" type="text/css"/>
</head>
<body>

<?php require("includes/validate.php");?>
<?php require("includes/stilius.php");?>

<?php
require("includes/connection_to_db.php");

$sql = "SELECT prekės.* , CONCAT(vartotojai.name) as v_name
    FROM prekės 
    LEFT JOIN vartotojai
    ON vartotojai.V_ID=prekės.V_ID
    ORDER BY prekės.date 
    DESC LIMIT 8";
    $result = mysql_query("$sql");
?>

<?php mysql_close(); ?>

<?php while ($row = mysql_fetch_assoc($result)) : ?>
    <?php $image = '<td><img src="data:image/jpeg;base64,'.base64_encode($row['image']).'" name="pix" width="270" height="200"/></td>' ?>
    <table class="two">
    <th><?php echo $row['name'] ?></th>
    <th>Prekės savininkas: <?php echo $row['v_name']?></th>
            <th><input type="button" value="Mainyti"></th>
            <tr>
            <?php echo $image?>
            <td><textarea disabled style="resize:none; background-color:white" name="about" rows="12" cols="65"><?php echo $row['specs']?></textarea><td>   
    </table>
<?php endwhile; ?>  

<?php require("includes/footer.php");?>

</body>
</html>

修改

好的,我通过添加新变量

解决了我的问题
$rights = $row['rights'];

之后

<!DOCTYPE HTML> 
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Pagrindinis</title>
<link href="CSS/stilius.css" rel="stylesheet" type="text/css"/>
<link href="CSS/menu.css" rel="stylesheet" type="text/css"/>
</head>
<body>

<?php require("includes/validate.php");?>
<?php require("includes/stilius.php");?>

在我的页面文件中,并在我的footer.php文件中更改了一行

<?php if ($row['rights']=="2"):?>

<?php if ($rights="2"):?>

现在它的工作就像一个魅力:)

1 个答案:

答案 0 :(得分:0)

我会在黑暗中刺伤并说出你的测试

if ($row["rights"]=="2")

表示您正在检查登录的用户是否具有2的“权限”?

然后当你循环查询...

while ($row = mysql_fetch_assoc($result))

您正在覆盖 $ row 变量。所以无论你想到的是什么,都不再存在了。您应该为用户使用不同的变量或循环查询。

修改: 一旦到达测试位置,变量也可能不在范围内。您可以尝试在footer.php中使用print_r($ row)来查看当前$ row内的内容 - 这应该会有所帮助。