【问题标题】:Add input field based on drop down list using php variables使用php变量根据下拉列表添加输入字段
【发布时间】:2016-06-28 09:00:30
【问题描述】:

我正在制作一个简单的库存系统,用于跟踪进出我们门的设备。库存存储在 MYSQL 中,表如下所示: id name storage used location_storage location

当我使用 PHP 创建一个简单的表单时,这一切都很有趣和游戏,因此它与来自服务器的内容保持动态。我可以毫无问题地更新所有值。

但为了简单起见,我正在研究一个带有按钮的下拉菜单,用于在表单中创建/显示输入字段。原因是在接下来的时间里我的表中会有很多行。由于之前的表单是根据服务器信息制作的,因此我还需要脚本是动态的。现在我一直在思考我应该做什么。

到目前为止,我的位代码如下所示:

“静态”PHP 表单:

<form action="<?php $_PHP_SELF ?>" method="POST">
<?php

//conn stuff 

$sql = "SELECT id, name, storage, used, location FROM inventory";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo '  ' . $row["id"]. ' ' . $row["name"]. '<input type="text" name="newamount[' . $row["id"]. ']" />';    
echo '<br>';
}
} else {
echo "0 results";
}

$conn->close();

?>
<input type="submit" name="checkout" value="Check out"/>
<input type="submit" name="checkin" value="Check in"/>

</form>

签入PHP(签出相同,只是+和减号的变化):

if(isset($_POST['sjekkinn'])){

//conn stuff

mysql_select_db( 'experimental' );    
$newamount = $_POST['newamount'];

foreach($newamount as $key => $value){
$sql = "UPDATE inventory ". "SET storage = (storage + $value), used = (used - $value)". "WHERE ID = $key " ;
    if (empty($value)) continue;
$retval = mysql_query( $sql, $conn );}


if(! $retval ) {
    die('Could not update data: ' . mysql_error());
}
echo "Updated data successfully!<br>";
header("Refresh:1");
mysql_close($conn);
}

这些都很好,但我想使用类似下面的代码来进行更整洁的设置...有人有什么建议吗?

从 MYSQL 生成的下拉列表:

<form action="#" method="post">
<select name="selectinventory">

<?php 
//conn stuff

$sql = "SELECT * FROM inventory";
$result = $conn->query($sql);
while ($row = $result->fetch_array()){
echo '<option value="' . $row["id"]. '">' . $row['name'] . '</option>';
}
?>

</select>
<input type="submit" name="submit" value="Add line">
</form>

【问题讨论】:

  • 有什么问题?
  • 我想停止使用上面的两个代码框,而是使用下拉列表来选择我想在表单中出现的行。现在表单是由 php.ini 制成的“静态”。我的意思是我想根据选择插入输入字段。如果我能找到排序的例子,我会看看。

标签: php mysql forms


【解决方案1】:

好的,所以我找到了自己的解决方案。

当我在问题的最后一个代码框中向您展示时,我最终使用了表格填充的下拉列表。我想到的是,我可以简单地使用 jQuery 的显示/隐藏功能。

我所做的是制作一个脚本,告诉(在“可读”中)div 'x' 在选择选项 'x' 并单击按钮时显示和移动。最后我会展示我的完整代码。

这样我就可以在我的表格中的一个 div 中创建每个输入字段(与填充下拉列表相同),这样我就可以更轻松地管理它们(可能更容易做到 - 但如果不是坏了,不要修)。这些是在表单之外创建的。然后,当我单击前面提到的按钮时,div 将在表单内移动。我选择的下一个将在前一个之下结束,而不是仅按表格顺序显示。

有任何问题欢迎留言!

这是完整的代码:

<form action="<?php $_PHP_SELF ?>" method="post">
<select name="selectinventory" id="selectinventory">
    <option selected="selected">Choose one</option>

    <?php 
    //conn stuff

    $sql = "SELECT id, name FROM inventory";
    $result = $conn->query($sql);

    $sql = "SELECT * FROM inventory";
    $result = $conn->query($sql);
    while ($row = $result->fetch_array()){
    echo '<option value="' . $row["id"]. '">' . $row['name'] . '</option>';
    }?>

</select>
    <div id="btn">Add line</div>
</form>

<script type="text/javascript">
    $(document).ready(function(){
        $("#btn").click(function(){
            $("#" + $("#selectinventory").val()).show();
            $("#" + $("#selectinventory").val()).appendTo($(".selecteditems"));
        });
    });
</script>

<?php
//conn stuff

$sql = "SELECT id, name FROM inventory";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
    echo '<div style="display:none" id="' . $row["id"]. '">  ' . $row["id"]. ' ' . $row["name"]. '<input type="text" name="newamount[' . $row["id"]. ']" /><br></div>
';    
}
} else {
echo "0 results";
}

$conn->close();

?>

<form action="<?php $_PHP_SELF ?>" method="POST" name="isthisthearrayname">
    <div class="selecteditems">
    </div>
    <input type="submit" name="checkout" value="Check out"/>
    <input type="submit" name="checkin" value="Check in"/>
</form>

【讨论】:

    猜你喜欢
    • 2019-03-07
    • 1970-01-01
    • 2013-06-01
    • 2014-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多