2012-04-18 4 views
0

제출 단추를 클릭 할 때 if else 문을 실행합니다. 내 사용자 테이블의 'complete'필드에서 값이 6 이상이면 전자 메일을 보내야합니다 (이 코드 있음). 그렇지 않으면 오류가 표시되거나 오류 페이지 (생성 할 수 있음)로 리디렉션되어야합니다. 이것은 나의 시도하지만 값은 대부분의 경우 모든 브라우저에서 6제출 단추가 작동하지 않는 경우 else 문

$usr_email = 'usr_email'; 
$user_name = 'user_name'; 
{ 
$sqltest = "SELECT complete From users where user_id = 
".intval($_SESSION['user_id']); 
} 
if (isset($_POST['doSend'])) { 

function getOne($query){ 
    $res = mysql_query($query); 
    if (!$res) { 
     trigger_error("db: ".mysql_error()." in ".$query); 
     return FALSE; 
    } 
} 
    if ($row = mysql_fetch_row($res)) { 
     return $row[0]; 
    } 

$isSending = getOne($sqltest); 
$isSending === false; 
if($isSending >= 6){ 
require_once "Mail.php"; 

$from = "<xxx>"; 
$to = "$usr_email"; 
$subject = "Hi"; 
$body = hello "; 

$host = "ssl://smtp.gmail.com"; 
$port = "465"; 
$username = "xxx"; 
$password = "xxx"; 

$headers = array ('From' => $from, 
    'To' => $to, 
    'Subject' => $subject); 
$smtp = Mail::factory('smtp', 
    array ('host' => $host, 
     'port' => $port, 
     'auth' => true, 
     'username' => $username, 
     'password' => $password)); 

$mail = $smtp->send($to, $headers, $body); 

if (PEAR::isError($mail)) { 
    echo("<p>" . $mail->getMessage() . "</p>"); 
} else { 
    header ("Location: error.php"); 
} 
} 
} 
+0

양식은 어디에 있고 목표는 무엇입니까? – Madbreaks

+0

'

' 대상이 없습니까? – user1296762

+0

@Madbreaks 개선하기 위해 노력 중입니다. – user1296762

답변

2

변경

<p align="center"> 
    <input name="doSend" type="submit" id="doSend" value="Submit Application"> 
</p> 

<form name="input" action="myaccount.php" method="post"> 
    <input name="doSend" type="submit" id="doSend" value="Submit Application"> 
</form> 

에 당신은 외부 if 문에 else을 추가해야합니다.

$isSending = getOne($sqltest); 
$isSending === false; 
if($isSending >= 6){ 
    require_once "Mail.php"; 

    $from = "<xxx>"; 
    $to = "$usr_email"; 
    $subject = "Hi"; 
    $body = hello "; 

    $host = "ssl://smtp.gmail.com"; 
    $port = "465"; 
    $username = "xxx"; 
    $password = "xxx"; 

    $headers = array ('From' => $from, 
     'To' => $to, 
     'Subject' => $subject); 
    $smtp = Mail::factory('smtp', 
     array ('host' => $host, 
      'port' => $port, 
      'auth' => true, 
      'username' => $username, 
      'password' => $password)); 

    $mail = $smtp->send($to, $headers, $body); 

    if (PEAR::isError($mail)) { 
     echo("<p>" . $mail->getMessage() . "</p>"); 
    } else { 
     echo("<p>Message successfully sent!</p>"); 
    } 
} 
else 
    header ("Location: error.php"); 
+0

감사합니다. 이제 값이 6 일 때라도 오류 페이지로 리디렉션됩니다. (편집 – user1296762

+0

을 참조하십시오.) 어떤 오류가 발생합니까? – Jack

+0

죄송합니다. 오류 페이지는 번호가 6보다 작 으면 리디렉션되는 페이지입니다. 실제 오류가 아닙니다. – user1296762

0

경우에도 오류 메시지가 표시되지 않으면 제출 버튼이 < 형태/>, 당신의 HTML이 가진 않는 < 형태로 아무것도하지 않는다 > 태그 주위 < 입력/> </양식 >? 그렇지 않다면 양식에 입력 태그를 넣으면 제대로 작동합니다.

+0

이것은 답변이 아닙니다. 원래 게시물의 댓글에 질문을 넣어주십시오. – Madbreaks

+1

그냥 제발디가 아닙니다. 대답이 아니라는 의미는 아닙니다. –

+0

질문에 * 답하지 않는다는 사실은 대답이 아니라는 것을 의미합니다. – Madbreaks

2

주위에 서식이없는 것 같습니다. 어때요?

<p align="center"> 
<form action="<?=$_SERVER['PHP_SELF']?>" method="POST"> 
    <input name="doSend" type="submit" id="doSend" value="Submit Application"> 
</form> 
</p> 

@ 귀하의 의견 : 비록 6보다 높다 고해도? 이렇게?

$isSending = getOne(9); 
+0

감사합니다. 값이 6 이상일 때에도 오류 페이지로 리디렉션됩니다. 편집 – user1296762

+0

이 줄을 편집 할 때이 옵션이 나타납니다. db : SQL 구문에 오류가 있습니다. 올바른 문법이 '9'근처에서 사용되도록 MySQL 서버 버전에 해당하는 설명서를 확인하십시오. – user1296762

0

함수의 정의는 두 번째 if 문 앞에 종료 :

function getOne($query){ 
    $res = mysql_query($query); 
    if (!$res) { 
     trigger_error("db: ".mysql_error()." in ".$query); 
     return FALSE; 
    } 
} 
if ($row = mysql_fetch_row($res)) { 
    return $row[0]; 
} 

은 다음과 같아야합니다

function getOne($query){ 
    $res = mysql_query($query); 
    if (!$res) { 
     trigger_error("db: ".mysql_error()." in ".$query); 
     return FALSE; 
    } 
    if ($row = mysql_fetch_row($res)) { 
     return $row[0]; 
    } 
} 

지금, SQL 쿼리에서 얻은 값이 반환되지 않습니다 때문이다.