0

タグを分割する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 つのタグ (カンマで区切られている) を指定した場合、それらを分割してデータベースに別の行で渡したいと考えています。どうやってやるの?

4

3 に答える 3

1

コンマを区切り文字として使用してタグ入力を配列に分割し、タグを繰り返し処理して、タグごとに1つの挿入ステートメントを作成するのはどうですか? 例えば

$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);
}
于 2012-05-15T14:52:48.170 に答える
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
)
*/
?>
于 2012-05-15T15:03:12.267 に答える
0

PHPでやりたい場合は、explode(",", $input);. JavaScript で行うには、input=input.split(","). これで、番号で参照できるタグの配列が得られます (例: $input[0]...$input[x](PHP) またはinput[0]...input[x](JavaScript))。

于 2012-05-15T14:48:59.570 に答える