У меня есть PHP-форма, которая использует флажки. У меня также есть база данных MySQL с 3 таблицами.
Одна из таблиц называется TAGS, а ее столбцы – ID и ARTICLE_CONTENTS.
Другая таблица в базе данных называется СТАТЬИ, а ее столбцы – ID, ARTICLETITLE, ARTICLEORGANIZATION, ARTICLEDATE и ARTICLEURL.
Третья таблица называется ARTICLES_TAGS, а ее столбцы ARTICLE_ID и TAG_ID
Таблица TAGS содержит 87 записей, которые похожи на:
1 | geology 2 | astronomy 3 | chemistry
Целью базы данных является создание связей между TAGS и СТАТЬЯМИ. Для этого в форме PHP используются флажки, которые пользователь может проверить при добавлении новой записи в базу данных. Эти флажки представляют теги в таблице TAGS. Так, например, для каждой записи в таблице TAGS будет установлен флажок: [] геология [] астрономия [] химия … и т. Д. …
То, что я пытаюсь сделать, это вставить информацию с помощью текстовых полей (название статьи, организация статьи, дата статьи и URL-адрес статьи) и использовать mysql_insert_id (), чтобы получить идентификатор этой вставки и связать этот идентификатор с идентификатором тег, связанный с отмеченными флажками.
Так, например, если флажок геологии должен быть проверен, и если в таблице TAGS запись для геологии должна быть:
02 | geology
И, если идентификатор для вставленной статьи оказался 142
затем
в ARTICLES_TAGS будет добавлена новая запись:
Article_ID | TAG_ID 142 | 02
Тем не менее, всякий раз, когда я выполняю свою форму, я не получаю записей в таблице ARTICLES_TAGS, хотя информация ВСТАВЛЯЕТСЯ в таблицу ARTICLES должным образом. Я не могу понять, где я ошибся.
Я работаю над формулировкой этого вопроса в течение нескольких дней, и я думаю, теперь ясно. Пожалуйста, дайте мне знать, если должно быть какое-либо разъяснение.
Код:
<?php function renderForm($articletitle, $articleorganization, $articledate, $articleurl, $articletags ) { ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> . . . </head> <body> <div class="container"> <div class="header"> . . . </div> <div class="sidebar1"> . . . </div> <div class="content"> <div id="stylized" class="myform"> <form id="form" name="form" action="" method="post"> <h1>Create a new entry in the database</h1> <table width="76%" border="0" cellpadding="6"> <tr> <td colspan="2"><legend></legend></td> </tr> <tr> <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="1" id="articletags_0" />Science <input type="checkbox" name="articletags[]" value="2" id="articletags_1" />Geology </span></td> </tr> <tr> <td colspan="2" align="center" valign="middle"><input type="submit" name="submit" value="Add this Article" /></td> </tr> </table> </form> </div> <div class="footer"> . . . </div> </body> </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'])); { } 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(); foreach ($_POST['articletags'] as $newtag) { mysql_query(" INSERT INTO articles_tags article_id='$article_id', tag_id='$newtag' "); } header("Location:addsuccess.php"); } } else { renderForm('','','','',''); } ?>
в<?php function renderForm($articletitle, $articleorganization, $articledate, $articleurl, $articletags ) { ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> . . . </head> <body> <div class="container"> <div class="header"> . . . </div> <div class="sidebar1"> . . . </div> <div class="content"> <div id="stylized" class="myform"> <form id="form" name="form" action="" method="post"> <h1>Create a new entry in the database</h1> <table width="76%" border="0" cellpadding="6"> <tr> <td colspan="2"><legend></legend></td> </tr> <tr> <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="1" id="articletags_0" />Science <input type="checkbox" name="articletags[]" value="2" id="articletags_1" />Geology </span></td> </tr> <tr> <td colspan="2" align="center" valign="middle"><input type="submit" name="submit" value="Add this Article" /></td> </tr> </table> </form> </div> <div class="footer"> . . . </div> </body> </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'])); { } 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(); foreach ($_POST['articletags'] as $newtag) { mysql_query(" INSERT INTO articles_tags article_id='$article_id', tag_id='$newtag' "); } header("Location:addsuccess.php"); } } else { renderForm('','','','',''); } ?>