0

お問い合わせフォームが 1 つあるプレーンな html サイトを設計しました。名前、住所などのフィールドがいくつかあります。送信ボタンをクリックすると、このデータがデータベースに入力されるようにしたいと考えました。XAMPPサーバーでphpmyadminを使用してデータベースとテーブルを作成しました。

私のコードは次のとおりです(hello.php):

<script>
function insert_db()
{

     <?php
     $username = $_POST['name'];
     print ($username);
     mysql_connect("localhost","root","");
     mysql_select_db("addressbook");

     mysql_query("insert into colleague values ('$username')");

     ?>


       }
 </script>

    <form  method="post">
   <input type="name" name="name" /><br />
   <input type="submit" name="mysubmit" value="Submit"  onclick="insert_db()"/>

送信ボタンをクリックすると、データベースに2 つのエントリが作成されます。1 つは空白で、もう 1 つは入力された値です。関数を一度だけ呼び出す方法は??他に方法はありますか..

4

2 に答える 2

5

繰り返しますが、JS と PHP をこのように組み合わせることはできません。

ページを右クリックして [ソースの表示] を選択すると、その理由が明確にわかります。

PHP は、ブラウザーがページを取得する前に実行されます。

したがって、フォームをロードすると空のレコードが取得され、フォームを送信すると入力されたレコードが取得$usernameされます。

于 2012-04-10T11:46:50.023 に答える
4

このようにphpとjavascriptを混在させることはできません。ご覧のとおり、PHPは、ファイル内のどこにあるかに関係なく、常にサーバー側で実行されます(PHPはJavaScriptを認識していません)。したがって、最初にページをロードすると、空の行が挿入されます($ _POST ['name']が空であるため)。次に、[送信]をクリックしても、JavaScriptコードは空ではないため、何も実行されません。フォームをサーバーに送信し、PHPコードを再度評価します。今回は、目的の効果が得られます。

これを行う適切な方法は次のとおりです。

<?php
if (!empty($_POST['name'])){ // check if form values are there
    $username = $_POST['name'];
    print ($username);
    mysql_connect("localhost","root","");
    mysql_select_db("addressbook");

    mysql_query("insert into colleague values ('$username')");
}
?>

<form  method="post">
    <input type="name" name="name" /><br />
    <input type="submit" name="mysubmit" value="Submit" />
</form>

また、最初にPHPチュートリアルを実行することもできます。

于 2012-04-10T11:49:04.347 に答える