我有一个我的电影收藏的MySQL数据库,我正在一个小网站上搜索和编辑数据库。整个项目更多的是学习的东西,然后只是试图以最简单的方式完成它。所以我从头开始编写它,只是纯文本文件,我主要使用PHP。
所以我想要一个可以编辑电影信息的页面。添加新信息是相当直接的,但如何删除信息。我有几个类型的复选框。当表单出现时,将检查当前与电影相关的任何类型。我希望能够取消选中一个框,然后该类型将从该电影中删除。我能想到的唯一方法是在表单打开时创建一个初始值数组,并在提交表单时获取POST数组。然后删除第一个但不是第二个数组中的任何类型。这看起来有点混乱,我觉得应该有更优雅的方式来做到这一点。这似乎是一个非常标准的事情,所以也许人们有一个很好的方法来做到这一点?
答案 0 :(得分:1)
您可以使用输入复选框点击事件来调用ajax操作。
使用jquery(http://api.jquery.com/jQuery.ajax/):
$(document).ready(function() {
$("#form input[type=checkbox]").click(function() {
$.ajax({
url : '/sample/'+$(this).attr('any_id')+'/'+$(this).attr('other_id'),
error: function(){alert('error')},
success : function(data){alert('success')}
});
});
});
然后解析网址以获得所需内容,并在成功函数上使用jquery函数更新表单和/或页面信息,如$('element')。html()等。
如果您希望为同一功能传递序列化数据选项,则为另一种选择:
$(document).ready(function() {
$("#form.checkboxes input[type=checkbox]").click(function() {
$.ajax({
url : '/sample-form-action',
type: "POST",
data: $("#form.checkboxes").serialize(),
error: function(){alert('error')},
success : function(data){alert('success')}
},
});
});
您可以在复选框周围创建表单标记,在这种情况下,您可以只发布您真正需要的信息:
<form name="checkboxes" class="checkboxes">
<input type="checkbox" />
</form>
答案 1 :(得分:1)
我能想到的最好的方式是在流派和电影之间建立一个多对多关系(意味着一部电影可以有多种类型,一种类型可以出现在很多电影中)。 / p>
这包括添加两个表,一个用于定义流派,另一个用于将它们与电影相关联:
genres
---------
id | name
这是一个稍微棘手的部分:
genres-movies
-------------------
movie_id | genre_id
其中movie_id
是movies
表中的实际ID,而genre_id
是genres
表中的实际ID。
例如,ID为1的流派是Science Fiction
,ID为42的电影是Hitchhiker's Guide to the Galaxy
(看我在那里做了什么?),这意味着如果我有条目42 | 1
的{{1}}意味着Hitchiker的银河系指南是一部科幻小说。请注意,genres-movies
和movie_id
都不是唯一的,两者都可以多次出现,因此可能会出现以下情况:
genre_id
查找电影的所有类型:
movie_id | genre_id
---------+---------
1 | 2
1 | 3
2 | 2
3 | 1
毕竟背景,你的问题。使用这种方法,您需要多个查询,从电影中删除所有类型,然后每个查询添加您选择的类型。您必须这样做,因为未选中的复选框不会发送到服务器(伪代码)
SELECT `genre_id` FROM `genres-movies` WHERE `movie_id` = <ID>;
注意!始终使用来自用户的数据清理(或更好地准备!!! )查询!
唷!那很长,希望你学到一两件事:)
答案 2 :(得分:0)
您可以使用php if语句检查数据库列中的值并显示已选中
<input name="column" type="radio" value="1" <?php if($table['column'] = 1) echo "checked" ?>>
<input name="column" type="radio" value="0" <?php if($table['column'] = 0) echo "checked" ?>>
或者,如果您正在使用复选框
<input name="column" type="checkbox" value="1" <?php if($table['column'] = 1){ echo "checked" }elseif($table['column'] = ){ echo "" } ?>>
我希望对您有用