1

我的 index.php 中有两个表单,我试图让他们分别提交和发布他们的数据

表格 1

echo '<form action="process.php?type=news" method="post">';
echo '<table cellspacing="0"><tr><th>';
echo 'Add News to News Feed';
echo '</th></tr><tr><td>';
echo 'Title:<br /><input name="newstitle" type="text" id="add" style="height:16px;width:525px;" size="80" maxlength="186" /><br />';
echo 'Main Body Text:<br /><textarea name="newsfeed" id="add" style="width:525px;height:78px;" maxlength="2000" ></textarea>';
echo '<input style="float:right;margin-top:5px;" id="button" type="submit" value="Submit" />';
echo '</td></tr></table></from>';

和表格 2

echo '<form action="process.php?type=suggest" method="post">';
echo '<table cellspacing="0"><tr><th>';
echo 'Suggest Additions to the Intranet';
echo '</th></tr><tr><td>';
echo '<textarea name="suggest" id="add" style="width:330px;height:60px;" maxlength="800" ></textarea>';
echo '<input style="float:right;margin-top:5px;" id="button" type="submit" value="Submit" />';
echo '</td></tr></table></from>';

我希望这些都在按下提交按钮后发布并执行操作,但目前第二个表单提交给第一个表单操作

我怎样才能解决这个问题???

编辑:我也将 .PHP 用于索引和进程页面,然后使用它将表单回显到页面上

这里也是 process.php 数据

$type=$_REQUEST['type'];
$suggest=$_POST['suggest'];
$newstitle=$_POST['newstitle'];
$news=mysql_real_escape_string($_POST['newsfeed']);

if ($type == "news")
{
  $sql=mysql_query("SELECT * FROM newsfeed WHERE title = ('$newstitle')");
  $number_of_rows = mysql_num_rows($sql);
  if ($number_of_rows > 0)
  {
    echo 'This Title is Already Taken';
  }
  else
  {
    $sql="INSERT INTO newsfeed (title, news) VALUES ('$newstitle','$news')";    
    if (!mysql_query($sql,$con))
    {
      die('Error: ' . mysql_error());
    }
    header('Location: index.php');
    exit;
  }
}
elseif ($type == "suggest")
{
  $sql="INSERT INTO suggestions VALUES ('$suggest')";
  if (!mysql_query($sql,$con))
  {
    die('Error: ' . mysql_error());
  }
  header('Location: index.php');
  exit;
}
4

4 回答 4

2

会不会是你不是用 关闭表单</form>,而是用关闭表单</from>,所以第二个表单的代码实际上仍然第一个表单内,因为标签永远不会关闭?

于 2012-06-03T04:28:04.057 回答
0

尝试为每个表单点击提交,以便在其提交按钮 html 中输入:

onclick="document.forms["myform1"].submit();" 对于表格 2 放 onclick="document.forms["myform2"].submit();"

于 2012-06-03T04:32:51.847 回答
0

我不确定你想要实现什么,所以这是我的假设,1.你的表单提交错误,例如,第二个表单提交第一个表单的数据或 2.你想同时提交 1 个。

为 1:

做这个。

<form id="form1" action="process.php" method="POST">
<input type="hidden" name="type" value="news">
....
</form>

注意拼写 /form 不是 /from

<form id="form2" action="process.php" method="POST">
<input type="hidden" name="type" value="suggest">
....
</form>

注意拼写 /form 不是 /from

于 2012-06-03T04:36:13.717 回答
0

一些指示:

与其呼应很多次,呼应一次就够了!记住回声会减慢你的脚本。此外,我不会将类型作为 $_GET 传递,对于表单来说,post 总是更安全,您可以使用隐藏字段来添加类型:

<?php 
echo '
<form action="process.php" method="post">
<input type="hidden" name="type" value="news">
...
...
</form>';//Not </from>
?>

然后使用 PHP 部分使用 switch case 而不是 if elses,添加功能然后与另一个 ifelse 拆分会更容易,而且默认块可用于任何不匹配的内容,例如 if else 语句中的最后一个 else。

<?php 
$type = $_POST['type'];

switch($type){
    case "news":
        ...
        break;
    case "suggest":
        ...
        break;
    default:
        //default if different type or no type is set
        break;
}
?>

也转移到 PDO 或为您的 mySQL 准备的 mysqli_ 函数更安全。

于 2012-06-03T04:41:30.207 回答