我有一个包含4个文本字段和2个复选框的PHP表单。复选框是“标签”,可以应用于使用文本字段输入的文章。
例如:
信息:
标题 - 确定南美候鸟的不和谐关系
作者 - 作者。 S.惠灵顿
访问日期 - 19/06/2012
网址 - http://www.wellington.org/articles/birds/def-int-rel-mig-bird-s-amer.pdf
标签:
鸟类[X]南美洲[X]
在这种情况下,将检查两个复选框,因为该文章适用于鸟类和南美洲。
我有一个包含3个表格的数据库:
文章: id - articletitle - articleorganization - articledate - articleurl
标记: id - tag_content
articles_tags: article_id - tag_id
目前,我的表单可以使用以下方法将文章信息插入到文章表中:
mysql_query("INSERT INTO articles SET articletitle='$articletitle',
articleorganization='$articleorganization',
articledate='$articledate',
articleurl='$articleurl' ")
然后,我可以使用$article_id = mysql_insert_id();
来获取将插入到articles_tags表中的id。
但在那之后我完全被难过了。
我需要以某种方式遍历复选框:
<input type="checkbox" name="articletags_birds" value="Birds" id="articletags_0" />
<input type="checkbox" name="articletags_southamerica" value="South America" id="articletags_1" />
但我不知道我应该怎么做。
答案 0 :(得分:2)
if ($_POST['articletags_birds'] == 'on')
{
mysql_query("INSERT INTO tags SET id='$article_id', tag_content='articletags_birds'");
}
对其他标签执行相同操作。如果您的数字非常大(5+),或者希望用户输入自己的标签,请执行以下操作:
foreach ($_POST as $key=>$value)
{
if (strpos($key, 'articletags_') === 0) //identity, otherwise false will set this off
{
mysql_query("INSERT INTO tags SET id='$article_id', tag_content='$value'");
}
}
注意:
1。)如果没有选中复选框,将不会发送POST!
2。)strpos将检查标签是否以articletags _
开头3.)请ESCAPE查询!我只是简而言之,但可以在这里注入恶意PHP
评论我是否不清楚/它是否仍在工作
答案 1 :(得分:1)
我不是100%你的问题 但是:
然后在生成表单时更新文章 我会从数据库中获取所有标签并将它们插入循环中,如下所示:
<input type="checkbox" name="tagArray[]" value = '$tagId' />$tagName
然后提交表格后我会 如果在post请求中设置了这些标记中的任何一个,则检入循环 创建新的articles_tags 像这样:
if(isset($_POST['tagArray']))
{
$tagArray = $_POST['tagArray'];
foreach($tagArray as $tagId)
{
mysql_query('...');
// insert new articles_tags with tag_id = $tagId and article_id =$article_id
}
}