0

皆さんへの簡単な質問-データベース内のテーブルにデータを送信しようとしていますが、テーブルに無数の空白行を追加し続ける前に、正常に送信されます。

コードは次のとおりです。

<?php 
$name = $_POST['name'];
$email = $_POST['email'];
$about = $_POST['about'];
$msg  = $_POST['message'];

$con = mysql_connect("DATABASE","USERNAME","PASSWORD");
if (!$con) {
    die('Could not connect: ' . mysql_error());
}
$database = mysql_select_db("benpearl_co_uk_db", $con);
if(!$database) {
    die('Houston, we have a problem: ' . mysql_error());
}

    $sql="INSERT INTO contact (name, email, about, message) VALUES ('$name', '$email', '$about', '$msg')";

    if (!mysql_query($sql,$con))
        {
            die('Error: ' . mysql_error());
        }

?>
    <script language="JavaScript">
    self.location="?email=1";
    </script>

繰り返しになりますが、データベースに接続したり、フォームの値をテーブルに正常に配置したりすることに問題はありません。ただし、値が入力されると、ページは継続的に更新され、テーブルに空白行が追加されます。

ここの私のコードの何が問題になっていますか?

4

4 に答える 4

0

次のコマンドを使用して、常に同じページにリダイレクトします。

self.location="?email=1";

次のようなものを試してください:

$sql = "INSERT INTO contact (name, email, about, message) VALUES ('$name', '$email', '$about', '$msg')";

if (mysql_query($sql, $con))
{
    header('Location: $other_page');
}

die('Error: ' . mysql_error());
于 2012-12-18T11:14:55.450 に答える
0

問題はここにあります:

<script language="JavaScript">
self.location="?email=1";
</script>

Self.locationはブラウザをリダイレクトします。URLパラメータを追加して同じページにリダイレクトしますemail = 1。これにより、もちろんスクリプトが再度実行され、無限ループが発生します。有効な値が含まれているかどうかを確認$_POSTしてから、データベースに挿入する必要があります。

于 2012-12-18T11:11:40.233 に答える
0

まあ、それはまさにあなたのコードがすることです:

  • サーバー側でDB行を書き込みます
  • クライアントにページを返します。<script language="JavaScript">self.location="?email=1";</script>
  • これにより、ページが更新されます。

JS部分を条件付きにする必要があります。

于 2012-12-18T11:12:07.410 に答える
0

がある場合は、[送信]ボタンがクリックされたときにのみ挿入を実行する必要があります。これにより、ページを再度ロードしても、データが再度挿入されることはありません。

これをやってみてください

   if (isset($_POST['submit']))     //then run your insert sql
   {

    $sql="INSERT INTO contact (name, email, about, message) VALUES ('$name', '$email', '$about', '$msg')";

    if (!mysql_query($sql,$con))
     {
        die('Error: ' . mysql_error());
     }
     }
于 2012-12-18T11:25:16.400 に答える