0

私はphpに少し慣れていないので、助けが必要です。1つのページに、名と姓のフィールドがある小さなフォームがあります。送信時に、外部の.phpスクリプトに送信します。ここで、データベースに同じ名前の人がすでに存在するかどうかを確認します。データベースに名前を入力した人がすでにいる場合は、データベースへの書き込みをキャンセルして、htmlページに戻りたいと思います。これを実行しましたが、JSメッセージボックス「この名前の人はすでにdbに存在します!」を表示したいと思います。ベースへの書き込みがキャンセルされた場合は、入力フィールドに最後に書き込まれた値を表示します。私はたくさんの文学を読んでいて、迷子になっています。とにかく助けてくれてありがとう:)

これは私のフォームです:

<form name="form" action="write.php" method="post" onSubmit="return Validate()">
Firstname: <input type="text" name="firstname">
Lastname: <input type="text" name="lastname">
<input type="submit">
</form>

私のphpコード:

<?php
$con=mysqli_connect("localhost","root","","phptest");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
if (isset($_POST['firstname'])) { 
$firstname = $_POST['firstname'];
}
if (isset($_POST['lastname'])) { 
$lastname = $_POST['lastname'];
}
$duplicate=mysqli_query($con,"SELECT * FROM persons WHERE FirstName='$firstname'");
if(mysqli_num_rows($duplicate)>0)
{
die('Name already exists' );//I want that this message shows in html file, as alert
}
else{
$sql="INSERT INTO Persons (FirstName, LastName)
VALUES('$firstname','$lastname')";
$result=mysqli_query($con,$sql);
if (!$result)
{
die('Error: ' . mysqli_error());
}
}
header( 'Location://localhost/ivanda.php' ) ;
mysqli_close($con);

?>
4

1 に答える 1

-1

この行:

if(mysqli_num_rows($duplicate)>0)
{
die('Name already exists' );//I want that this message shows in html file, as alert
}

次のコードに変更します。

if(mysqli_num_rows($duplicate)>0)
{
echo "<script>alert('Name already exist!!!'); </script>";
echo "<script>window.location.assign('ivanda.php'); </script>"; //add this line instead of header


}

-------------------------編集済み------------------------ ----------

これを試してください:

    $duplicate=mysqli_query($con,"SELECT * FROM Persons WHERE FirstName='$firstname' limit 1");
    if(mysqli_num_rows($duplicate)>0)
    {

    $row = mysqli_fetch_assoc($duplicate);

    echo "<script>alert('Name already exist!!!'); </script>";
    echo "<script>window.location.assign('ivanda.php?firsName=".$row['FirstName']."&lastName=".$row['LastName']."'); </script>"; //add this line instead of header

    }
    else{
    $sql="INSERT INTO Persons (FirstName, LastName)
    VALUES('$firstname','$lastname')";
    $result=mysqli_query($con,$sql);
    if (!$result)
    {
    die('Error: ' . mysqli_error());
    }
    }

これにより、URLでGETを介して変数を送信します...次に、フォームに次のようなものが必要です。

<form name="form" action="write.php" method="post" onSubmit="return Validate()">
Firstname: <input type="text" name="firstname" value="<?php if(isset($_GET['firsName'])){echo $_GET['firsName'];} ?>">
Lastname: <input type="text" name="lastname" value="<?php if(isset($_GET['lastName'])) {echo $_GET['lastName'];} ?>">
<input type="submit">
</form>

PS:mysqli o PDOに行きましょう、覚えておいてください...mysql拡張機能はまもなく非推奨になります

Saludos。

于 2013-03-25T20:10:34.047 に答える