PHP $_POST doesn't find an existing element in the form - php

I have a foreach statement that echos radio buttons.
All those radio buttons have same name.
When I want to get the clicked ones, I use $_POST['radio_name']
But I got an error (it can't find the radio name)
This my code :
<form method="post">
<div class="repas-inside-bloc breakfast-bloc" id="brkID">
<?php
foreach($breakfast_array as $brk){
echo '<label for="'.$brk['id_plat'].'" class="plan-meal-box">'.$brk['titre_plat'].'</label><input name="brk_check" type="radio" id="'.$brk['id_plat'].'" value="'.$brk['titre_plat'].'">';
}
?>
</div>
How to get values of every radio button clicked ? $_POST['brk_check'] doesn't work

The idea of radio buttons is they are grouped by their name attribute. If all radio buttons have same name, only one can be clicked at a time.
Therefore, the server value you receive as $_POST['brk_check'] is value of radio button that was clicked, which can only be one value at any given time.
If you want to receive multiple values, you have to name radio buttons differently. But with this usage, if you want to allow multiple selections, you should probably type='checkbox' instead of radio buttons. Here is an answer of how to read multiple checkbox values.

You can try this:
$_REQUEST['brk_check'];

Related

Retain checkbox values on submit

Below is the code for the checkbox
foreach($fruits as $key=>$values) {
echo "<td bgcolor=\"#EAEAEA\" style=\"color:#003399\"><input type=\"checkbox\" name=\"fruits[]\" value='$fruits[$key]'>$fruits[$key]</td>";
How can i retain the values selected once i click submit?
Checkboxes don't use value attributes. You have the attribute checked='checked' or simply checked which means it's selected. You then get a $_POST array where if you have the checkboxes checked, they will show up with the names in the keys, but if not checked, they will not be submitted at all. So you would need to make hidden fields if you really want to pass these unchecked checkboxes as well. See this post on the details of how to accomplish it: Post the checkboxes that are unchecked

Getting values of all checked checkboxes in PHP and put them in an array

I'm creating a CMS in which I have an overview of pages. I want the user to be able to mass delete these pages and so I have created a form in which each page has a checkbox with the pages database ID as value and name:
<input class="mass-delete-check" type="checkbox" name="<?=$page["id"]?>" value="<?=$page["id"]?>" id="<?=$page["id"]?>">
Now when I submit this form I need to get the values of the checkboxes that are actually checked and put them in an array I can go through to delete them. The thing here is that I will have to get checkbox values based on if they are checked and not on their name because I can't know all names.
Does anyone have a solution to this?
Use the same name for all checkboxes. So after submiting you will have array with page IDs to delete.
<input class="mass-delete-check" type="checkbox" name="delete_pages[]" value="<?=$page["id"]?>" id="<?=$page["id"]?>">
After submit you would get array of IDs with $_POST['delete_pages'], which contains actual page IDs what you need to delete.

Submit form and send data through AJAX at the same time?

Let's say I have a simple form, with a select combobox and a table that has a checkbox for each row, to choose the rows you want.
Now, on the server-side, I need to associate all the items selected from the table (using the checkbox for each row), with the item selected in the combobox.
I know the value in the combobox will be submitted with the form, but how can I send all the selected elements from the table? do I have to use AJAX or something? or is it possible to do it via POST/GET?
The form needs to enclose (be an anscestor of) both the table and the combo box.
The table row checkboxes should all look like
<input type="checkbox" name="rows[]" value="ROW ID"/>
And then on the server side you'll get, in addition to the combobox value, $_POST['rows'] as an array containing the ids of the checked rows.

How to get the textbox value when its corresponding checkboxes are ticked?

When a user ticks a checkbox and enters data into the corresponding textbox and submits, I want to show a form which will display the textbox values which checkboxes were ticked
Have you considered trying a tutorial and seeing how that works?
http://www.homeandlearn.co.uk/php/php4p11.html

HTML form with multiple submit options

I'm trying to create a small web app that is used to remove items from a MySQL table. It just shows the items in a HTML table and for each item a button [delete]:
item_1 [delete]
item_2 [delete]
...
item_N [delete]
To achieve this, I dynamically generate the table via PHP into a HTML form. This form has then obviously N [delete]-buttons. The form should use the POST-method for transfering data.
For the deletion I wanted to submit the ID (primary key in the MySQL table) of the corresponding item to the executing php skript. So I introduced hidden fields (all these fields have the name='ID' that store the ID of the corresponding item.
However, when pressing an arbitrary [delete], it seems to submit always just the last ID (i.e. the value of the last ID hidden field).
Is there any way to submit just the ID field of the corresponding item without using multiple forms? Or is it possible to submit data from multiple forms with just one submit-button? Or should I even choose any completly different way?
The point why I want to do it in just one single form is that there are some "global" parameters that shall not be placed next to each item, but just once for the whole table.
<input type="submit" name="delete[1]" value="delete">
if (isset($_POST['delete'])) $id=key($_POST['delete']);
it seems to submit always just the last ID
It submits all of them, but since the name doesn't end with [], PHP discards all by the last.
Is there any way to submit just the ID field of the corresponding item without using multiple forms?
No. At least not without some unfortunate JavaScript. All (non-disabled) hidden inputs (with names and values) will be successful. You can't limit based on proximity to a clicked input element.
If I understand your goals correctly, you have two main options.
Put one form per row (in the cell with the delete button)
Encode the id value into the name of the submit button
You could get rid of the hidden fields and name your submit buttons like this:
<input type="submit" name="delete[1]" />
<input type="submit" name="delete[2]" />
<input type="submit" name="delete[3]" />
and then
<?php
if (isset($_POST['delete'])) {
$toDeleteId = key($_POST['delete']);
}

Categories