2011-02-18 3 views
0

사용자가 다음 PHP 코드를 사용하여 응용 프로그램을 보낼 수있는 아주 간단한 PHP 양식을 만들었습니다.PHP :이 코드를 실행할 때 전자 메일이 이미 있는지 확인하십시오.

if($_SERVER['REQUEST_METHOD'] == 'POST') 
    { 
     $host = '###'; 
     $username = '###'; 
     $pass = '###'; 

     mysql_connect($host,$username,$pass); 
     mysql_select_db("###"); 

     $status = mysql_real_escape_string($_POST['status']); 
     $firstname = mysql_real_escape_string($_POST['firstname']); 
     $lastname = mysql_real_escape_string($_POST['lastname']); 
     $email  = mysql_real_escape_string($_POST['email']); 
     $url  = mysql_real_escape_string($_POST['url']); 

     $query = "INSERT INTO creathive_applications 
        VALUES (NULL,'$status','$firstname','$lastname','$email','$url')"; 

     $result = mysql_query($query) or trigger_error(mysql_error().". Query: ".$query); 
    } 

내가 원하는 것은 같은 사람이 TWICE를 2 회 적용하지 않도록합니다. 이메일 주소가 이미 데이터베이스에 존재하면 양식에 "이미 적용한 것처럼 보이게됩니다"라는 메시지가 표시됩니다.

다음은 HTML 형식입니다. 필드 집합 안에 메시지를 추가 했으므로 다음을 수행해야합니다. a) 이메일이 종료되거나 성공 메시지를 표시 한 다음 b) #membership 양식을 URL에 추가하면이 메시지 표시 보기가 페이지에서 양식으로 이동하여 사용자가 메시지를 볼 수 있습니다. 어떤 도움을받을 수 있습니까? 감사합니다

 <form action="" method="post"> 
          <fieldset id="membershipform"> 
        <div id="error"><p>sorry email in use</p></div> 
<div id="success"><p>Thanks your application has been sent</p></div> 
           <ul class="clearfix"> 
            <li id="li-status"> 
             <span>I am a:</span> 
             <menu> 
              <li><label for="student"><input type="radio" name="status" id="student" checked="checked" value="Graduate" /> Graduate</label></li> 
              <li><label for="student2"><input type="radio" name="status" id="student2" value="Undergraduate" /> Undergraduate</label></li> 
             </menu> 
            </li> 
            <li id="li-firstname"> 
             <label for="firstname">First Name</label> <input name="firstname" type="text" placeholder="First Name" id="firstname" title="First Name" /> 
            </li> 
            <li id="li-lastname"> 
             <label for="lastname">Last Name</label> <input name="lastname" type="text" placeholder="Last Name" id="lastname" title="Last Name" /> 
            </li> 
            <li id="li-email"> 
             <label for="email">Email address</label> <input name="email" type="text" placeholder="Email address" id="email" title="Email address" /> 
            </li> 
            <li id="li-url"> 
             <label for="url">URL</label> <input name="url" type="text" placeholder="URL of something you've made" id="url" title="URL of something you've made" /> 
            </li> 
            <li id="li-buttons"> 
             <input name="submit" type="submit" value="Send Application &#9658;" title="Send Application" /> 
            </li> 
           </ui> 
          </fieldset> 
         </form> 

답변

0

이미 이메일에 대한 항목이없는 검증하기 위해 삽입하기 전에 선택 쿼리를 수행합니다. 이메일이 이미 존재하는 경우 자바 스크립트 onload 코드를 추가하여 양식을 #membershipform으로 이동할 수 있습니다.

+0

을 보여 줄래 어떻게 할 수 있니? 전자 메일이있는 경우처럼 양식에 메시지를 표시하고 그렇지 않은 경우 삽입을 실행하십시오. 감사합니다. – Cameron

+0

@Cameron : 데이터를 가져 오기 위해 mysql_query를 사용하십시오. 결과가 돌아 왔는지 확인하십시오. 그렇다면 메시지를 표시하십시오. 그렇지 않으면 삽입 쿼리를 실행하십시오. PHP를 사용하여 컴퓨터에서 코드를 테스트하고 디버깅하여 모든 것을 파악할 수 있기 때문에 모든 것을 통합하지는 않습니다. 이는 대신 수행해야하는 작업입니다. – mellamokb

+0

최선의 노력을 다한 후에 특정 질문으로 되돌아 오십시오. – mellamokb

0
  1. 이메일 ID가 기본이되도록 테이블을 변경할 수 있으므로 고유합니다. emai의 = '$ 이메일'간단한

0

