0

.asp ページに関して同様のスレッドがあることは認識していますが、調査につながる送信アクションに関連する php を含む html フォームを使用しています。

私が開発しているクライアントは、テキスト フィールドのいずれか 1 つに入力する必要がありますが、どちらも必須ではありませんが、2 つのうち 1 つを入力する必要があります。どちらでもかまいませんが、両方を空欄にすることはできません。

私は jquery を使用したくないのですが、これが必要な場合はその方法を学びます。私はこれらすべてにまったく慣れていないので、フォームを作成してデータベースに接続するだけで、多くのことを学びました笑。

以下に HTML フォームと、それがリンクされている php スクリプトを掲載しました。

<form action="insert.php" method="post">
Name: <input type="varchar" name="name" />
<span style="color: #F00">or</span> Email:
<input type="varchar" name="email" />
<input type="submit" />
</form>

PHP 'insert.php

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

mysql_select_db("gobagtoo_1", $con);

$sql="INSERT INTO name_email (name, email)
VALUES
('$_POST[name]','$_POST[email]')";

if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
else 
$url = 'tool.html';
echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL='.$url.'">';  

mysql_close($con)
?>

M

4

1 に答える 1

2

これは、JavaScript を使用するクライアント側 (フォームが表示される場所) とサーバー側 (フォーム送信後の PHP) の両方で行う必要があります。

クライアント側: 1. ページに関数 validateForm を追加します。2. name 要素と email 要素に id 属性を追加します。3. form タグに onsubmit 要素を追加します。

    <html>
    <head>
    <script language="javascript">
    function validateForm(){
        var value1 = document.getElementById('nameId').value;
        var value2 = document.getElementById('emailId').value;
        if( value1 != "" || value2 != "" ) 
        {
            return true;    
        }
        alert("You must enter a value");
        return false;
    }
    </script>
    </head>

    <body>
    <form action="insert.php" method="post" onsubmit="return validateForm();">
    Name: <input type="text" name="name" id="nameId" /> 
    <span style="color: #F00">or</span> Email: <input type="text" name="email" id="emailId" />
    <input type="submit" /> 
    </form> 
    </body>
    </html>

PHP 側:

    <?PHP

    function makeSafeish( $value ){
        return mysql_escape_real_string( $value );
        // If you put this in a function, you can do more w/ it. I don't use this as is but don't want to be judged by the community here for my bad use :P
    }

    if( strlen( $_POST['name'] ) > 0 && strlen( $_POST['email'] ) > 0 ){
        $con = mysql_connect("localhost","******","******"); 
        if (!$con) { 
            die('Could not connect: ' . mysql_error()); 
        }  
        mysql_select_db("*****", $con); 
        $sql="INSERT INTO name_email (name, email) VALUES ('".makeSafeish( $_POST["name"] )."','".makeSafeish( $_POST["email"] )."')"; 
        if ( ! mysql_query( $sql, $con ) ) { 
            die('Error: ' . mysql_error()); 
        } else  {
            $url = 'tool.html'; 
        }

        echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL='.$url.'">';    
        mysql_close($con); // you're not gonna get here because of the above line.
    }else{
        echo 'You must enter either an email or name.";
    }
    ?> 
于 2012-02-19T19:10:05.427 に答える