Validating form data with Multiple input fields

Posted on 2014-03-10
Last Modified: 2014-03-11
I have code at the moment where is a user input multiple items into a text input separated by a comma, this gets submitted to php backend and using explode, I can retrieve the correct values and process them back through jquery.

 Here is my problem. I need to find a way to validate input using several input boxes. The maximum would be 8 and I am struggling to find a way to do this, using my existing code. Firebug states the the POST is 2 separate box_add posts. I cannot use [] because that will interfere with validator. I would be grateful if someone could show me the correct way to code this. Thanks

HTML relevant code

<a href="#" id="INTKAddMoreFileBox" class="btn btn-info">Add More Box Fields</a>
	<div id="INTKInputsWrapper">
	   <div><input name="box_add" type="text" id="box_add" />
              <a href="#" class="removeclass">&times;</a><a style="margin-left: 14px;" href="javascript:void(0)" title="Just an example" class="tooltip">Help</a>

Open in new window

PHP code

	$connect = mysql_connect("localhost", "root", "") or die ('{"opp":"error","box":"mysql_connect FAILED"}');
	$db = mysql_select_db("sample");

	// test vars from jquery form
	$status = mysql_real_escape_string($_REQUEST['status']);
	$company = mysql_real_escape_string($_REQUEST['company']);
	$requested = mysql_real_escape_string($_REQUEST['requested']);
	$activity = mysql_real_escape_string($_REQUEST['activity']);
	$address = mysql_real_escape_string($_REQUEST['address1']);
	$service = mysql_real_escape_string($_REQUEST['service']);
	$destroyDate = mysql_real_escape_string($_POST['datepicker']);
	$date = explode('/', $_POST['datepicker']);
	$newdate = $date[2].'-'.$date[1].'-'.$date[0];
	//$box = mysql_real_escape_string($_REQUEST['box_add']); // never used
	$authorised = mysql_real_escape_string($_SESSION['kt_name_usr']);
	$dept = mysql_real_escape_string($_REQUEST['dept']);
	$boxerrortext = 'Error';

	// Split the box if multiples
	$array = explode(',', $_REQUEST['box_add']);
	$outString = ''; 
	foreach ($array as $box) {
		$box = mysql_real_escape_string($box);
		$sql = "SELECT item FROM act WHERE item = '$box'";
		$result = mysql_query($sql) or die ('{"opp":"error","box":"' . mysql_error() . '"}');

		// If there are dupe entries, send message to jquery
		if (mysql_num_rows($result) > 0) {
			$outString .= $box . ' ';		
	if ($outString) {
		$error = array('opp' => "error", 'box' => $outString); 
		$output = json_encode($error);
		echo $output;

	foreach ($array as $box) {
		$outString .= "<br />company:  $company <br /> address: $address <br />service: $service <br />Destroy Date: $destroyDate <br />box: $box <br />";

		$box = mysql_real_escape_string($box);
		$sql = "INSERT INTO `temp` (service, activity, department, company, address, user, destroydate, date, item, new)";
		$sql .= "VALUES ('$service', '$activity', '$dept', '$company', '$address', '$requested', '$newdate', NOW(), '$box', 1)";
		$result = mysql_query($sql) or die ('{"opp":"error","box":"' . mysql_error() . '"}');

	$json = array('opp' => 'insert', 'box' => $outString);
	$result = json_encode($json);
	echo $result;

Open in new window

Script to add inputs

<script type="text/javascript">
$(function() {

var MaxInputs       = 8; //maximum input boxes allowed
var InputsWrapper   = $("#INTKInputsWrapper"); //Input boxes wrapper ID
var AddButton       = $("#INTKAddMoreFileBox"); //Add button ID

var x = InputsWrapper.length; //initlal text box count
var FieldCount=1; //to keep track of text box added

$(AddButton).click(function (e)  //on add input button click
        if(x <= MaxInputs) //max input box allowed
            FieldCount++; //text box added increment
            //add input box
            $(InputsWrapper).append('<div><input type="text" name="box_add" id="box_add" /><a href="#" class="removeclass">&times;</a></div>');
            x++; //text box increment
return false;

$("body").on("click",".removeclass", function(e){ //user click on remove text
        if( x > 1 ) {
                $(this).parent('div').remove(); //remove text box
                x--; //decrement textbox
return false;


Open in new window

Question by:peter-cooper
LVL 58

Expert Comment

ID: 39918184
You would have to get the raw querystring and strip it down manually, as the last value in a querystring will overwrite any previous values

foreach($pairs as $item){
		echo $items[1];

Open in new window

LVL 110

Expert Comment

by:Ray Paseur
ID: 39918434
It's hard to eat an elephant all in one sitting.  It's hard to write a complete web app all at once, too!

I think you might want to deconstruct the problem a little bit.  Set the jQuery part aside and just concentrate on getting the HTML form right, and seeing what it looks like in PHP by using var_dump()to visualize the data.  Once you're satisfied that you can get the data the way you want, add the data base queries into the script.  And once all of this is working correctly from the browser address bar, then integrate the jQuery part of things.

At least, that is how I would do it.
LVL 34

Accepted Solution

Slick812 earned 500 total points
ID: 39919348
greetings  peter-cooper, I'll tell you some about adding to a structure (html <form> in this case), in order to retrieve any of the added Parts, they MUST BE uniquely Identified, since the POST identifies these BY NAME, you MUST have a Unique Name for each, what I mostly do is just add an increasing number to a name (or ID)

you might try to add the FieldCount like this -
$(InputsWrapper).append('<div><input type="text" name="box_add'+FieldCount+'" id="box_add" /><a href="#" class="removeclass">&times;</a></div>');

or maybe the x could do it, I can not tell, I can not really see what you are doing in your javascript,  with the x or the FieldCount? ?
could be better coded for JS use.
Forrester Webinar: xMatters Delivers 261% ROI

Guest speaker Dean Davison, Forrester Principal Consultant, explains how a Fortune 500 communication company using xMatters found these results: Achieved a 261% ROI, Experienced $753,280 in net present value benefits over 3 years and Reduced MTTR by 91% for tier 1 incidents.


Author Comment

ID: 39920048
Hi Slick
Thanks very much. Works like a charm with slight modification:


Open in new window

Many thanks

Author Closing Comment

ID: 39920050
Thanks once again.
LVL 34

Expert Comment

ID: 39920895
glad it works, suggestion 4 u, If you ask about javascript, as you do here, you need to put this question in the javascript, and jquery EE zones FIRST, the experts there can see what u got and what u need, ,  faster than the PHP , "Miscellaneous Web Development" zones.

a note to consider, you do not seem to have the experience in JS or PHP to see what to do in a Two Computer (server, browser) separate code dependence, needed for successful Ajax. Take time to try to do things with Ajax NOT related to building your current Form submit page here in dis question. You must take time to learn the basics and use, for JS (jquery) AND PHP in Ajax exchange, you can't get to where you want to go in Ajax with just some blind, no-knowledge, copy-paste code work, I do not tell you this just for "You", as I have seen too many others in questions here at EE about Ajax, that think it is simple and an ignorant anyone can do it. Copy-paste is one thing, but getting a good Ajax page requires much more than that.

Featured Post

How our DevOps Teams Maximize Uptime

Our Dev teams are like yours. They’re continually cranking out code for new features/bugs fixes, testing, deploying, responding to production monitoring events and more. It’s complex. So, we thought you’d like to see what’s working for us. Read the use case whitepaper.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Because your company can’t afford for you to make SEO mistakes, you’ll want to ensure you’re taking the right steps each and every time you post a new piece of content. This list of optimization do’s and don’ts can help you become an SEO wizard.
Does your audience prefer people in photos or no people? How can you best highlight what you’re selling? What are your competitors doing, and what can you do that is different and unique from them?  Continue reading to learn how to make your images …
This tutorial will teach you the core code needed to finalize the addition of a watermark to your image. The viewer will use a small PHP class to learn and create a watermark.
Learn how to create flexible layouts using relative units in CSS.  New relative units added in CSS3 include vw(viewports width), vh(viewports height), vmin(minimum of viewports height and width), and vmax (maximum of viewports height and width).

735 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question