我想代表每一次按下按钮时存储在数据库中的图像。列名称为“ solution_path”。 在我的代码中,我可以在按钮外部表示图像,但是我希望在按下按钮时显示它。部分代码如下所示。我知道如何表示从数据库中获取的图像,但是在这种情况下,我不知道为什么它不起作用。你能帮助我吗? 我已经连接到数据库和所需的表。
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "project";
$conn = new mysqli($servername, $username, $password, $dbname);
/*echo*/ $id=$_GET['id'];
$sql = "SELECT * FROM exercises where exercise_id='$id'";
$result = $conn->query($sql); /*Check connection*/
?>
<div id="centered_B" class="header">
<?php
while($id = $result->fetch_assoc())
echo '<h1>' . $id["exercise_id"]. ". " . $id["title"] . '</h1>' . "<br>" . '<p>' . $id["text"] . '</p> <img width="603" height="auto" src="' . $id["image_path"] . '"><br><br>
<input type="radio" name="choice" value= "1" /><img width="550" height="auto" src="' . $id["image_path_A"] . '"/>
<input type="radio" name="choice" value= "2" /><img width="550" height="auto" src="' . $id["image_path_B"] . '"><br>
<input type="radio" name="choice" value= "3" /><img width="550" height="auto" src="' . $id["image_path_C"] . '"><br>';
/*var_dump($id)*/
?>
<button onclick="solutionFunction()" class="button_Solution" >Solution</button>
<div id="solution" style="display: none;">
This is the solution.
<img width="500" height="auto" src="<?php echo $id["solution_path"]; ?>" >
</div>
<script>
function solutionFunction() {
var x = document.getElementById("solution");
if (x.style.display === "none") {
x.style.display = "block";
} else {
x.style.display = "none";
}
}
</script>
答案 0 :(得分:1)
提供我的评论作为答案,以便您用;)结束问题
如果您只处理该特定页面构建的一个结果行,则应摆脱while
循环,只需将一个结果行分配给$id
变量,即可在整个页面。
因此更改这一行:
while($id = $result->fetch_assoc())
只是:
$id = $result->fetch_assoc();
现在$id
将在整个页面生成过程中保持不变,并且较低的$id["solution_path"]
回显应该为您提供所需的解决方案图像URL字符串。
您的原始代码不起作用的原因是while
的特定行为是在上一次循环迭代中“清除”分配的变量(从而导致条件变为“ false”并结束循环) )。
此外,由于您没有大括号,因此while
仅控制紧接echo
的下一行。然后,这意味着您对$id["solution_path"]
变量的进一步回显将回显空结果。如果您已完全启用php错误报告功能,则可能还会看到有关未定义索引的警告。
希望对您有所帮助!