Jump to content

foreach problem


chastro

Recommended Posts

Hi there, a little stumped on a form I am making for work...

 

on the first viewing of the page, $action is not set. (The form submits to itself)

 

when this is shown in the page, a list of checkboxes along side the employees' name is shown like so...

 

i.e.

 

[] Bob

[] Jim

[] Mary

[] Sara

[] Tim

 

...then the user is to make his/her selections of these employees, and click submit, this time with the action $final_confirm.

 

When the page now runs through, i need it to make the same list of employees, however if they had selected an employee before, it needs to be checked.

 

i.e.

 

[X] Bob

[] Jim

[X] Mary

[X] Sara

[] Tim

 

My problem is that I've gotten it to populate the check boxes on submit, but if I select three names, it returns this:

 

[X] Bob

[] Bob

[] Bob

[] Jim

[] Jim

[] Jim

[X] Mary

[] Mary

[] Mary

[X] Sara

[] Sara

[] Sara

[] Tim

[] Tim

[] Tim

 

if I select two names, it does the same thing, just with two lines each...

<?php
//$sql = "SELECT bla bla bla..."
//$result = mysql_query bla bla bla...

while ($row = mysql_fetch_array($result)) {
$id = $row['id'];
$employee_name = $row['name'];

   if ($action == "final_confirm"){
      if (isset($employee)){
         foreach ($employee as $employee_selected) {
            if($employee_selected == $id){
            echo "<INPUT TYPE=\"CHECKBOX\" NAME=\"employee[]\" VALUE=\"$id\" CHECKED>$employee_name<BR>\n";
            } else {
            echo "<INPUT TYPE=\"CHECKBOX\" NAME=\"employee[]\" VALUE=\"$id\">$employee_name<BR>\n";
            }
         }
      }
   } else {
   echo "<INPUT TYPE=\"CHECKBOX\" NAME=\"employee[]\" VALUE=\"$id\">$employee_name<BR>\n";
   }
}

?>

 

In theory I see why the error is happening, I just dont see any other way to do this. I'm sure the answer is right in front of me or I just need to reorganize something, but I've been trying to do this for 5 hours and reading the foreach documentation on php.net isnt helping. Any help is appreciated.

Link to comment
Share on other sites

try

 

<?php
mysql_connect('localhost');
mysql_select_db('test3');

/**
* Create array of selected employee ids
* Blank array if none selected
*/
$selected_emps =  isset($_GET['emp']) ? $_GET['emp'] : array();

echo '<form>';

$sql = "SELECT id, emp_name
        FROM employee
        ORDER BY emp_name";
$res = mysql_query($sql) or die (mysql_error()."<pre>$sql</pre>");
while (list($id, $name) = mysql_fetch_row($res))
{
    /**
    * if id is in the selected_emps array, check it
    */
    $chk = in_array($id, $selected_emps) ? 'checked' : '';
    echo "<input type='checkbox' name='emp[]' value='$id' $chk> $name <br />";
}
echo "<input type='submit' name='sub' value='Submit'>";
echo '</form>';
?>

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.