, 당신은이 데이터베이스를 전년도 확인해야합니다 경우

  • 당신은 creathive_applications에서 다른 쿼리

    를 선택하여 확인할 수 있습니다.

    if($_SERVER['REQUEST_METHOD'] == 'POST'){ 
        $host = '###'; 
        $username = '###'; 
        $pass = '###'; 
    
        mysql_connect($host,$username,$pass); 
        mysql_select_db("###"); 
    
        $status = mysql_real_escape_string($_POST['status']); 
        $firstname = mysql_real_escape_string($_POST['firstname']); 
        $lastname = mysql_real_escape_string($_POST['lastname']); 
        $email  = mysql_real_escape_string($_POST['email']); 
        $url  = mysql_real_escape_string($_POST['url']); 
    
        $query_check = "SELECT COUNT(*) as existents FROM creathive_applications .... emailfiel = 'email_entered'"; 
        switch($query_check['existents']){ 
         case 0: 
          //do the insert operation 
          $query = "INSERT INTO creathive_applications VALUES (NULL,'$status','$firstname','$lastname','$email','$url')"; 
          $result = mysql_query($query) or trigger_error(mysql_error().". Query: ".$query); 
         break; 
          default: 
          echo "no no"; 
        } 
    } 
    
  • 0

    확인 $email 경우는 DB에 존재하고 그것은 $error = 1을 설정할 수없는 경우. 그런 다음 $error = 1 인 경우 메시지를 인쇄하십시오.

    $emailchk = mysql_query("SELECT * FROM creathive_applications WHERE email = '$email'"); 
    if(mysql_num_rows($emailchk) > 0) { 
        $error = 1; 
    } 
    
    if isset($error) { 
        echo '<div id="error"><p>sorry email in use</p></div>'; 
    } 
    
    0

    이처럼 할 수있는 :

    PHP 코드 :

    if($_SERVER['REQUEST_METHOD'] == 'POST') 
    { 
        $host = '###'; 
        $username = '###'; 
        $pass = '###'; 
        $emailerror = null; 
    
        mysql_connect($host,$username,$pass); 
        mysql_select_db("###"); 
    
        $status = mysql_real_escape_string($_POST['status']); 
        $firstname = mysql_real_escape_string($_POST['firstname']); 
        $lastname = mysql_real_escape_string($_POST['lastname']); 
        $email  = mysql_real_escape_string($_POST['email']); 
        $url  = mysql_real_escape_string($_POST['url']); 
    
        $emailchk = mysql_query("SELECT * FROM creathive_applications WHERE email = '$email'"); 
        if(mysql_num_rows($emailchk) == 0) { 
         $query = "INSERT INTO creathive_applications VALUES (NULL,'$status','$firstname','$lastname','$email','$url')"; 
         $result = mysql_query($query) or trigger_error(mysql_error().". Query: ".$query); 
        }else{ 
         $emailerror = '<span style="color:rgb(255,0,0)">Email already taken</span>'; 
        } 
    } 
    

    HTML (동일한 파일에 있어야 함) :

    <form action="" method="post"> 
              <fieldset id="membershipform"> 
            <div id="error"><p>sorry email in use</p></div> 
    <div id="success"><p>Thanks your application has been sent</p></div> 
               <ul class="clearfix"> 
                <li id="li-status"> 
                 <span>I am a:</span> 
                 <menu> 
                  <li><label for="student"><input type="radio" name="status" id="student" checked="checked" value="Graduate" /> Graduate</label></li> 
                  <li><label for="student2"><input type="radio" name="status" id="student2" value="Undergraduate" /> Undergraduate</label></li> 
                 </menu> 
                </li> 
                <li id="li-firstname"> 
                 <label for="firstname">First Name</label> <input name="firstname" type="text" placeholder="First Name" id="firstname" title="First Name" /> 
                </li> 
                <li id="li-lastname"> 
                 <label for="lastname">Last Name</label> <input name="lastname" type="text" placeholder="Last Name" id="lastname" title="Last Name" /> 
                </li> 
                <li id="li-email"> 
                 <label for="email">Email address</label> <input name="email" type="text" placeholder="Email address" id="email" title="Email address" /> <?php echo $emailerror;?> 
                </li> 
                <li id="li-url"> 
                 <label for="url">URL</label> <input name="url" type="text" placeholder="URL of something you've made" id="url" title="URL of something you've made" /> 
                </li> 
                <li id="li-buttons"> 
                 <input name="submit" type="submit" value="Send Application &#9658;" title="Send Application" /> 
                </li> 
               </ui> 
              </fieldset> 
             </form> 
    
    관련 문제