文本输入(用逗号分隔)mysql输入为数组

时间:2012-05-31 17:11:42

标签: php mysql arrays search tags

我有一个表单,我正在尝试实现标记系统。

这只是一个:

<input type="text"/> 

值以逗号分隔。

e.g. "John,Mary,Ben,Steven,George"

(列表可以是用户希望的列表。)

我想获取该列表并将其作为数组插入到我的数据库中(如果用户需要,用户可以在以后添加更多标记)。我认为它不一定是一个阵列,这似乎是最好的。

所以,我的问题是如何获取该列表,将其转换为数组,回显数组(以逗号分隔的值),稍后添加更多值,并使数组可供其他用户搜索。我知道这个问题看起来很简单,但不管我做了多少阅读,我似乎无法将我的大脑包裹起来。一旦我认为我弄清楚了,就会出现问题。一个简单的例子将非常感激。谢谢!

这是我到目前为止所得到的:

$DBCONNECT
$artisttags = $info['artisttags'];
$full_name = $info['full_name'];
$tel = $info['tel'];
$mainint = $info['maininst'];
if(isset($_POST['submit'])) {
  $tags = $_POST['tags'];
  if($artisttags == NULL) {
    $artisttagsarray = array($full_name, $tel, $maininst);
    array_push($artisttagsarray,$tags);
    mysql_query("UPDATE users SET artisttags='$artisttagsarray' WHERE id='$id'");
    print_r($artisttagsarray); //to see if I did it right
    die();
  } else {
    array_push($artisttags,$tags);  
    mysql_query("UPDATE users SET artisttags='$artisttags' WHERE id='$id'");
    echo $tags;
    echo " <br/>";
    echo $artisttags;
    die();
    }
}

1 个答案:

答案 0 :(得分:0)

创建一个新表,我们称之为“tags”:

tags
- userid
- artisttag

每个用户在此表中可能有多行(每行有一个不同的标记)。查询时,使用JOIN操作来组合这两个表。例如:

SELECT username, artisttag
FROM users, tags
WHERE users.userid = tags.userid
AND   users.userid = 4711

这将为您提供有关身份4711的用户的所有信息。

为此类工作构建了关系数据库系统,因此不会浪费空间和性能。实际上,如果您希望能够搜索标签,这是执行此操作的最佳方式。