2014-04-11 49 views
0

我正在爲我的小企業在內部基於web的許可證跟蹤應用程序。 Web過濾器包含一個動態下拉框,該框根據數據庫中某個字段中的數據填充。我想添加一個靜態選項到動態下拉字段在php

它工作的很好,現在功能,但我想添加一些功能。

當前有兩個下拉框,一個用於部門,一個用於軟件。它的工作方式是,你設置了這兩個過濾器,它將輸出一個包含所有符合BOTH標準的記錄的表格。這可以很容易地看到每個部門已經訂購和安裝的特定應用程序的所有軟件許可證。

我已經開始做的是使用它來跟蹤卸載的或可用的許可證來削減軟件成本,並重新使用更多。我想要做的是爲每個字段添加一個靜態ALL選項,以便選擇與選定軟件匹配的所有部門,或者顯示與某個特定部門匹配的所有軟件,並且在極少數情況下都將這兩個選項設置爲全部它顯示所有部門的所有軟件。

這裏是我目前在地方和正常工作的代碼...

<?php 

echo "<p><a href='view.php'>View All</a> | <a href='un_view.php'>View Uninstalled</a> | <a href='view_paginated.php?page=1'>View Printable Version</a></p>"; 
echo "<br>"; 

// if there are any errors, display them 
if ($error != '') 
{ 
echo '<div style="padding:4px; border:1px solid red; color:red;">'.$error.'</div>'; 
} 
?> 
<p><strong>Filter Options</strong></P> 
<?php  
$sql2 = "SELECT DISTINCT dept FROM sw_lic"; 
$sql3 = "SELECT DISTINCT sw_name FROM sw_lic WHERE sw_name != ''"; 
$result2 = mysql_query($sql2); 
$result3 = mysql_query($sql3); 
?> 
     <form action="filter_view.php" method="POST"> 
      <p><select name="dept"> 
<?php 
     while($nt=mysql_fetch_array($result2)) 
     { 
     echo "<option name='dept' value=$nt[dept]>$nt[dept]</option>"; 
     } 
?> 
     </select> 
     <select name="sw_name"> 
<?php 
     while($st=mysql_fetch_array($result3)) 
     { 
     echo "<option name='sw_name' value='$st[sw_name]'>$st[sw_name]</option>"; 
     } 
?> 
     </select> 
<input type="submit" name="submit" value="Submit"> 
</form> 
<?php 
} 




// connect to the database 
include('connect-db.php'); 

// check if the form has been submitted. If it has, start to process the form and save it to the database 
if (isset($_POST['submit'])) 
{ 
// get form data, making sure it is valid 
$username = mysql_real_escape_string(htmlspecialchars($_POST['username'])); 
$sysname = mysql_real_escape_string(htmlspecialchars($_POST['sysname'])); 
$dept = mysql_real_escape_string(htmlspecialchars($_POST['dept'])); 
$sw_name = mysql_real_escape_string(htmlspecialchars($_POST['sw_name'])); 
$sw_ver = mysql_real_escape_string(htmlspecialchars($_POST['sw_ver'])); 
$origin = mysql_real_escape_string(htmlspecialchars($_POST['origin'])); 
$sw_key = mysql_real_escape_string(htmlspecialchars($_POST['sw_key'])); 

// check to make sure all fields are entered 
if ($username == '' || $dept == '' || $sw_name == '' || $sw_ver == '' || $origin == '' || $sw_key == '') 
{ 
// generate error message 
$error = 'ERROR: Please fill in all required fields!'; 

// if either field is blank, display the form again 
renderForm($username, $sysname, $dept, $sw_name, $sw_ver, $origin, $sw_key, $error); 
} 
else 
{ 
// save the data to the database 
mysql_query("INSERT sw_lic SET username='$username', sysname='$sysname', dept='$dept', sw_name='$sw_name', sw_ver='$sw_ver', origin='$origin', sw_key='$sw_key'") 
or die(mysql_error()); 

// once saved, redirect back to the view page 
header("Location: view.php"); 
} 
} 
else 
// if the form hasn't been submitted, display the form 
{ 
renderForm('','',''); 
} 
?> 

如果有人可以幫助我走出我將不勝感激。如果需要更多細節,請告訴我。

感謝,

+0

只需爲「all」添加一個選項,然後根據此值動態構建您的查詢。 –

回答

0

只需添加一個靜態的期權價值是這樣的:

<p><select name="dept"> 
    <option value="_all_">All</option> 
<?php 
     while($nt=mysql_fetch_array($result2)) 
     { 
     echo "<option name='dept' value=$nt[dept]>$nt[dept]</option>"; 
     } 
?> 
     </select> 
</p> 

,然後相應地修改您的查詢。

+0

好吧,我會給它一個鏡頭,並讓結果返回給你。 – user3525163

+0

好的,我非常喜歡屠殺這個劇本。我嘗試了你的解釋,並且在菜單中添加了全部選項的同時,我對將通配符傳遞到過濾的視圖頁面需要做什麼感到困惑。 – user3525163

+0

我不太明白你的意思是「通配符」。可能你需要在過濾的視圖頁面中改變你的SQL查詢,以顯示具有'dept =='_all_''的結果'sw_lic'結果。 (例如,在您的SQL語句中添加'OR dept =='_all_') –