2013-07-31 79 views
0

我想填充一個下拉框,從的MySQL檢索數據庫。以下是我的表格php以下文件。它看起來很好,但我不明白爲什麼當我點擊提交按鈕沒有出現任何東西。有什麼我可以做的,以解決這個錯誤?任何更正和建議,將不勝感激。填充下拉框將不會顯示數據庫

CS_JOBS表包括:job_title,category_code(17,27,37 ....)等等。

connect.php在這種情況下工作正常。

我的形式

<!DOCTYPE html> 
<html> 
    <head></head> 
    <body> 
     <form action = "csjob.php" method = "POST" name = "jobsearch"> 
      <select name = "category_code[]"> 
       <option value = "17">Architecture and Engineering</option> 
       <option value = "27">Arts, Design, Entertainment, Sports, and Media</option> 
       <option value = "37">Building and Grounds Cleaning and Maintenance</option> 
       <option value = "13">Business and Financial Operations</option> 
       <option value = "21">Community and Social Services</option> 
       <option value = "15">Computer and Mathematical</option> 
       <option value = "47">Construction and Extraction</option> 
       <option value = "25">Education, Training, and Library</option> 
       <option value = "45">Farming, Fishing, and Forestry</option> 
       <option value = "35">Food Preparation and Serving Related</option> 
       <option value = "29">Healthcare Practitioner and Technical</option> 
       <option value = "31">Healthcare support</option> 
       <option value = "49">Installation, Maintenance, and Repair</option> 
       <option value = "23">Legal</option> 
       <option value = "19">Life, Physical, and Social Science</option> 
       <option value = "11">Management</option> 
       <option value = "43">Office and Administrative Support</option> 
       <option value = "39">Personal Care and Service</option> 
       <option value = "51">Production</option> 
       <option value = "33">Protective Service</option> 
       <option value = "41">Sales and Related</option> 
       <option value = "53">Transportation and Material Moving</option> 
      </select> 
      <input type="submit" value="Submit"> 
     </form> 
    </body> 
</html> 

csjob.php

<?php 
    require("connect.php"); 
    if(isset($_POST['submit'])){ 
     $sql = "SELECT * FROM CS_JOBS WHERE category_code=".$_POST['category_code']; 
     $result = mysql_query($sql); 

     echo "<select name='category_code'>"; 
     while ($row = mysql_fetch_array($result)) { 
      echo "<option value='".$row['job_title']"'>".$row['job_title']"</option>"; 
     } 
     echo "</select>"; 
    } 
?> 

在這個問題上這麼多錯別字,這是我實際的代碼,我上傳:a link

+0

代碼中可愛的[SQL注入攻擊](http://bobby-tables.com)漏洞。對你來說更重要的是......讓下拉菜單正確顯示,或讓你的服務器免受pwn3d的影響? –

+0

將$ sql放在引號中 – Mihai

+0

@MarcB:BOTH。我的代碼中沒有看到任何漏洞。這只是一個例子。我可能錯了。謝謝 –

回答

2

你有3個個小問題。第一個是形式

<select name = "category_code[]"> 

應該

<select name="category_code"> 

因此,沒有在名稱中括號[],也不需要額外的空間......只需要
括號如果你有一個選項有多個選擇,並且會返回一個數組(因此括號)。這不是在你的情況發生。

以及第二個問題是什麼是之前表示:的PHP

$row['job_title'} 

應該

$row['job_title'] 

因此改變}]

你的第三個問題有做檢查提交:

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

應該

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

因爲你沒有一個領域與 '提交'。您有ID提交和提交的字段。但沒有名稱提交。您可以將name='submit'添加到提交按鈕。或者只是與我上面提出的更改...

+0

[較新版本](https://www.dropbox.com/s/kwlc4x7el7clejh/test.txt )!我已經修復了上面提到的所有問題。謝謝! @ nl-x –

+0

很高興聽到你的小問題解決了。現在,你也有一個大問題:現在可能的SQL注入...在設置$ sql之前,你應該添加:'$ _POST ['category_code'] =「'」.mysql_real_escape_string($ _ POST ['category_code' ])。「'」;'這將涵蓋大多數SQL注入相關的問題。 –

+0

這是有道理的。我要去添加這行代碼。謝謝。 –

0

你的代碼沒有意義。如果存在特定的表單字段,則運行查詢,但只有在該表單字段爲不存在時才運行「顯示結果」代碼。

最簡單的解決:REMOVE} else { ...

+0

是的,我沒有從我的代碼中刪除else語句。它在我的屏幕上顯示空白。 @MarcB –

+0

增加錯誤處理,例如'$ result = mysql_query($ sql)或者死(mysql_error());'。如果該類別代碼是字母數字,則需要在該值附近引用引號,例如'category_code ='$ val''。你所有的代碼都假設世界是完美的,沒有任何事情會失敗。糟糕的設計選擇。假設一切都失敗了,把成功當作一個驚喜。 –

+0

非常感謝。這真的很有幫助。 @MarcB –

1
<?php 
    require("connect.php"); 
    if(isset($_POST['submit'])) 
    { 
     $sql = "SELECT * FROM CS_JOBS WHERE category_code=".$_POST['category_code']; 
     $result = mysql_query($sql); 
     if(mysql_num_rows($result) > 0){ 
      echo "<select name='category_code'>"; 
       while ($row = mysql_fetch_array($result)) { 
        echo "<option value='".$row['job_title']"'>".$row['job_title']"</option>"; 
       } 

      echo "</select>"; 
      } 
    } 


?> 
+0

注意這個'$ row ['job_title'}'應該是'$ row ['job_title']'=) – ROMMEL