1

今すぐサインアップしようとしています!members_tレストランのウェブサイトのエリアで、データベースのテーブルに新しいメンバーのデータを挿入しmembers、すべてが で実行されているとしlocalhostます。私は目的のためにPHPとHTMLを使用しています。さらに、完全に機能している別のファイルでjavaScriptを使用してフォーム検証を行っています!

PHP のコード:

<?php
$user="root";
$password="";
$database="members";
$con = mysql_connect('localhost',$user,$password);
if (!$con)
{
    die('Could not connect: ' . mysql_error());
}
mysql_select_db($database, $con) or die( "Unable to select database");
if(isset($_POST['sign_up']) && !empty($_POST['sign_up']))
{
    $sql = "INSERT INTO members_t('Name', 'Email', 'Password', 'Phone', 'Address', 'Sex', 'More') VALUES('".$_POST['username']."','".$_POST['email']."','".$_POST['passid_1']."','".$_POST['zip']."','".$_POST['address']."','".$_POST['sex']."','".$_POST['desc']."');";
    $resultDI = mysql_query($sql, $con) or die(mysql_error());
    mysql_close($con);
    echo "Successfolly run database query!";
}
else 
{
    echo("Failed to update database!!!");
}
?>

HTML のコード:

<html>
<body>
<h2 class="letter_spacing">Not a Member?<span><br>Sign Up Now:</br></span></h2>
<form id = "register" name="registration" method = "post" onSubmit="return formValidation();">
<ul>
<li><label for="username">* Full Name:</label></li>
<li><input type="text" name="username" size="50" /></li>
<li><label for="email">* Email:</label></li>
<li><input type="text" name="email" size="50" /></li>
<li><label for="passid_1">* Desired Password:</label></li>
<li><input type="password" name="passid_1" size="12" /></li>
<li><label for="passid_2">* Re-Enter Password:</label></li>
<li><input type="password" name="passid_2" size="12" /></li>
<li><label for="zip">* Contact Number:</label></li>
<li><input type="text" name="zip" /></li>
<li><label for="address">* Address:</label></li>
<li><input type="text" name="address" size="50" /></li>
<li><label id="gender">* Sex:</label></li>
<li><input type="radio" name="msex" value="Male" /><span>Male</span></li>
<li><input type="radio" name="fsex" value="Female" /><span>Female</span></li>
<li><label for="desc">Anything More:</label></li>
<li><textarea name="desc" id="desc" cols="40" rows="4"></textarea></li>
<li><label for="note" ><h6>Note: All feilds marked with * are necessary</h6></label></li>
<li><input class="button1" type="submit"  name="sign_up" value="Sign Up!" /></li>
</ul>
</form>
</body>
</html>

コードを insert.php という別のファイルに保存しようとしましたが、まだ役に立たない HTML フォーム タグにアクション フィールドを追加しました。

データベースにデータを挿入できません。PHPコードは決して

if(isset($_POST['sign_up']) && !empty($_POST['sign_up']))

ブロック。

4

2 に答える 2

0

これを試して:

<form id="register" action="" method="post" name="registration" onSubmit="return formValidation();">
    <input type="text" name="username" size="50" />
    <input type="text" name="email" size="50" />
    <input type="password" name="passid_1" size="12" />
    <input type="password" name="passid_2" size="12" />
    <input type="text" name="zip" />
    <input type="text" name="address" size="50" />
    <input type="radio" name="sex" value="Male" /><span>Male</span>
    <input type="radio" name="sex" value="Female" /><span>Female</span>
    <textarea name="desc" id="desc" cols="40" rows="4"></textarea>
    <input class="button1" type="submit"  name="sign_up" value="Sign Up!" />
</form>

<?php
if (isset($_POST['sign_up']) && !empty($_POST['sign_up'])) {
    // escape all submitted data before inserting into database
    foreach ($_POST as $key => $value) {
        $_POST[$key] = mysql_real_escape_string(strip_tags($value));
    }

    $result = mysql_query("
        INSERT INTO members_t (Name, Email, Password, Phone, Address, Sex, More)
        VALUES ('{$_POST['username']}', '{$_POST['email']}', '{$_POST['passid_1']}', '{$_POST['zip']}', '{$_POST['address']}', '{$_POST['sex']}', '{$_POST['desc']}')
    ") or die(mysql_error());

    if (mysql_affected_rows() == 1) {
        echo "Successfully run database query!";
    } else {
        echo("Failed to update database!!!");
    }
}
?>

ボタンの名前は、radioコードのように「msex」や「fsex」ではなく、同じ「sex」にする必要があることに注意してください。そしてaction、タグに属性を追加し、form簡単にわかるようにその他の変更を加えました。

于 2012-12-09T16:17:43.837 に答える
0

まず第一に、コードを少しきれいにして、見栄えがよく滑らかに見えるようにしました。次に、作成した !empty 部分を削除しました。既に isset を使用しているときに、実際に空であることを確認する理由がわかりません。HTML:

<?php
$hostname = "";
$user = "root";
$password = "";
$database = "members";

$desc = $_POST['desc'];

$con = mysql_connect($hostname, $user, $password);
if (!$con)
{
    die('Could not connect: ' . mysql_error());
}
mysql_select_db($database, $con) or die( "Unable to select database");
if(isset($_POST['sign_up']))
{
    if(isset($_POST['username'])){
        $username = $_POST['username'];
    }
    else {
        echo "The username is not set"; die;
    }
    if(isset($_POST['email'])){
        $email = $_POST['email'];
    }
    else {
        echo "The email is not set"; die;
    }
    if(isset($_POST['zip'])){
        $zip = $_POST['zip'];
    }
    else {
        echo "The zip code is not set"; die;
    }
    if(isset($_POST['address'])){
        $address = $_POST['address'];
    }
    else {
        echo "The gender is not set"; die;
    }
    if(isset($_POST['sex'])){
        $sex = $_POST['sex'];
    }
    else {
        echo "The gender is not set"; die;
    }
    if(isset($_POST['passid_1'])){
        $passid = $_POST['passid_1'];
    }
    else {
        echo "The password is not set"; die;
    }
    if(isset($_POST['passid_2'])){
        $passid2 = $_POST['passid_2'];
    }
    else {
        echo "The re-entered password is not set"; die;
    }

    if($passwid == $passid2){
        $correctpid = $passwid;
    }
    else {
        echo "The passwords do not match"; die;
    }
    $sql = "INSERT INTO members_t('Name', 'Email', 'Password', 'Phone', 'Address', 'Sex', 'More') VALUES('$username', '$email','$correctpid', '$zip', '$address', '$sex', '$desc');";
    mysql_query($sql) or die(mysql_error());
    mysql_close($con);
    echo "Successfolly run database query!";
}
else 
{
    echo("Failed to update database!!!");
}
?>

すべてのフィールドにデータが入力されているかどうかを確認する php コードを作成しました。そうでない場合、サイトは停止し、エラー メッセージが表示されます。データベースに何かを設定する前に、Web サイトを強制終了します。

-- コメントの後にコードをさらに変更しました。ありがとうございます。

于 2012-12-09T16:29:24.493 に答える