2012-04-01 122 views
0

嗨,我有一個小問題,我有一個複選框列表,我想保存列表的值到我的數據庫(sjaak_db)中的產品tabel。但我現在不知道如何用php來做到這一點。保存複選框值到數據庫與php

<ul id="selectable"> 

       <input type="checkbox" id="checkbox-G1" value="Knoflook" name="knoflook"><label for="checkbox-G1">Knoflook</label> 
       <input type="checkbox" id="checkbox-G2" value="Tabasco" name="tabasco"><label for="checkbox-G2">Tabasco</label> 
       <input type="checkbox" id="checkbox-G3" value="Oregano" name="oregano"><label for="checkbox-G3">Oregano</label> 

    </ul> 

    <input type='submit' name='submit' value='Save' /><label>Save</label> 

所以我所試圖做的是儘快保存在數據庫中的表的值作爲我按下保存按鈕

回答

1

這比你可能會意識到一個更大的話題。我假設你使用MySQL作爲數據庫。

這裏有一些教程,讓你開始:

http://www.freewebmasterhelp.com/tutorials/phpmysql

http://www.tizag.com/mysqlTutorial/

注意:

當編寫SQL,你必須小心避免SQL注入。上述教程可能沒有足夠清楚。在PHP中,你可以使用PDO的準備語句:

http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/

http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers

+1

請不要使用w3schools作爲參考。他們吮吸。特別是在這個問題上,因爲他們教你如何讓你的應用程序[容易受到SQL注入攻擊](http://www.w3schools.com/php/php_mysql_insert.asp)。 – PeeHaa 2012-04-01 21:08:52

+1

freewebmasterhelp教程也教導了SQL注入漏洞。 Tigzig有些奇蹟,實際上很費心提及它......但是它們將它隱藏在「高級」部分(它不是先進的,它是基礎的),並且仍然使用手動轉義而不是PDO綁定變量。 – Quentin 2012-04-01 21:20:57

+1

是否有任何良好的PDO初學者教程?其他人教壞習慣令人沮喪。 – alberge 2012-04-01 21:29:19

0

您可以使用PHP的$_POST[]方法。例如,保存下面的代碼,如「saveDb.php」,然後將你的html表單的action方法設置爲這個php頁面。

if (isset($_POST['Save'])) { // 
     if (isset($_POST['checkbox-G1'])) { 

     // define var like "$CheckBox1Value" for all checkboxes 
     $CheckBox1Value = $_POST['checkbox-G1']; // you can duplicate this row for other checkboxes 

     } 
} 

之後,您可以將該值插入到數據庫表中。

0

您必須使用php。首先,我們還需要您想要存儲選項的表格名稱(在數據庫內)。我們假設你只有X選項。如果你有不同數量的選項,我會遵循其他方法。我假設你的桌子叫做'tablename',不同的列是'knoflook','tabasco','oregano'。要存儲在不同的MySQL列的每個選項,所以我應該這樣做:

<?php 
$con_mysql = mysql_connect(servername,username,password); //Connect to mysql 
if (!$con_mysql) //if it cannot connect... 
    { 
    die('Could not connect: ' . mysql_error()); //...displays error 
    } 

$con_db = mysql_select_db(sjaak_db, $con_mysql); //Connect to database 
if (!$con_db)  //if it cannot connect... 
    { 
    die('Could not connect: ' . mysql_error()); //...displays error 
    } 

// Escape and save each value 
$Knoflook=mysql_real_escape_string($_POST['knoflook']); 
$Tabasco=mysql_real_escape_string($_POST['tabasco']); 
$Oregano=mysql_real_escape_string($_POST['oregano']); 

// Save them into the database 
mysql_query("INSERT INTO tablename (knoflook, tabasco, oregano) VALUES('$Knoflook', '$Tabasco', '$Oregano') ") or die(mysql_error()); 

// Close the conexion 
mysql_close($con_db); 
?> 

現在,你可能想要做的很多事情對他們來說,就像如果答案是設置或不檢查(isset ($ _POST ['knoflook']))等等。另外,如果有很多選項,請說出來,然後我會試着去適應它。