Add Data to input

If you have an input field on a form, can you add additional data to the input field to pass along info without messing anything up?

For example:

<input type="text" name="FirstName" id="FirstName" data="<?php echo $additional_Data; ?>" />

Open in new window

LVL 7
rgranlundAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Big MontySenior Web Developer / CEO of ExchangeTree.org Commented:
yes you can, but you need to use the VALUE attribute:

<input type="text" name="FirstName" id="FirstName" value="<?php echo $additional_Data; ?>" />

alternatively, if you want to use javascript, you can:

document.getElementById("FirstName").value = "<?php echo $additional_Data; ?>";
0
Dave BaldwinFixer of ProblemsCommented:
I disagree, @rgranlund is asking about his 'data' attribute.  Whatever is in the 'value' attribute will be passed along to PHP in the 'name/'value' format.  The 'data' you show above will not be sent to the PHP page as it is.  You would have to use javascript to create another 'name/value' pair to send it.  Or you could put the data in a 'hidden' field which would be sent with the form.
0
Cornelia YoderArtistCommented:
An easier way might be to send a second, hidden, form field value with the additional information, and then do the concatenation in the processing script.


<input type="text" name="FirstName" id="FirstName"  />
<input type="hidden" name="AddlData" value="<?php echo $additional_Data; ?> />
0
Ultimate Tool Kit for Technology Solution Provider

Broken down into practical pointers and step-by-step instructions, the IT Service Excellence Tool Kit delivers expert advice for technology solution providers. Get your free copy now.

Cornelia YoderArtistCommented:
@Dave Great minds think alike :)
0
Cornelia YoderArtistCommented:
<input type="text" name="FirstName" id="FirstName"  />
<input type="hidden" name="AddlData" value="<?php echo $additional_Data; ?>" />
0
Big MontySenior Web Developer / CEO of ExchangeTree.org Commented:
Hmmm I took the question as just sending data from a field, but you may be right. Hopefully the OP can clarify what they need
0
Dave BaldwinFixer of ProblemsCommented:
@yodercm, of course they do!
0
rgranlundAuthor Commented:
I need to pass along more info than just name, ID and value. I have one more piece that I would like to pass along.
For example:

<select name="names" id="names">
<option value="Tony" (additional Info that goes with Tony)>Tony</option>
<option value="Brom" (additional Info that goes with Brom)>Brom</option>
<option value="Niel" (additional Info that goes with Niel)>Niel</option>
</select>

Open in new window

Does that make it more clear?
0
Dave BaldwinFixer of ProblemsCommented:
No, that still Won't work.  All that a form sends is in the format of 'name=value' where name is the 'name of the element ("names" above) and the selected or entered value.  In a <select> element, the 'value' is not visible so any 'additional info' can be added to the 'value' without changing the display.  But if it is not in the 'value' attribute, it will not be sent.
0
Cornelia YoderArtistCommented:
Using select/option is a whole different problem than using input.

If you already know the names that will be in the select list (either hardcoded or pulled from database), then you can still make hidden inputs for each.

<select name="names" id="names">
<option value="Tony" (additional Info that goes with Tony)>Tony</option>
<option value="Brom" (additional Info that goes with Brom)>Brom</option>
<option value="Niel" (additional Info that goes with Niel)>Niel</option>
</select>
<input type="hidden" name="AddlInfoTony" value="(additional Info that goes with Tony)">
<input type="hidden" name="AddlInfoBrom" value="(additional Info that goes with Brom)">
<input type="hidden" name="AddlInfoNiel" value="(additional Info that goes with Niel)">



Then in your processing script,first get the value of names, then use it to construct the name of the hidden field to get the additional info for that name.
0
Ray PaseurCommented:
http://iconoun.com/demo/temp_rgranlund.php

<?php // demo/temp_rgranlund.php
error_reporting(E_ALL);

// DUMP THE REQUEST VARIABLES
if (!empty($_POST))
{
    // ACTIVATE THIS TO SHOW THE ENTIRE REQUEST
    // var_dump($_POST);

    // GET THE SELECTED NAME
    $nom = $_POST['names'];

    // USING THE SELECTED NAME VALUE, GET THE ADDITIONAL INFORMATION
    $add = $_POST[$nom];

    // SHOW THE WORK PRPODUCT
    echo PHP_EOL . "$nom $add";
}

// CREATE THE HTML DOCUMENT
$htm = <<<EOD
<form method="post">
<select name="names">
<option value="Tony">Tony</option>
<option value="Brom">Brom</option>
<option value="Niel">Niel</option>
</select>
<input type="hidden" name="Tony" value="(additional Info that goes with Tony)" />
<input type="hidden" name="Brom" value="(additional Info that goes with Brom)" />
<input type="hidden" name="Niel" value="(additional Info that goes with Niel)" />
<input type="submit" />
</form>
EOD;

echo $htm;

Open in new window

HTH, ~Ray
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Big MontySenior Web Developer / CEO of ExchangeTree.org Commented:
Another approach you could use if hidden fields isn't an option you want to use is to use some kind of delimeter in each options value attribute and then split the delimited string on the server side. For example say your option value is like:

<option value="someName@@someID@@someValue">
0
Big MontySenior Web Developer / CEO of ExchangeTree.org Commented:
Surrey hit submit before I was done :)

Once you post that data, you should be able to split those values and store them in an array. I'm not that we'll versed in pop but it's a standard method in most scripting languages.

Other than that I would recommend using hidden fields as previously mentioned
0
rgranlundAuthor Commented:
Pretty Cool.  Thanks Ray
0
Ray PaseurCommented:
I also like Big Monty's solution.  Both solutions would require some sanity checks on the server, just to make sure you're getting predictable and acceptable input values.
0
Cornelia YoderArtistCommented:
I find it a bit strange that you give all the points to someone who copy/pasted my previous solution, and none to me.
0
Ray PaseurCommented:
@yodercm: I didn't copy/paste your "previous solution."  I wrote my own code (as I always do) and tested it prior to posting it here.  You can click the link I posted to see it in action.  Or you can just copy/paste my code snippet, install it on your own server and run it to see it in action.  Please don't be so touchy!
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
PHP

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.