嗯,这是我在php中构建动态页面的第一个举措。由于我是php的新手,我对php编程知之甚少。我已经创建了一个名为“dynamic”的数据库,它的表名为“answer”,之后我插入了四个字段,即'id','A1','A2','A3'。
我在id = 1中插入了值为A1 = 1,A2和A3-0,
的值在id = 2中,我插入了A1 = 0,A2 = 1,A3 = 0
在id-3中,我插入了A1,A2 = 0 A3 = 1
所以现在我想要的是每当我点击id = 1的链接然后它将显示id = 1的内容,依此类推...... 到目前为止我所做的是: -
$conn= mysql_connect("localhost","root", "");
$db= mysql_select_db("dynamic", $conn);
$id=$_GET['id'];
$sql= "select * from answer order by id";
$query= mysql_query($sql);
while($row=mysql_fetch_array($query, MYSQL_ASSOC))
{
echo "<a href='dynamic.php?lc_URL=".$row['id']."'>Click Here</a>";
if($row['A1']==1)
{
echo "A1 is 1";
}
else if($row['A2']==1)
{
echo "A2 is 1";
}
else if($row['A3']==1)
{
echo "A3 is 1";
}
else {
echo "Wrong query";
}
}
?>
当我执行此代码时,它会向我显示确切的ID,并且它将转到确切的ID,但值并未发生变化..
我希望每当我点击id然后它会显示确切的值,如果我点击id = 2然后它将回显出“A2 is 1”没有别的....
有人可以帮帮我吗?
我也注意到了
$id=$_GET['id'];
它是什么以及如何使用它。任何人都可以解释我.. 非常感谢提前:))
答案 0 :(得分:0)
最好先启动here以便深入了解php。但要回答你在这里提出的具体问题......
php $_GET
变量定义得很好here:
在PHP中,预定义的$ _GET变量用于收集a中的值 form with method =“get”。
这意味着可以通过php中的$_GET
变量访问通过URL中的查询字符串(在GET请求上)传递的任何参数。例如,dynamic.php?id=1
请求允许您通过$_GET['id']
访问ID。
由此我们可以得出一个简单的解决方案。在下面的解决方案中,我们使用相同的php页面来显示数据库中answer
表中的项列表,如果id参数作为url的一部分传递,则显示单行。
<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
<?php
$mysqli = new mysqli("localhost", "user", "password", "dynamic");
$query = 'SELECT * FROM answer';
if ($_GET['id']) {
$query .= ' WHERE id = '.$_GET['id'];
} else {
$query .= ' ORDER BY id';
}
$res = $mysqli->query($query);
if ($res->num_rows == 0) {
echo '<p>No Results</p>';
} else if ($res->num_rows == 1) {
// Display Answer
$row = $res->fetch_assoc();
echo '<h3>Answer for '.$row['id'].'</h3>';
echo '<ul>';
echo '<li>A1 = '.$row['A1'].'</li>';
echo '<li>A2 = '.$row['A2'].'</li>';
echo '<li>A3 = '.$row['A3'].'</li>';
echo '</ul>';
} else {
// Display List
echo '<ul>';
while ($row = $res->fetch_assoc()) {
echo '<li><a href="dynamic.php?id='.$row['id'].'">Answers for '.$row['id'].'</a></li>';
}
echo '</ul>';
}
?>
</body>
</html>
好的,这可能不是您正在寻找的,但它应该可以帮助您更好地了解事情的运作方式。如果我们在页面中添加一些javascript,那么我们可以在不使用GET参数和额外页面请求的情况下显示/隐藏答案。
<!DOCTYPE HTML>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
</head>
<body>
<?php
$mysqli = new mysqli("localhost", "user", "password", "dynamic");
$query = 'SELECT * FROM answer ORDER BY id';
$res = $mysqli->query($query);
if ($res->num_rows == 0) {
echo '<p>No Results</p>';
} else {
// Display List
echo '<ul>';
while ($row = $res->fetch_assoc()) {
echo '<li><a href="javascript:toggleAnswers('.$row['id'].')">Answers for '.$row['id'].'</a>';
echo '<ul id="answers_'.$row['id'].'" style="display:none;">';
echo '<li>A1 = '.$row['A1'].'</li>';
echo '<li>A2 = '.$row['A2'].'</li>';
echo '<li>A3 = '.$row['A3'].'</li>';
echo '</ul>';
echo '</li>';
}
echo '</ul>';
}
?>
<script>
function toggleAnswers(answer) {
$('#answers_' + answer).toggle();
}
</script>
</body>
</html>
还有更多解决方案,每个解决方案都比我在这里介绍的要复杂得多。例如,我们可以设置ajax请求,仅在单击某个项目时将答案加载到列表页面中。我的建议是通过一些关于php的初学者教程,看看一些流行的PHP框架:Zend,CodeIgniter,CakePHP等。根据你的总体目标,其中一个可能真的可以帮助你更快地实现目标。
请注意,此处提供的代码只是如何完成您所要求的示例。它绝对不会遵循所有(如果有的话)最佳实践。