简体   繁体   中英

How to get the array of <form> elements in php?

With php, I dynamically create a form with a variable number of "select" in it.

When user has done his selections, he hits a button that launches another php.

I now want to browse through all form elements, but have no idea on how to get the array of form elements with their respective name.

I know how to retrieve the value for a given select when I have its name, but as the select elements in the form are different each time, I cant use the name directly, but would need the array of form elements.

So, as I understand the question: form is created dynamically (with dynamic names) so you don't know what's being POST'd and what the other options were in your handler. I suggest using javascript to solve this - in the form, add an onSubmit="saveForm();" and then, in that function saveForm, you'll have to grab all the form elements and put them into some format your PHP can interpret. Pseudocode:

function saveForm(){
    var outputString="[";
    var theInputs=document.querySelectorAll("input, select");
    for (var x=0; x<theInputs.length; x++){
        outputString+="\""+theInputs.name+"\", ";
    }
    outputString=outputString.substring(0,outputString.length-2)+"]";
    var hiddenInput=document.createElement("input");
    hiddenInput.name="formNames";
    hiddenInput.value=outputString;
    document.body.appendChild(hiddenInput);
}

That way, a variable will be set in $_POST['formNames'] that will be equivalent to a string representation of an array containing all the names of the form elements. You can loop through that array to get the $_POST data from each one of them.

I found the solution. I can do:

 foreach($_POST as $eid){

and $eid will then be every element I have in my form

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM