2014-02-28 38 views
1

我有一個類別列表作爲PHP函數。我在表單中調用了這個函數來顯示選項。不過,我無法獲得表單將選定的選項發佈到我的數據庫。我已經在SO和網上搜索過,但大多數問題與選擇值相關,這會更容易。然而,我的名單很長,可能會改變。表單中的其他值將正確發送到數據庫,除了我正在處理的圖片之外,但是我無法找到從表單中的下拉列表中插入所選值的方法。

這是我簡單的SQL查詢,從形式發送信息到數據庫:

if (isset($_POST['submit'])) 
{ 
    $title = $_POST['title']; 
    $subtitle = $_POST['subtitle']; 
    $description = $_POST['description']; 
    $category= $_POST['category']; 
    $pic1 = $_POST['pic1']; 
    $pic2 = $_POST['pic2']; 
    $pic3 = $_POST['pic3']; 
    $pic4 = $_POST['pic4']; 
    $pic5 = $_POST['pic5']; 
    $item_location = $_POST['location']; 
    $items_wanted = $_POST['wanted']; 
    mysql_query("INSERT INTO items_available (title, subtitle, description, category, image_path1, image_path2, image_path3, image_path4, image_path5, item_location, items_wanted) VALUES ('$title', '$subtitle', '$description', '$category', '$pic1', '$pic2', '$pic3', '$pic4', '$pic5', '$item_location', '$items_wanted')")or die(mysql_error()); 
    header('Location: prompt.php?x=8'); 
} 

這是從我的形式類別選擇領域的代碼這是一個下拉列表:

<div class="field"> 
    <label for="category">Category:</label> 
    <select id=\"category\" name=\"category\" class=\"searchBox\"> 
     <?php createCategoryList(); ?> 
    </select> 
</div> 

這是類別列表功能的代碼:

//Creates Category <option>'s for search bar 
function createCategoryList(){ 
if(ctype_digit($_GET['category'])){ $x = $_GET['category']; }else{ $x = 999; } 
echo "<option>All Categories</option>"; 
$i=0; 
while(1){ 
    if(numberToCategory($i)=="Category Does Not Exist"){ 
     break; 
    }else{ 
     echo " <option value=\"$i\" "; 
     if($i==$x){echo ' SELECTED ';} 
     echo " > "; 
     echo numberToCategory($i); 
     echo "</option>"; 
    } 
    $i++; 
} 
} 

//Category Number to String 
function numberToCategory($n){ 
switch($n){ 
case 0: 
    $cat = "Antiques"; 
    break; 
case 1: 
    $cat = "Art"; 
    break; 
case 2: 
    $cat = "Automotive"; 
    break; 
case 3: 
    $cat = "Baby"; 
    break; 
case 4: 
    $cat = "Books"; 
    break; 
case 5: 
    $cat = "Business & Industrial"; 
    break; 
case 6: 
    $cat = "Cameras & Photo"; 
    break; 
case 7: 
    $cat = "Clothing & Accessories"; 
    break; 
case 8: 
    $cat = "Collectibles"; 
    break; 
case 9: 
    $cat = "Computers"; 
    break; 
case 10: 
    $cat = "Crafts"; 
    break; 
case 11: 
    $cat = "DVD's & Movies"; 
    break; 
case 12: 
    $cat = "Electronics"; 
    break; 
case 13: 
    $cat = "Health & Beauty"; 
    break; 
case 14: 
    $cat = "Home & Garden"; 
    break; 
case 15: 
    $cat = "Jewelry & Watches"; 
    break; 
case 16: 
    $cat = "Music"; 
    break; 
case 17: 
    $cat = "Pet Supplies"; 
    break; 
case 18: 
    $cat = "Services"; 
    break; 
case 19: 
    $cat = "Sports & Outdoors"; 
    break; 
case 20: 
    $cat = "Sports Memorabilia & Cards"; 
    break; 
case 21: 
    $cat = "Tools & Home Improvement"; 
    break; 
case 22: 
    $cat = "Toys & Hobbies"; 
    break; 
case 23: 
    $cat = "Video Games"; 
    break; 
case 24: 
    $cat = "Other"; 
    break; 
default: 
    $cat = "Category Does Not Exist"; 
} 

目前的數值傳遞所選選項的值,即,如果我從下拉列表中選擇了嬰兒選項,那麼數字3將被輸入到我的數據庫中。如何將該數值替換爲它出現在下拉列表中的相應值?

感謝所有和任何答案。

+0

我會把它作爲數字。如果您處理關係數據庫,您可以使用類別設置數據庫,並且數字將引用所選類別。這樣編程更好。你的問題是你沒有返回$ cat變量(return $ cat;)...但是我會重新思考這個想法並真正使用數據庫。 –

+0

您應該用一個基本的字符串數組替換整個switch語句。只需在數組中對數值進行常規循環即可。這並不能回答你的問題只是一個建議。 –

回答

0

提交的值是您的選項標籤的value屬性被設置爲的值。所以,如果你將其更改爲它下面會提交的類別名稱,而不是數量:

$catName = numberToCategory($i); 
echo "<option value='$catName'>$catName</option>"; 

但是什麼馬丁在他的評論暗示效果會更好。你的包含類別的表應該有一個ID,這是你應該放入數據庫的字段,並將它作爲外鍵。

一般來說,在數據庫中使用特殊格式的字符串是一種不好的做法,而是創建一個帶有字符串的表格,並在其他表格中引用該行標識符。

相關問題