2011-09-22 127 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

相关问题