0

次のhtmlフォームがあります。

<html>
<body>
<form action="insert.php" method="post">
Firstname: <input type="text" name="firstname" />
Lastname: <input type="text" name="lastname" />
Age: <input type="text" name="age" />
<input type="submit" />
</form>
</body>
</html>

これが .php ファイルです。

<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("my_db", $con);

$sql="INSERT INTO Persons (FirstName, LastName, Age)
VALUES
('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";

if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
echo "1 record added";

mysql_close($con);
?>

レコードが送信された後、「レコードが追加されました」などのポップアップ メッセージが 2 秒間表示されるようにするにはどうすればよいですか。

4

2 に答える 2

1

クライアント側であるため、探しているものはPHPとは関係ありません...

これを行うには 2 つの方法があります。

  • 送信後、ポップアップをレンダリングし、javascript で x 時間後に削除します...
  • フォームを ajax (javascript) で送信して結果を解析し、javascript で popup を追加します。
于 2012-07-02T15:03:53.287 に答える
1

以下を試してください。強化することもできます。

フォーム ページで、ポップアップの CSS を追加します。

//adduser.php
#popup {
    visibility: hidden; 
    background-color: red; 
    position: absolute;
    top: 10px;
    z-index: 100; 
    height: 100px;
    width: 300px
}

そしてあなたのポップアップdiv

//still adduser.php
<div id="popup">
    Record added successfully
</div>

成功後にPHPでこれを出力します

//still adduser.php - probably at the bottom of the page
<?php
    $recordAdded = false;

    if(isset($_GET['status'] && $_GET['status'] == 1)
       $recordAdded = true;

    if($recordAdded)
    {
     echo '
       <script type="text/javascript">
         function hideMsg()
         {
            document.getElementById("popup").style.visibility = "hidden";
         }

         document.getElementById("popup").style.visibility = "visible";
         window.setTimeout("hideMsg()", 2000);
       </script>';
    }
?>

スクリプトはポップアップを再表示してメッセージを表示し、2 秒後に非表示にします

jQueryでアニメーションを強化し、CSSでdivを強化できます

アップデート:

.htmlこれは、フォーム ファイルを含むを次のように変更することを前提としています。.php

//insert.php
if (!mysql_query($sql,$con))
{
  //die('Error: ' . mysql_error());
}
else
{
  // 1 record added
  //if number of rows affected > 0
  header("Location: backtoform.php?status=1"); //redirects back to form with status=1
}

コメントに記載されている提案された jQuery/Ajax メソッドも試してみてください

于 2012-07-02T15:18:30.590 に答える