我一直在各种论坛和类似的帖子中寻找帮助,但没有任何进展。我有三个页面,一个页面允许我将有关项目的信息插入数据库,第二个页面显示数据库中每个项目的图像和名称,第三个页面我希望有一个功能,在第二个页中显示所选项目的图像或名称。
第二页上的代码(dashboardadmin.php):
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
$conn = mysqli_connect("localhost","root","","wildfire");
if(mysqli_connect_errno())
{
echo mysqli_connect_error();
}
$sql= "SELECT pid, project_name, image, image_type FROM project";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while($row = $result->fetch_array()) {
echo "<form action='omprojekt.php' method='post'>
<div id='comp' name='comp'>
<img src=pic.php?pid=".$row['pid']." width=100xp height=100xp/>"." ".$row['project_name']."
</div>
<input type='submit' name='submit' value='Choose' />
</form>";
}
}
else {
echo "0 results";
}
mysqli_close($conn);
?>
第三页代码(omprojekt.php):
<?php
/* Tried both of the $val variables but of course only one at a time. This is only to show you what I have tried. */
$val = isset($_POST['comp']) ? $_POST['comp'] : '';
$val = $_POST['comp'];
if(isset($_POST['submit'])){
echo "$val";
}
?>
在上一段代码中,您可以看到我有两个$val
变量,但我在代码中一次只使用其中一个。在这里展示这两个的目的是向你展示我已经尝试了这两个。
我想做的是让第三页在第二页显示所选项目的图像和名称。正如您所看到的,我已经尝试使用相同的"名称"从DIV中检索内容。问题是第三个页面(omprojekt.php)根本没有显示任何内容,甚至没有任何错误。
您希望div像输入一样提交,但它不会,因为它不是输入。所以把它放在输入中。
if ($result->num_rows > 0) {
while($row = $result->fetch_array()) {
// Don't use and id attribute because you're in a loop and you might have multiple id's with the same value.
echo "<form action='omprojekt.php' method='post'>
<div>
<img src=pic.php?pid=".$row['pid']." width=100xp height=100xp/>"." ".$row['project_name']."
</div>
<input type='hidden' name='pid' value='".$row['pid']."'>
<input type='hidden' name='project_name' value='".$row['project_name']."'>
<input type='submit' name='submit' value='Choose' />
</form>";
}
}
然后在下一页,
$val = (isset($_POST['pid']) && isset($_POST['project_name'])) ?
"<img src=pic.php?pid={$_POST['pid']} width=100xp height=100xp/> {$_POST['project_name']}" : '';
为了完整起见,您的代码还有一些其他错误。
1) iamage上的width和height属性应该有引号,并且不接受"px",它们只是数字。如果你想使用"px",你应该使用样式。<img src='' style='width:20px; height:20px;' />
2) 在通过查询运行用户输入之前,应该先对其进行转义。
只有在<input...>
HTML标记中存在数据时,才会将数据从<form>
发送到action
脚本。你不能从randon <DIV>
标签等中挑选数据。
因此,您可以通过使用类似这样的hidden
输入字段来实现这一点(这只是一种方法)
if ($result->num_rows > 0) {
while($row = $result->fetch_array()) {
echo "<form action='omprojekt.php' method='post'>
<div>
<img src=pic.php?pid=".$row['pid'] .
" style="width:100px;height:100px" /> " .
$row['project_name']."
</div>
<input type='hidden' name='comp' value='" . $row['pid'] . "' />
<input type='submit' name='submit' value='Choose' />
</form>";
}
}
现在,当您到达omprojekt.php
时,$_POST['comp']
变量将存在。
你可以有任意多的隐藏输入字段,所以如果你想传递project_name,只需添加另一个隐藏字段。