0

以下を設定できるようにしたいです。

1) メールが既に存在する場合はエラーを返します 2) 成功した場合はエラーを返します 3) エラーの場合はエラーを返します

現時点では機能しますが、同じメールアドレスを追加して正常な応答を送信できますが、既存のメールに追加する必要があります

$('form').submit(function(){

// check if passwords match; you might want to do more thorough validation
    var hasError = false;
    var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
    var emailaddressVal = $("#email").val();
    if(emailaddressVal == '') {
            $("#email").after('<span class="error">Please enter your email address.</span>');
            hasError = true;
    }

    else if(!emailReg.test(emailaddressVal)) {
            $("#email").after('<span class="error">Enter a valid email address.</span>');
            hasError = true;
    } else if(hasError == false) {
            // make ajax post request and store the response in "response" variable
     $.post('submit.php', $(this).serialize(), function(response){

         // process response here (assume JSON object has boolean property "ok"
         if(response.ok==true){
             // sweet, it worked!
             alert('OK!');
         }else{
             // handle error
             alert('Ooops');
         }
     }, 'json');
    }

    // stop the form from being submitted
return false;
});

そして、phpは次のとおりです。

<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);

$con = mysql_connect("localhost","root",""); //Replace with your actual MySQL DB Username and Password
if (!$con) { die('Could not connect: ' . mysql_error()); } 
mysql_select_db("table", $con); //Replace with your MySQL DB Name

$first_name=mysql_real_escape_string($_POST['firstname']); 
$last_name=mysql_real_escape_string($_POST['lastname']); 
$email=mysql_real_escape_string($_POST['email']); 

$sql="INSERT INTO email_list (first_name,last_name,email) VALUES ('$first_name','$last_name','$email')"; 

if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); } 
echo "The form data was successfully added to your database."; 
mysql_close($con);
?>

ありがとう!

4

4 に答える 4

2

追加する前に、データベースでメールを確認してください。お役に立てれば。

    <?php
    $first_name=mysql_real_escape_string($_POST['firstname']); 
    $last_name=mysql_real_escape_string($_POST['lastname']); 
    $email=mysql_real_escape_string($_POST['email']); 
    $sql = "SELECT * FROM email_list WHERE `email`='$email'";
    $res= @mysql_query($sql);
    if(@mysql_num_rows($res)>0)
    {
      echo "Email Already Exists" ;

    }
    else
{
 $sql="INSERT INTO email_list (first_name,last_name,email) VALUES ('$first_name','$last_name','$email')"; 

    if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); } 
    echo "The form data was successfully added to your database."; 
  }
    ?>
于 2012-12-04T10:21:46.400 に答える
2
$sql="SELECT email FROM email_list WHERE email = '$email'";
$result = mysql_query($sql, $con) or die('Error: ' . mysql_error());
if (mysql_num_rows($result) > 0)
{
  // Error - Email already exists
   echo "Error: The email address already exists."; 
} else {
   $sql="INSERT INTO email_list (first_name,last_name,email) VALUES ('$first_name','$last_name','$email')"; 

   if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); } 
   echo "The form data was successfully added to your database."; 
}

mysql_close($con);

メールアドレスが既に存在するかどうかを確認するチェックを追加し、存在する場合はエラーを出力します。mysql エラーのエラー出力もあります。

出力を特定の方法でフォーマットする必要がある場合は、JSON を使用します。しかし、上記で始める必要があります。

于 2012-12-04T10:23:49.537 に答える
1

jquery

$('form').submit(function(){

// check if passwords match; you might want to do more thorough validation
    var hasError = false;
    var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
    var emailaddressVal = $("#email").val();
    if(emailaddressVal == '') {
            $("#email").after('<span class="error">Please enter your email address.</span>');
            hasError = true;
    }

    else if(!emailReg.test(emailaddressVal)) {
            $("#email").after('<span class="error">Enter a valid email address.</span>');
            hasError = true;
    } else if(hasError == false) {
            // make ajax post request and store the response in "response" variable
     $.post('submit.php', $(this).serialize(), function(response){

         // process response here (assume JSON object has boolean property "ok"
         if(response.ok=='0'){
             alert('required fields empty');
         }else if(response.ok=='1'){
               alert('email already exists');
         }
else if(response.ok=='2')
{
alert('thankyou for your input');
}
     }, 'json');
    }

    // stop the form from being submitted
return false;
});

phpコード

    <?php
    ini_set('display_errors', 1);
    error_reporting(E_ALL);

    $con = mysql_connect("localhost","root",""); //Replace with your actual MySQL DB Username and Password
    if (!$con) { die('Could not connect: ' . mysql_error()); } 
    mysql_select_db("table", $con); //Replace with your MySQL DB Name

    $first_name=mysql_real_escape_string($_POST['firstname']); 
    $last_name=mysql_real_escape_string($_POST['lastname']); 
    $email=mysql_real_escape_string($_POST['email']); 

    if(empty($first_name) || empty($last_name) || empty($email) ) {

        echo json_encode( array('ok'=> '0' ) );
        exit();
    }

    $sql="Select * from email_list where email='".$email."' ";
    $sqll=mysql_query($sql) or die($sql."<br/><br/>".mysql_error());
    $data=mysql_fetch_array($sqll);
    if($data['email']) {

        echo json_encode( array('ok'=> '1' ) );
        exit();

    }

    $sql="INSERT INTO email_list (first_name,last_name,email) VALUES ('$first_name','$last_name','$email')"; 
mysql_query($sql) or die($sql."<br/><br/>".mysql_error());
    $value = mysql_insert_id() > 0;
    if($value)
    echo json_encode( array('ok'=> '2' ) );
    mysql_close($con);
    exit();
    ?>
于 2012-12-04T10:26:42.350 に答える
1

PHPファイルの最後に次の行を追加するだけです

$value = mysql_insert_id() > 0;

echo json_encode( array('ok'=> $value ) );
于 2012-12-04T10:17:16.273 に答える