2016-06-28 116 views
1

我正在製作一個簡單的庫存系統,用於跟蹤設備進出我們的大門。庫存存儲在MYSQL中,其表格如下所示:id名稱存儲已使用location_storage位置使用php變量添加基於下拉列表的輸入字段

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

問題是什麼? –

+0

不清楚.....! –

+0

我想停止使用兩個上面的代碼框,而是使用下拉列表選擇我想要出現在表單中的行。現在,這個表單是由php「靜態」創建的。 我的意思是我想根據選擇插入輸入字段。我會看看我能否找到一個排序的例子。 –

回答

0

好了,我發現我自己的解決方案。

我最終使用了我的表格填充下拉列表,正如我在問題的最後一個代碼框中顯示的那樣。我想到的是,我可以簡單地使用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> 
相關問題