0

我想以不同的方式插入多个条目,即多个条目到数据库中,但输入来自相同的表单。

我有一个名为 questionForm 的表格。它是一种静态表单,具有用于插入问题的文本字段和相应的文本字段,例如为该问题分配的标记、该问题的复杂程度、该问题中存在的tag1 到 tag8(该问题中的关键字)等。

现在我希望在提交表单时将这些问题中的每一个都插入我的数据库中。但在将表格中输入的每个问题的标签与数据库中每个问题的标签进行比较之前,不要先确保没有重复。我该怎么做呢。

我知道通过一个简单的表单将一个条目插入到数据库中。有人可以帮助我吗?

我现在已经完成了几乎一半的编码。我现在可以将条目插入表单,但它不能正确检查重复项。这是我的问题表格和 php 文件 -

问题形式 测试任务

输入主题详细信息。

年月: 学期: 学科: 分部:

<h3>Enter Questions</h3><br>
<h3>Question 1: Five marks each.<br></h3>


a) <input type="text" name="field1[]" size=45>* Marks: <input type="text" name="field2[]"> Complexity:<input type="text" name="field3[]"> Chapter No.: <input type="text" name="field4[]"> Tags: <input type="text" name="field5[]" size=10> <input type="text" name="field6[]"   size=10> <input type="text" name="field7[]" size=10> <input type="text" name="field8[]" size=10> <input type="text" name="field9[]" size=10> <br>

b) <input type="text" name="field1[]" size=45>* Marks: <input type="text" name="field2[]"> Complexity:<input type="text" name="field3[]"> Chapter No.: <input type="text" name="field4[]"> Tags: <input type="text" name="field5[]" size=10> <input type="text" name="field6[]"   size=10> <input type="text" name="field7[]" size=10> <input type="text" name="field8[]" size=10> <input type="text" name="field9[]" size=10> <br>

<p><input  type="submit" name="submit" value="Submit" />
    <input type='reset' name='Cancel' value='Cancel' /></p>
</form>
</body>
</html>

任务.php

include('connectionfile.php');

$cnt = count($_POST['field1']);
$my= $_POST['my'];
$sem= $_POST['sem'];
$subj= $_POST['subj'];
$branch= $_POST['branch'];

if ($cnt > 0) {

        for ($i=0; $i<$cnt; $i++) 
    {

    $t1 = $_POST['field5'][$i]; 
    $t2 = $_POST['field6'][$i];
    $t3 = $_POST['field7'][$i];
    $t4 = $_POST['field8'][$i];
    $t5 = $_POST['field9'][$i];

$result = "SELECT * FROM paper WHERE (((`tag1` LIKE '%".$t1."%') OR (`tag1` LIKE '%".$t2."%') OR (`tag1` LIKE '%".$t3."%') OR (`tag1` LIKE '%".$t4."%') OR (`tag1` LIKE '%".$t5."%')) AND ((`tag2` LIKE '%".$t2."%') OR (`tag2` LIKE '%".$t3."%') OR (`tag2` LIKE '%".$t4."%') OR (`tag2` LIKE '%".$t5."%')) AND ((`tag3` LIKE '%".$t3."%') OR (`tag3` LIKE '%".$t4."%') OR (`tag3` LIKE '%".$t5."%')) AND ((`tag4` LIKE '%".$t4."%') OR (`tag4` LIKE '%".$t5."%')) AND ((`tag5` LIKE '%".$t5."%')) ) ;" ; // which checks if the tags in that question match with the tags of any other question in the db.

$sql= mysql_query($result) OR die(mysql_error()) ;

$duplicates = mysql_num_rows($sql);


if( $duplicates > 0)
echo "No entry entered for Entry #$i since it may lead to duplicates."; // no entry is inserted in insertArr[] if it leads to duplication

else
  $insertArr[] = "('" .$_POST['field1'][$i]. "', '" .$_POST['field2'][$i]. "', '" .$_POST['field3'][$i]. "', '" .$_POST['field4'][$i]. "', '" .$_POST['field5'][$i]. "', '" .$_POST['field6'][$i]. "', '" .$_POST['field7'][$i]. "', '" .$_POST['field8'][$i]. "', '" .$_POST['field9'][$i]. "', '".$my."', '".$sem."', '".$subj."', '".$branch."')";
        }

$query1 = "INSERT INTO paper (question, marks_allotted, complexity, chp_no, tag1, tag2, tag3, tag4, tag5, monthandyear, semester, subject_name, branch_name) VALUES " . implode(", ", $insertArr);

mysql_query($query1) or trigger_error("Insert failed: " . mysql_error());


    }

echo("<pre>\n");
print_r($_POST);
echo("</pre>\n");

mysql_close($id_link);
?> 

运行时,尽管我输入的问题与数据库中的现有问题没有匹配的标签,但在运行时给了我以下信息:没有为条目 #0 输入条目,因为它可能导致重复。没有为条目 #1 输入条目,因为它可能导致重复。注意:未定义的变量:第 41 行的 insertArr

警告:implode() [function.implode]:第 41 行传递的参数无效

注意:插入失败:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取正确的语法,以便在第 43 行的 '' 附近使用

请指导我

4

2 回答 2

0

this code from the first answer will do that

if ($num > 0) {

echo "There are matches with one or more tags you've entered"; }

if the number is greater than one this code will execute and the insert block will be ignored

于 2013-03-31T16:37:18.740 回答
0

好吧,你有例如

<input type="text" name="tag1" />
<input type="text" name="tag2" />

从表单发布到 PHP

然后你在 PHP

$tag1 = $_POST['tag1']; $tag2 = $_POST['tag2'];
$sql = "SELECT tag1, tag2 FROM db1 WHERE tag1 = '$tag1' OR tag2 = '$tag2';";
//query the $sql value i.e. with $query = mysql_query($sql) (which is not good example since its deprecated)
//then make a check:
$num = mysql_num_rows($result);
if ($num > 0) {
echo "There are matches with one or more tags you've entered";
}
else {
mysql_query("INSERT INTO db1 (tag1, tag2) VALUES ('$tag1', '$tag2')");
echo "Tags inserted";
}

请记住这个例子很差而且设计得不好,但我希望你明白这个想法。对于找到的行,其他 sql 库中有等效的方法,因此您必须选择是否存在匹配项,如果为真 - 让它们更改其标签。

于 2013-03-31T15:57:58.253 回答