2012-06-26 86 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