Jump to content

I dont want all of my form fields to go blank, just the incorrect ones perhaps?


wright67uk

Recommended Posts

As expected when a die statement is triggered, my script is exited and ALL of the fields that have been filled in on my form are wiped clean. 

This however is proving to be annoying for users making mistakes. 

Is there a way to keep the data in the correctly filled in fields, and to just wipe or highlight the incorrectly filled in fields?

 

<?php 
function checkPostcode (&$toCheck) 
{ 
$alpha1 = "[abcdefghijklmnoprstuwyz]";                           
$alpha2 = "[abcdefghklmnopqrstuvwxy]";                          
$alpha3 = "[abcdefghjkstuw]";                                   
$alpha4 = "[abehmnprvwxy]";                                       
$alpha5 = "[abdefghjlnpqrstuwxyz]";                               
$pcexp[0] = '^('.$alpha1.'{1}'.$alpha2.'{0,1}[0-9]{1,2})([0-9]{1}'.$alpha5.'{2})$';  
$pcexp[1] =  '^('.$alpha1.'{1}[0-9]{1}'.$alpha3.'{1})([0-9]{1}'.$alpha5.'{2})$';
$pcexp[2] =  '^('.$alpha1.'{1}'.$alpha2.'[0-9]{1}'.$alpha4.')([0-9]{1}'.$alpha5.'{2})$';
$pcexp[3] =  '^(gir)(0aa)$';  
$pcexp[4] = '^(bfpo)([0-9]{1,4})$';
$pcexp[5] = '^(bfpo)(c\/o[0-9]{1,3})$'; 
$Postcode = strtolower($toCheck);
$Postcode = str_replace (' ', '', $Postcode);
$valid = false;
foreach ($pcexp as $regexp) {    
if (ereg($regexp,$Postcode, $matches)) {      
$toCheck = strtoupper ($matches[1] . ' ' . $matches [2]);    
$toCheck = ereg_replace ('C\/O', 'c/o ', $toCheck);
$valid = true;
break;     
}  
}  
if ($valid){return true;} else {return false;};
}
if(isset($_POST['submit']))
{
$drop = mysql_real_escape_string($_POST['drop_1']);
$tier_two = mysql_real_escape_string($_POST['Subtype']);
$Name = mysql_real_escape_string($_POST["Name"]);
$Phone = mysql_real_escape_string($_POST["Phone"]);
$Email = mysql_real_escape_string($_POST["Email"]);
$Postcode = mysql_real_escape_string($_POST["Postcode"]);
$Website = mysql_real_escape_string($_POST["Website"]);
if($Name == '')
{
	die ("<div class=\"form\">You did not complete the name field, please try again</div>");
}
elseif  ($Phone == '' or (preg_match("/^([1]-)?[0-9]{3}-[0-9]{3}-[0-9]{4}$/i", $Phone)))
{	
	die("<div class=\"form\"> You completed the telephone field incorrectly, please try again</div>");
}		
elseif  ($Email == '' or (!filter_var($Email, FILTER_VALIDATE_EMAIL)))
{
	die("<div class=\"form\"> You completed the Email field incorrectly, please try again</div>");
}									   
elseif  ($Postcode == '' or (!checkPostcode($Postcode)))
{
	die("<div class=\"form\"> You did not complete the Postcode field correctly, please try again</div>");
}		  
elseif  ($Website == '' or (!preg_match("~^[a-z0-9.-]+\.(com|org|net|edu|co.uk)~i", $Website)))
{   																									
	die("<div class=\"form\">You completed the website field incorrectly, please try again</div>");
}
else
{
	echo("<div id=\"formtwo\">Thankyou for submiting your details, you will be added to our directory shortly</div>");
}
$query = ("INSERT INTO business (`id`, `Name`,  `Type`, `Subtype`, `Phone`, `Email`, `Postcode`, `WebAddress`, `Confirmed`)
		  VALUES ('NULL', '$Name', '$drop', '$tier_two' , '$Phone', '$Email', '$Postcode', '$Website', 'Yes')");
mysql_query($query) or die ( "<br>Query: $query<br>Error: " .mysql_error());
}
?>

Link to comment
Share on other sites

Is it then the case that If I use die, then I will not be able to repopulate my  form fields?

Ive seen somebody on a different thread put 

 

value="<?php if (!empty($Name)) echo $Name; ?>"/> into their html form

 

It would be good to do somthing like this on my form to re-populate the fields but doesn't seem to work.

 

Please excuse me if im not quite grasping this.

Link to comment
Share on other sites

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<?php 
include('func.php');
include($_SERVER['DOCUMENT_ROOT'].'/include/db.php');
?>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Chained Select Boxes using PHP, MySQL and jQuery</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>

<script type="text/javascript">
$(document).ready(function() {
$('#wait_1').hide();
$('#drop_1').change(function(){
  $('#wait_1').show();
  $('#result_1').hide();
      $.get("func.php", {
	func: "drop_1",
	drop_var: $('#drop_1').val()
      }, function(response){
        $('#result_1').fadeOut();
        setTimeout("finishAjax('result_1', '"+escape(response)+"')", 400);
      });
    	return false;
});
});

function finishAjax(id, response) {
  $('#wait_1').hide();
  $('#'+id).html(unescape(response));
  $('#'+id).fadeIn();
}
</script>
<style type="text/css">
<!--
-->
</style>
<link href="newbusiness.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="banner">
<div id="bannerleft"></div>
<div id="logo"></div>
<div id="bannerright"><div id="navbar" title="">	 
						 <div id="b1"><p class="centre"><a href="index.html">Directory</a></p></div>
    					 	 <div id="b2"><p class="centre"><a href="business.html">Add Your Business</a></p></div>
   						 	 <div id="b3"><p class="centre"><a href="contact.html">Contact Us</a></p></div>
    	</div><!-- end of navbar-->
</div><!--end of bannerright-->
</div><!-- end of banner-->
<form  name="add" action="#" method="post">
<fieldset>
<legend>Add Your Business</legend>
<p><label for="Name">Name</label><input type="text" name="Name" id="Name" maxlength="50" value="<?php if (!empty($Name)) echo $Name; ?>"/></p>
<p><label for="Phone">Phone</label> <input type="text" name="Phone" id="Phone" maxlength="50" <?php if (!empty($Phone)) echo $Phone; ?>/></p>
<p><label for="Email">Email</label><input type="text" name="Email" 	id="Email"	maxlength="50"<?php if (!empty($Email)) echo $Email; ?> /></p>
<p><label for="Postcode">Postcode</label><input type="text" name="Postcode" id="Postcode" maxlength="50"<?php if (!empty($Postcode)) echo $Postcode; ?> /></p>
<p><label for="Web Address">Web Address</label><input type="text" name="Website" id="Website" maxlength="50" <?php if (!empty($Website)) echo $Website; ?>/></p>

<select name="drop_1" id="drop_1"> 
<option value="" selected="selected" disabled="disabled">Select a Category</option>  
<?php getTierOne(); ?>
</select> 
<span id="wait_1" style="display: none;">
<img alt="Please Wait" src="ajax-loader.gif"/>
</span>
<span id="result_1" style="display: none;"></span> <br />
</fieldset>
</form>

<div id="results">
<?php 
function checkPostcode (&$toCheck) 
{ 
$alpha1 = "[abcdefghijklmnoprstuwyz]";                           
$alpha2 = "[abcdefghklmnopqrstuvwxy]";                          
$alpha3 = "[abcdefghjkstuw]";                                   
$alpha4 = "[abehmnprvwxy]";                                       
$alpha5 = "[abdefghjlnpqrstuwxyz]";                               
$pcexp[0] = '^('.$alpha1.'{1}'.$alpha2.'{0,1}[0-9]{1,2})([0-9]{1}'.$alpha5.'{2})$';  
$pcexp[1] =  '^('.$alpha1.'{1}[0-9]{1}'.$alpha3.'{1})([0-9]{1}'.$alpha5.'{2})$';
$pcexp[2] =  '^('.$alpha1.'{1}'.$alpha2.'[0-9]{1}'.$alpha4.')([0-9]{1}'.$alpha5.'{2})$';
$pcexp[3] =  '^(gir)(0aa)$';  
$pcexp[4] = '^(bfpo)([0-9]{1,4})$';
$pcexp[5] = '^(bfpo)(c\/o[0-9]{1,3})$'; 
$Postcode = strtolower($toCheck);
$Postcode = str_replace (' ', '', $Postcode);
$valid = false;
foreach ($pcexp as $regexp) {    
if (ereg($regexp,$Postcode, $matches)) {      
$toCheck = strtoupper ($matches[1] . ' ' . $matches [2]);    
$toCheck = ereg_replace ('C\/O', 'c/o ', $toCheck);
$valid = true;
break;     
}  
}  
if ($valid){return true;} else {return false;};
}
if(isset($_POST['submit']))
{
$drop = mysql_real_escape_string($_POST['drop_1']);
$tier_two = mysql_real_escape_string($_POST['Subtype']);
$Name = mysql_real_escape_string($_POST["Name"]);
$Phone = mysql_real_escape_string($_POST["Phone"]);
$Email = mysql_real_escape_string($_POST["Email"]);
$Postcode = mysql_real_escape_string($_POST["Postcode"]);
$Website = mysql_real_escape_string($_POST["Website"]);
if($Name == '')
{
	die ("<div class=\"form\">You did not complete the name field, please try again</div>");
}
elseif  ($Phone == '' or (preg_match("/^([1]-)?[0-9]{3}-[0-9]{3}-[0-9]{4}$/i", $Phone)))
{	
	die("<div class=\"form\"> You completed the telephone field incorrectly, please try again</div>");
}		
elseif  ($Email == '' or (!filter_var($Email, FILTER_VALIDATE_EMAIL)))
{
	die("<div class=\"form\"> You completed the Email field incorrectly, please try again</div>");
}									   
elseif  ($Postcode == '' or (!checkPostcode($Postcode)))
{
	die("<div class=\"form\"> You did not complete the Postcode field correctly, please try again</div>");
}		  
elseif  ($Website == '' or (!preg_match("~^[a-z0-9.-]+\.(com|org|net|edu|co.uk)~i", $Website)))
{   																									
	die("<div class=\"form\">You completed the website field incorrectly, please try again</div>");
}
else
{
	echo("<div id=\"formtwo\">Thankyou for submiting your details, you will be added to our directory shortly</div>");
}
$query = ("INSERT INTO business (`id`, `Name`,  `Type`, `Subtype`, `Phone`, `Email`, `Postcode`, `WebAddress`, `Confirmed`)
		  VALUES ('NULL', '$Name', '$drop', '$tier_two' , '$Phone', '$Email', '$Postcode', '$Website', 'Yes')");
mysql_query($query) or die ( "<br>Query: $query<br>Error: " .mysql_error());
}
?>
<p>I-stevenage is forever expanding, by adding new catergories and business types.
<br />  If you would like to add a service that is not in our list, then please click here.
<br />(It will only take 30 seconds to fill in our form)</p>
</div>
</body>
</html>

Link to comment
Share on other sites

the form isnt populating as you are not putting the $_POST values into the variables so they remain empty/blank

the die statements are AFTER this so shouldnt affect populating, if they are causing issues, change them to echo statements while debugging

Link to comment
Share on other sites

 

Somthhing like;

 

<?php 
$_POST['Phone'] = $Phone;
$_POST['Email'] = $Email;
$_POST['Postcode'] = $Postcode;
$_POST['Website'] = $Website; ?>

 

Ive tried putting this before and then after my validation functions, and also in the form fields themselves, but I cant get the desired effect.

Where should I put this code for it to work properly?

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.