0

4つのテキストフィールドと2つのチェックボックスを備えたPHPフォームがあります。チェックボックスは、テキストフィールドを使用して入力された記事に適用できる「タグ」です。

例えば:

情報:

タイトル-南アメリカの渡り鳥の自動詞関係の定義

著者-著者。S.ウェリントン

アクセス日-2012年6月19日

URL - 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" />

しかし、私はそれをどのように行うべきかわかりません。

4

2 に答える 2

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.)クエリをエスケープしてください!すべてを省略しただけですが、悪意のあるPHPをここに挿入することができます

不明な場合/それでも機能しない場合はコメント

于 2012-06-20T01:29:30.510 に答える
1

私はあなたの問題が100%ではありませんが:

  1. オフコース私はデータベースにタグ名を保持します
  2. 次に、記事を更新するフォームを生成するときに、データベースからすべてのタグを取得し、次のようにループに挿入します。

    <input type="checkbox" name="tagArray[]" value = '$tagId' />$tagName
    
  3. 次に、フォームを送信した後、これらのタグのいずれかが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
          }     
    }
    
于 2012-06-20T01:30:31.957 に答える