私の目標は、別のフォーム(edit.php)を使用して作成されたエントリを後で編集できるようにするエントリフォーム(addnew.php)を作成することです。
現在、addnew.phpはいくつかのテキストフィールドと2つのチェックボックスを使用しており、私がやろうとしているのは、フォームからMySQLデータベースに情報を挿入することです。テキストフィールドの情報は1つのテーブルに挿入され、チェックボックスの情報は別のテーブルに挿入されます。
ただし、現在、3番目のテーブル(必要な場合)を使用して、編集フォームのaddnew.phpで使用されているのと同じ形式を使用できる交差テーブルを作成しようとしています。
つまり、addnew.phpにはいくつかのテキストフィールドとチェックボックスがあり、edit.phpもあります。違いは、edit.phpには情報が入力され、チェックボックスの場合は次のようになります。チェックすると、ユーザーはさらにチェックボックスをオンにするか、すでにチェックされているチェックボックスをオフにするかを選択できます。
私が今持っている3つのテーブルは次のとおりです。
articles:
id - articletitle - articleorganization - articledate - articleurl
tags:
id - tag_contents
articles_tags:
id - article_id - tag_id
そして、addnew.phpのコードは次のとおりです。
<?php
function renderForm($articletitle, $articleorganization, $articledate, $articleurl, $articletags )
{
?>
. . .
<td width="20%" align="right"><span class="field">Article Title:</span></td>
<td width="80%" align="left"><span class="field">
<input name="articletitle" type="text" value="<?php echo $articletitle; ?>" size="50"/>
</span></td>
</tr>
<tr>
<td align="right"><span class="field">Article Author:</span></td>
<td align="left"><span class="field">
<input name="articleorganization" type="text" value="<?php echo $articleorganization; ?>" size="50"/>
</span></td>
</tr>
<tr>
<td align="right"><span class="field">Access Date:</span></td>
<td align="left"><span class="field">
<input name="articledate" type="text" value="MM/DD/YYYY" size="50"/>
</span></td>
</tr>
<tr>
<td align="right"><span class="field">Article URL:</span></td>
<td align="left"><span class="field">
<input name="articleurl" type="text" value="<?php echo $articleurl; ?>" size="50"/>
</span></td>
</tr>
<tr>
<td align="right"><span class="field">Article Tags:</span></td>
<td align="left"><span class="field">
<input type="checkbox" name="articletags[]" value="geology" id="articletags_0" />
<input type="checkbox" name="articletags[]" value="astronomy" id="articletags_1" />
</span>
</td>
</tr>
<tr>
<td colspan="2" align="center" valign="middle"><input type="submit" name="submit" value="Add this Article" /></td>
</tr>
</table>
. . .
</html>
<?php
}
include('settings.php');
if(count($articletags) > 0)
{
$articletags_string = implode(",", $articletags);
}
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$articletitle = mysql_real_escape_string(htmlspecialchars($_POST['articletitle']));
$articleorganization = mysql_real_escape_string(htmlspecialchars($_POST['articleorganization']));
$articledate = mysql_real_escape_string(htmlspecialchars($_POST['articledate']));
$articleurl = mysql_real_escape_string(htmlspecialchars($_POST['articleurl']));
$articletags = implode(',', $_POST['articletags']);
if ($articletitle == '' || $articleorganization == '')
{
$error = 'ERROR: Please fill in all required fields!';
renderForm($articletitle, $articleorganization);
}
else
{
mysql_query("INSERT INTO articles SET articletitle='$articletitle',
articleorganization='$articleorganization',
articledate='$articledate',
articleurl='$articleurl' ")
$article_id = mysql_insert_id();
mysql_query("INSERT INTO tags SET articletags='$articletags' ");
$tag_id = mysql_insert_id();
mysql_query("INSERT INTO articles_tags SET article_id='$article_id',
tag_id='$tag_id' ")
or die(mysql_error());
header("Location:addsuccess.php");
}
}
else
{
renderForm('','','','','');
}
?>
私が今問題を抱えているのは、次に何をすべきかを正確に理解することです(2回目のINSERTの後)。私は関係を築く必要があることを知っています、しかし私は私の人生のためにそれをする方法を理解することができません。
タグをtags
テーブルに保存する必要があると思いますか?しかし、その場合、どうすればIDを取得して、記事のタグとして挿入できますか?
どんな助けでも大歓迎です。