用于编辑数据库条目的PHP表单

时间:2013-06-03 17:51:23

标签: php database forms

我有一个我的电影收藏的MySQL数据库,我正在一个小网站上搜索和编辑数据库。整个项目更多的是学习的东西,然后只是试图以最简单的方式完成它。所以我从头开始编写它,只是纯文本文件,我主要使用PHP。

所以我想要一个可以编辑电影信息的页面。添加新信息是相当直接的,但如何删除信息。我有几个类型的复选框。当表单出现时,将检查当前与电影相关的任何类型。我希望能够取消选中一个框,然后该类型将从该电影中删除。我能想到的唯一方法是在表单打开时创建一个初始值数组,并在提交表单时获取POST数组。然后删除第一个但不是第二个数组中的任何类型。这看起来有点混乱,我觉得应该有更优雅的方式来做到这一点。这似乎是一个非常标准的事情,所以也许人们有一个很好的方法来做到这一点?

3 个答案:

答案 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_idmovies表中的实际ID,而genre_idgenres表中的实际ID。

例如,ID为1的流派是Science Fiction,ID为42的电影是Hitchhiker's Guide to the Galaxy(看我在那里做了什么?),这意味着如果我有条目42 | 1的{​​{1}}意味着Hitchiker的银河系指南是一部科幻小说。请注意,genres-moviesmovie_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 "" } ?>>

我希望对您有用