Multiple select fields PHP - php

I am working on a booking script in PHP and I need to get their values. To be clear the select is not multiple value select where you select many values in one select. It is just plain and simple select fields in a form. The problem is i can't be sure how many of them there are and what their names are. Is there a way to get their names and and values without knowing how many of them there are and what their names are when I click the submit button? I use a while loop to print them. I was suggested use sessions to achieve this but I am not exactly sure how I would implement it.

All data that the html part is tranfering to the php part of the page is sent to a variable ($_GET, $_POST). Which one is defined by the method you are using for the form itself. The variable itself is built as an array with fieldname as the key of the array element and the value (either value of the selected element for select fields, or the input value for input fields, ....) as value of the array element.
If you want to parse through all elements that you have in the form field, then you can use foreach (it gets a bit more complicated if you don't want to parse through all elements......then I would suggest that you make sure that all the fields that you want to process begin with a specific "tag" in their name, which only they have. As an example c_Field1, c_Field2, Field3, Field4,.... with c_ being the tag....you can then either use string functions on the key (which is equal to the fieldname) or you can use arrayfunctions to only get these fields).
As an example with foreach if you want to get all fields beginning with 'c_':
foreach ($_POST as $fieldname => $value)
{
if (str_replace('c_','',$fieldname)!=$fieldname)
{
//field to be processed so use $value
}
}

If you submit them, they are in the POST variable (well, could be GET, but probably not). That thing is an array, so you can use all the fancy array functions to find out what's inside
for instance:
http://php.net/manual/en/function.array-keys.php
or just a plain old foreach I guess.

Related

How to get datas from a form built dynamically?

I build different forms dynamically. I query a database where i get all the fields related to the current form ID. (i have 2 tables, one with the list of fields and one with the list of fields associated to a products).I make a join and i can get all the informations in order to build the form.
It works fine.
My question is related to the treatment of the datas sent with $_POST. Usually, when i know all the fields, i get the data like this :
$nom = htmlentities($_POST['nom']);
$prenom = $_POST['prenom'];
I can’t do that since i have 300 fields all with a different name.
Can i get all the post value with PHP without knowing the name field ?
PHP has a function for that called extract, though it is not exactly recommended to be used with user data, since a user could send any key that you're not expecting.
To achieve the same, you can also use a loop:
foreach($array as $key => $value) {
$$key = $value;
}
The security problems are the same though.

Chosen get multiple selected values without jquery

In Chosen I get multi-selected values using the following code in jQuery -
$("chosen-selector").chosen().val()
But if I want to get these multiple selected values of select within a form via PHP it gives only single option value -
$multiple_values = $_REQUEST['chosen_select_name']
$multiple_values variable returns only a single value. How can I get multiple selected values using PHP.
You need to make this field as array so that php can understand you will be passing multiple values. in html part make your field name from "chosen_select_name" to "chosen_select_name[]" and check the request.
Multi select behavior works same as checkbox logic.

Compare Mysql Field Value

I have a table named 'jobs' with field 'categories'.
Now Values in my category field is like this
368,369,372,379,380,381
368,369,372
369,373,374,375,376
491,492
& i am getting values with search like this
'368','374','490'
Now how to compare myvalue to field value, I can't use "IN" in this stage.
In above case,
If i have values like "'368','374','490'" this, i want first three rows, beacause it contains atleast one value from my list.
how can i do this? Please suggest.
if you happy to use in programming end (i.e. using php) , you can pull those database data into an associative array. Then you can easily that array for your data manipulation. In php there are many inbuilt functions for arrays. you can use those.
http://de3.php.net/manual/en/language.types.array.php
http://www.php.net/manual/en/ref.array.php

multiple inserts via for loop and array with php (recieve via jQuery AJAX)

i'm sending values from one page via jquery's ajax to a php page. I'm hoping to store the recieved values into a db. so far this is my php page:
<?php
$supp_short_code = $_POST['supp_short_code'];
$om_part_no = $_POST['om_part_no'];
$description = $_POST['description'];
$price_each_nett = $_POST['price_each_nett'];
$cost_total = $_POST['cost_total'];
?>
The thing is, this php is going be receiving potentially multiples of each post with every "submit" so there could be 5 of each (ie. 5 items ordered). So where would i go from here to stick these values into a suitable mysql query. Also every order needs to have a unique id. Its actually getting the same id number to each order item that i'm struggling with, if that makes sense? Do these need to go into an array and then through a for-loop? Essentially one row in the db is these fields from the "post"...
The form fields need to be element arrays in HTML, and you will have to treat each $_POST element as an array. In your form's HTML add brackets to the field names, i.e. name="supp_short_code[]" When the form is submitted you can loop through these items and complete an insertion into the database.

PHP - Pulling single value from multidimensional array

this is probably quite simple but I could do with some help.
I am trying to create a small PHP function that will display a single value form a multidimensional array when the user used two dropdown boxes to select the row and column of the array.
So, the user will make a selection from the first dropdown box, which will contain the titles of the rows, and then make a selection from a second dropdown box, which will contain the titles of the columns. Once the selections have been made, the function then needs to output the value for the specific row and column selected.
I thought I had created an array that would work but, sadly no. I have 6 rows and 6 columns in my data table.
Also, is there a JQuery or Javascript alternative?
Just looking for a few pointers to get me on my way.
Thanks in advance,
Micanio
You could either do this on the server-side or through JS.
JS: Have the script update a hidden form field with the value using the onChange() event of the drop downs. Then simply grab that hidden field when the form is posted back to the server (of source always checking for valid data).
PHP: The form will provide the two values $_POST['field1'] and $_POST['field2'] (which of course you will sanitize before using). The script could define a multidimensional array that you could feed those two values into:
$finalValue = $mdArray[$SanitizedField1][$SanitizedField2];
From there just store the $finalValue however you'd like.
$data = array();
for ($i=0;$i<6;$i++) {
$data[$i] = array();
for ($j=0;$j<6;$j++)
$data[$i][$j] = rand(0,100);
}
This should create an array similar to what you have described.
You can then access it like so...
echo $data[0][3];
Your form would need two select fields, both will values 0-5 then you can take the both of them and use them to access a value in your array.
If I understand your question correctly, you need something like a user selects a drop down list. Once selected, the option populates a second list. A real world example would be a user selects on Country to fill in a form and it will populates the States drop down list.
This kind of functionality is usually done with javascript not server side php.
http://javascript.internet.com/forms/country-state-drop-down.html

Categories