2016-06-28 12 views
1

私はドアを出入りする機器を追跡するための簡単な在庫システムを作っています。目録はMYSQLに格納され、テーブルは次のようになります。id name storage used location_storage locationPHP変数を使用したドロップダウンリストに基づいて入力フィールドを追加

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で:

"静的" 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); 
} 

これらはすべての偉大な作業しているが、私はタラのようなものを使用したいと思います下のeはちょっとした設定です...誰でも助言がありますか? 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

2つの上部コードボックスの使用をやめ、ドロップダウンリストを使用してフォームに表示したい行を選択します。今のフォームは "静的に" phpで作られています。 これは、選択に基づいて入力フィールドを挿入したいということです。並べ替えの例が見つかるかどうかを調べます。 –

答えて

0

わかりましたので、私は自分の解決策を見つけました。

質問の最後のコードボックスにあなたを示したように、テーブルが埋め込まれたドロップダウンリストが使用されました。私の心には、単にjQueryのshow/hide機能を使うことができたということがありました。

私がしたのは、オプション 'x'が選択されてボタンがクリックされたときに表示と移動を(「可読」で)div '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> 
関連する問題