2012-06-26 95 views
0

我有一个ecrtst.php,它有3个字段的输入,在submit-submit-ecr.php。我需要将数据写入一个mysql表格,验证是否没有空白字段。 当我提交所有值时,它工作正常,它成功提交后回到ecrtst.php,但是当我留下一个空白字段时,它无法显示错误。成功的PHP页面重定向其他显示错误

让我知道如果我们可以在JavaScript或PHP中显示错误,然后返回到上一页。

ecrtst.php文件:

<?php 
$dbservertype='mysql'; 
$servername='localhost'; 
$dbusername='hitec'; 
$dbpassword='[email protected]#'; 
$dbname='hitec'; 

connecttodb($servername,$dbname,$dbusername,$dbpassword); 
function connecttodb($servername,$dbname,$dbuser,$dbpassword) 
{ 
global $link; 
$link=mysql_connect ("$servername","$dbuser","$dbpassword"); 
if(!$link){die("Could not connect to MySQL");} 
mysql_select_db("$dbname",$link) or die ("could not open db".mysql_error()); 
} 
//////// End of connecting to database //////// 
?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
<head id="Head1" runat="server"> 
<title>ECR</title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<style type="text/css"> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script> 
<script type="text/javascript"> 
    $(function() { 
    $("form:not(.filter) :input:visible:enabled:first").focus(); 
    }); 
</script> 

</head> 

<body document.f1.ecrno.focus();"> 
<table width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#026465"> 
    <tr> 
<td><div align="center"><center class="style6">ECR</center> 
<center> 

<?php 
$rowec=mysql_query("SELECT Ecrno FROM ECRHDR_draft WHERE usr='$user'"); 
$rowec2=mysql_fetch_assoc($rowec); 
$rowec3=$rowec2['Ecrno']; 
?> 
<form name='f1' id='f1'> 
<table width="600" border="0" cellspacing="1" cellpadding="0"> 
    <tr> 
    <td width="60"><span class='style5'>ECR No.</span></td> 
    <td width="99"><input name="ecrno" type="text" size="10" maxlength="10" value="<?=$rowec3;?>" onchange="showecr(this.value);"></td> 
<?php 
$rowarea=mysql_query("SELECT Area FROM ACMAST"); 
$rowarea2=mysql_fetch_assoc($rowarea); 
$rowarea3=$rowarea2['Area']; 
?> 
    <td width="180"><select name='area' onchange="showarea(this.value);"> 
    <option value='<?=$rowarea3;?>'> <?=$rowarea3;?> <option> 
    <option value='Rajajinagar'>Rajajinagar</option> 
    <option value='Jayanagar'>Jayanagar</option> 
    <option value='Chennai'>Chennai</option> 
    </select></td> 
<?php $script_dt = date('d/m/Y'); ?> 
<td width="72"><span class='style5'>ECR Date:</span></td> 
<td width="189"><input name="ecrdate" type="text" size="10" maxlength="10" value="<?=$script_dt;?>" onchange="showecrdate(this.value);"> <span class='style5'>(d/m/yyyy)</span>  </td> 
    </tr> 
</table> 
<a href="submit-ecr.php" target="_parent" accesskey="s" ><input name="SAVE" type="button" value="SAVE ECR !"> 
</form> 
</center> 
</body> 
</html> 

提交-ecr.php文件:

<?php 
ob_start(); 

$con = mysql_connect("localhost","hitec","@#"); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 
mysql_select_db("hitec", $con); 

//-----Checking for blank fields in ECRHDR-draft file. ------------------------// 

$rowexist=mysql_query("select Ecrno from ECRHDR_draft WHERE usr='$user'"); 
$data=mysql_fetch_array($rowexist); 

    if ($data[Ecrno] <= 0 || $data[Ecrno]='') 
    { 
    echo "<span class='sty1'><center>DONOT LEAVE EMPTY FIELDS for ECR No.</CENTER><br> <br></span>"; 
    echo " <span class='sty1'><center><a href=\"javascript:PreviousPage();\">CLICK HERE TO GO BACK !!!!</a></CENTER></span>"; 
    } 

$URL="http://www.samplesite.info/svga//ecrtst.php"; 

header('WWW-Authenticate: Negotiate'); 
header('WWW-Authenticate: NTLM', false); 
header ('Location:'.$URL); 

mysql_close($con); 
ob_flush();?> 
+0

重定向保持重定向。您之前输出的所有内容都将丢失。你想要做的是重定向到你的表单页面,并通过请求参数,会话或其他提供一些错误信息。您可以检查该参数并打印出错误消息。我很确定,你会在SO或Google上找到大量的例子。 – Michael

+0

@Michael提交后,是否有一个显示类似错误处理的示例。我无法在网上找到正确的示例。 – user1387008

+0

下面的答案中的代码是一个很好的例子。它可能无法在您的框架环境中工作,因为我假设您在点击该按钮后不更新多个框架。我的提示:不要使用框架 - 它们只是坏的。 – Michael

回答

1

你在做什么是一个有点古怪。不要回显错误,而是在session_start()的文件顶部启动PHP会话,然后将错误消息存储在会话中,如$_SESSION['dberror'] = 'You didn\'t fill out all the fields.';

重新定向后,在其他页面上检查错误session_start(); if (isset($_SESSION['dberror'])) { echo $_SESSION['dberror']; unset($_SESSION['dberror']); }

+0

有没有给出完整的代码和工程的例子 – user1387008

+0

这个代码实际上会做到这一点。将session_start()放在每个文件的顶部,并将$ _SESSION ...行放在当前正在回显您的错误的地方。然后将if语句放在下一页要输出错误的地方。 – Lusitanian

+0

将尝试此操作,但如何在显示错误后返回上一页? – user1387008