2011-09-22 66 views
0

如何在mysql數據庫表中插入更新和刪除複選框數據。我需要mysql查詢所有操作。我只有一個用於該操作的數據庫表。在此先感謝在mysql數據庫中插入更新和刪除複選框數據

<input type="checkbox" name="sports" value="Cricket" /> Cricket 
<input type="checkbox" name="sports" value="Football" />Football 
<input type="checkbox" name="sports" value="Chess" />Chess 

數據庫結構

ID ,NAME, AGE ,SPORTS(checkbox need to save) 
+0

你應該至少有2個表來管理它。你需要了解查詢,模型還是兩者? –

+0

@Glide:我需要查詢和模型 – karthick

回答

0

像SHEF說,你需要的3個表usersportuser_sport

用戶

+----+----------------+-----+ 
| id | name   | age | 
+----+----------------+-----+ 
| 1 | Freddy Mercury | 65 | 
| 2 | Ian Gillan  | 66 | 
| . | .    | . | 
+----+----------------+-----+ 

運動

+----+----------+ 
| id | sport | 
+----+----------+ 
| 1 | Cricket | 
| 2 | Football | 
| 3 | Chess | 
+----+----------+ 

user_sport

+---------+----------+ 
| user_id | sport_id | 
+---------+----------+ 
|  . |  . | 
+---------+----------+ 

生成與此PHP的複選框:

$sql = '/* Current User Sports */ 
SELECT 
    sp.id AS "sport_id" 
, sp.name As "sport" 
, us.user_id AS "checked" 
FROM sport AS sp 
LEFT JOIN user_sport AS us ON (
    sp.id = us.sport_id 
    AND user_id = '.$user_id.' 
) 
;'; 
$result = query($sql); 
foreach ($result as $row) { 
?> 
    <label> 
    <input type="checkbox" name="sports[<?php echo ($row['sport_id']) ?>]" checked="checked" /> 
    <?php echo ($row['sport']) ?> 
    </label> 
<?php 
} 

這會給你這個HTML:

<input type="checkbox" name="sports[1]" checked="checked" />Cricket 
<input type="checkbox" name="sports[2]" checked="checked" />Football 
<input type="checkbox" name="sports[3]" checked="checked" />Chess 

更新部分

首先查詢(刪除當前$ USER_ID)值:)

DELETE FROM user_sport WHERE user_id = $user_id; 

第二次查詢(插入當前$ user_ID的新值:

$sql = 'INSERT INTO user_sport 
    (user_id, sport_id) 
VALUES 
    ('; 
$tmp = array(); 
foreach ($sports as $sport_id => $void) { 
    $tmp[] = "($user_id, $sport_id)" 
} 
$sql .= implode("\n, ", $tmp).' 
) 
;'; 

這可以插入/更新工作/刪除

1

你應該改變你的表模式,它甚至沒有在1NF,你有它的方式。你應該創建至少兩張表來處理這個問題,但是我會建議三張表,考慮到運動會重複的事實。

這些將是你的表...

用戶

id | name | age 

體育

id | sport 

user_sports

user_id | sport_id 

這將是查詢...

當您生成複選框,你會從sports表中選擇,和值你會把這項運動,不是名稱的ID。

insert有關插入的通知,您將使用mysql_insert_id來獲取將在關係表中使用的用戶的ID。

INSERT INTO users(name, age) VALUES('John', 22); 
INSERT INTO user_sports(user_id, sport_id) VALUES(mysql_insert_id(), 123); 

選擇如果你的複選框將包含運動的id作爲價值

SELECT u.id user_id, u.name, u.age, s.sport 
     FROM users u 
INNER JOIN user_sports us 
     ON u.id = us.user_id 
     AND us.sport_id = 123 
INNER JOIN sports s 
     ON us.sport_id = s.id 

選擇,如果你有運動

SELECT u.id user_id, u.name, u.age, s.sport 
     FROM users u 
INNER JOIN user_sports us 
     ON u.id = us.user_id 
INNER JOIN sports s 
     ON us.sport_id = s.id 
     AND s.sport = 'Football' 

的名字刪除

DELETE u, us 
     FROM users AS u 
INNER JOIN user_sports AS us 
     ON u.id = us.user_id 
INNER JOIN sports AS s 
     ON us.sport_id = s.id 
     AND s.sport = 'Basketball' 
+0

Thanks.But我需要查詢插入,上傳和刪除表中的複選框數據 – karthick

+0

@kathrick恐怖︰我更新了我的答案與查詢。 – Shef

相關問題