我一直在寻找各种论坛和类似帖子的帮助,但没有任何进展。 我有三个页面,一个允许我将有关项目的信息插入到我的数据库中,另一个页面显示数据库中每个项目的图像和名称,第三个页面我想要一个显示图像和名称的函数第二页中选定的项目。
第二页上的代码(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)根本没有显示任何内容,甚至没有任何错误。
答案 0 :(得分:2)
如果<form>
HTML标记中存在数据,则只会将action
发送到<input...>
脚本。您无法从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,只需添加另一个隐藏字段。
答案 1 :(得分:2)
你期望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)iamge上的width和height属性应该有引号,不接受“px”,它们只是数字。如果你想使用“px”,你应该使用样式。 <img src='' style='width:20px; height:20px;' />
2)你应该是escaping user input before running it through your query。