簡體   English   中英

使用php變量基於下拉列表添加輸入字段

[英]Add input field based on drop down list using php variables

我正在制作一個簡單的庫存系統,以跟蹤設備進出我們的門。 庫存存儲在MYSQL中,其表格如下所示:id name storage使用location_storage位置

當我使用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>

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

當我在問題的最后一個代碼框中向您展示時,我最終使用了我填充表格的下拉列表。 我想到的是我可以簡單地使用jQuery show / hide功能。

我做的是制作一個腳本,告訴(在“可讀”中)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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM