检索表单内的DIV内容

时间:2015-12-07 13:05:13

标签: php html mysql if-statement

我一直在寻找各种论坛和类似帖子的帮助,但没有任何进展。 我有三个页面,一个允许我将有关项目的信息插入到我的数据库中,另一个页面显示数据库中每个项目的图像和名称,第三个页面我想要一个显示图像和名称的函数第二页中选定的项目。

第二页上的代码(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)根本没有显示任何内容,甚至没有任何错误。

2 个答案:

答案 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