0

基本的に、このサイトのものと同様のタグ付けシステムを備えたサイトを持っています。私のテーブル構造は次のとおりです

TOPICS      TOPIC_TAGS    TAGS
topic_id    tag_id        tag_id
topic_data  topic_id      tags

今私がやろうとしているのは、一連のクエリを実行して、トピックが投稿されたときに、関連するトピック データをトピック テーブルに入力し (現在作業中)、タグをタグ テーブルに入れ (現在作業中)、次に置くことです。リンクされた topic_ids を含む行の TAGS テーブルから TOPIC_TAGS テーブルへの tag_id (現在は機能していません)

現在、tags テーブルのように tag_ids を topic_tags に入力していません。LAST タグ情報を行に入力しているだけで、関連する topic_ids を保存していません。

これが私のコードです

$tags = isset($_POST['tags']) ? $_POST['tags'] : null;

if (is_array($tags)) {
foreach ($tags as $t) {
    // Checking duplicate
     $sql_d = "SELECT * from tags where tags='$t'"; 
      $res=mysql_query($sql_d);
      $res = mysql_num_rows($res);
    if($res<1)
    {
    // escape the $t before inserting in DB
    $sql = "INSERT INTO tags (tags) VALUES('$t')";
    mysql_query($sql);
    }
 }
} else {
echo 'Invalid tag';
}

$tag_id = isset($_POST['tag_id']) ? $_POST['tag_id'] : null;

if (is_array($tag_id)) {
foreach ($tag_id as $tid) {

    // escape the $t before inserting in DB
    $sql = "INSERT INTO topic_tags (tag_id) VALUES('$tid')";
    mysql_query($sql);
    }
 }

$sql="INSERT INTO topic_tags (tag_id)VALUES(LAST_INSERT_ID())";
$result=mysql_query($sql);


$topic_data= htmlentities($_POST['topic_data']);
$posted_by = $_SESSION['user_id'];
$posted = "date_add(now(),INTERVAL 2 HOUR)";
$invisipost = isset($_POST['invisipost']) ? $_POST['invisipost'] : 0 ;

if (($topic_data=="")) 
echo "<h2>Opps...</h2><p>You did not fill out all the required fields.</p>";

else 
$sql="INSERT INTO topics(topic_data, posted_by, posted, invisipost)VALUES('$topic_data', '$posted_by', $posted, $invisipost)";
$result=mysql_query($sql);

if($result){

$sql="INSERT INTO topic_tags (topic_id)VALUES(LAST_INSERT_ID()) WHERE topic_tags.tag_id='". $_GET['tags'] ."'";
$result=mysql_query($sql);

編集

最初にトピック データを追加し、次にタグを追加し、次に topic_tags 情報を追加したほうがよいでしょうか??

4

1 に答える 1

0

topic_tags「foreach」ループの 1 つのステップに挿入する必要があると思います。最後のクエリ

$sql="INSERT INTO topic_tags (topic_id)VALUES(LAST_INSERT_ID()) WHERE topic_tags.tag_id='". $_GET['tags'] ."'"

挿入でも更新でもなく、間違いなく間違っています

(編集)したがって、おそらく以下の行に何かが必要です:

foreach ($tag_id as $tid) {

    // escape the $t before inserting in DB
    $sql = "INSERT INTO topic_tags (topic_id,tag_id) VALUES($topic_id,$tid)";
    mysql_query($sql);
}
于 2013-07-21T15:27:56.787 に答える