2012-04-18 63 views
0

我希望我的提交按钮,单击时,运行if else语句。在用户表中的'完整'字段中,如果值为6或以上,则应发送一封电子邮件(我有此代码),如果不是,则应显示错误或重定向到错误页面(我可以创建该错误页面)。这是我的尝试,但错误消息显示,即使值为6提交按钮不工作 - 如果其他语句

$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 2012-04-18 19:20:26

+0

'

' 它没有目标? – user1296762 2012-04-18 19:24:08

+0

@Madbreaks我试图改进:) – user1296762 2012-04-18 19:33:15

回答

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 2012-04-18 19:27:43

+0

您收到了什么错误? – Jack 2012-04-18 19:30:01

+0

对不起,如果数字小于6,错误页面就是它重定向到的页面。它不是一个实际的错误 – user1296762 2012-04-18 19:33:43

0

在大多数如果不是所有的浏览器,如果没有一个提交按钮不执行任何操作在<形式/ >,没有你的HTML有<形式>标签<输入/ > < /表格>?如果没有,将输入标签封装在一个表单中,它将起作用。

+0

这不是一个答案,请将问题置于对原帖的评论中。 – Madbreaks 2012-04-18 19:21:52

+1

只是因为这不是危险的并不意味着这不是一个答案。 – 2012-04-18 19:24:38

+0

事实上,它不*回答问题*意味着它不是一个答案。 – Madbreaks 2012-04-18 19:29:34

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 2012-04-18 19:29:18

+0

编辑该行时,我会得到这一点db:您的SQL语法中有错误;检查与您的MySQL服务器版本相对应的手册,在'9'附近使用正确的语法' – user1296762 2012-04-18 19:51:43

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查询得到的值。