拆分标签并将其提交到数据库

时间:2012-05-15 14:42:39

标签: php javascript sql database tags

我正在尝试创建一个用于分割标记的javascript(用户提供的标记,用逗号(,)分隔它们)并在我的数据库中以不同的行传递它们但具有相同的ID。 我有这个代码:

<form name="formatform" method="post" onsubmit="return validate_format_form()" action="formatsubmit.php">
<p>
Συντομος Τιτλος:<input type="text" name="titlos" value="">
Συντομη περιγραφη:<input type="text" name="perigrafi" value="">
</p>
<p>
Τοποθεσια:<input type="text" id="loc" name="topothesia" value="">
Tags:<input type="text" name="tags" value="">
**Οι ετικέτες πρέπει να χωρίζονται με κόμμα
</p>
.
.
.
</form>

并在formatsubmit.php中,这是将这些代码传递给数据库的人:

$query= " INSERT into photos(`title`,`description`,`location`,`privilages`,`ph_tags`) VALUES ('".$_POST['titlos']."','".$_POST['perigrafi']."','".$_POST['topothesia']."','".$_POST['radio_check']."','".$_POST['tags']."') ";
$result= mysql_query($query,$con);

如果用户提供3个标签(用逗号分隔),我想拆分它们并将它们传递给不同行的数据库。 我怎么能这样做?

3 个答案:

答案 0 :(得分:1)

如何使用逗号作为分隔符将标记输入拆分为数组,然后迭代标记并为每个标记创建一个插入语句? E.g。

$tag_array = explode(",", $_POST['tags']);
foreach ($tag_array as $tag) {
  $query= " INSERT into photos(`title`,`description`,`location`,`privilages`,`ph_tags`) VALUES ('".$_POST['titlos']."','".$_POST['perigrafi']."','".$_POST['topothesia']."','".$_POST['radio_check']."','".$tag."') ";
  $result= mysql_query($query,$con);
}

答案 1 :(得分:0)

如果您想使用PHP,请使用explode(",", $input);。要在JavaScript中执行此操作,请执行input=input.split(",")。然后,您将拥有一组可以按编号引用的标记(例如$input[0]...$input[x](PHP)或input[0]...input[x](JavaScript))。

答案 2 :(得分:0)

您还应该处理用户输入,因为您将获得输入双标签的用户,,使爆炸具有空值以及使用POST,就像您将进行sql注入一样:

<?php 
function get_tags($tags){
    $ret=array();
    $tags=explode(',',strtolower($tags));
    foreach($tags as $tag){
        if($tag==''){}else{
            $ret[]=ucfirst(trim($tag));
        }
    }
    return $ret;
}

function insert_photo_tags($tags){
    array_walk($_POST,'mysql_real_escape_string');
    foreach ($tags as $tag) {
        $query = " INSERT INTO photos(`title`,`description`,`location`,`privilages`,`ph_tags`) 
                   VALUES ('".$_POST['titlos']."','".$_POST['perigrafi']."','".$_POST['topothesia']."','".$_POST['radio_check']."','".$tag."') ";
        mysql_query($query);
    }
}

//Test Input (?tags=php,mySQL,http,bLa,,,,,,123)

$tags = get_tags(mysql_real_escape_string($_POST['tags']));

//Do your insert with the array
insert_photo_tags($tags);

print_r($tags);
/*
Array
(
[0] => Php
[1] => Mysql
[2] => Http
[3] => Bla
[4] => 123
)
*/
?>