1

index.php に 2 つのフォームがあり、データを別々に送信して POST させようとしています。

フォーム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>';

送信ボタンを押した後にこれらの両方を投稿してアクションを実行したいのですが、現在、2番目のフォームは最初のフォームアクションに送信されます

どうすればこれを修正できますか???

編集: また、インデックス ページとプロセス ページの両方に .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>、2 番目のフォームのコードは実際にはまだ最初のフォーム内にありますか?

于 2012-06-03T04:28:04.057 に答える
0

いくつかのポインタ:

何度もエコーアウトするのではなく、一度エコーアウトするだけで十分です。エコーによってスクリプトの速度が低下することを忘れないでください。また、タイプを$ _GETとして渡すことはしません。投稿はフォームに対して常に安全です。非表示のフィールドを使用して、タイプを追加できます。

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

次に、PHPの部分でif elseの代わりにswitchケースを使用すると、機能を追加してから別の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 に答える
0

各フォームのクリック時に送信を実行して、送信ボタンのhtmlに次のように入力してください。

onclick="document.forms["myform1"].submit();" およびフォーム2の場合 onclick="document.forms["myform2"].submit();"

于 2012-06-03T04:32:51.847 に答える
0

あなたが何を達成したいのか正確にはわからないので、私の仮定は次のとおりです。

1:

これを行う。

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

/from ではなく /form の綴りに注意してください

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

/from ではなく /form の綴りに注意してください

于 2012-06-03T04:36:13.717 に答える