SalientAnimal Posted April 10, 2014 Share Posted April 10, 2014 Hi All, I want to create a form that will have a drop-down list where you would select various timeslots. The drop-down will have options such as: 08:00 - 17:00 09:00 - 18:00 10:00 - 19:00 11:00 - 20:00 12:00 - 21:00 etc. When selecting either one of these options in the drop-down I need my database to be queried and to return a list of names (Users scheduled to work). Next to each name I would like it to have a check box, which the person accessing the form can then tick indicating if a user is present / absent. For all present users, their names need to be written to a new table, separated by only a comma, e.g. user1, user2, user3, etc. On the same row of the table, but in a new column the same has to apply or users who are absent And a third column for users who are late. So my quests are as follows: 1. Can this be done? 2. How do I retrieve the correct info from the table based on the drop down 3. What is the best way to name my check boxes? Would it be (Present1, Absent1, Late1, Present2, Absent2, Late2, etc)? I haven't started building the page as yet, but do have a table where a schedule is loaded with the shifts as indicated. Any suggestions will be most welcome. Quote Link to comment Share on other sites More sharing options...
Psycho Posted April 10, 2014 Share Posted April 10, 2014 For all present users, their names need to be written to a new table, separated by only a comma, e.g. user1, user2, user3, etc. On the same row of the table, but in a new column the same has to apply or users who are absent And a third column for users who are late. Um, no. That is a NOT how you should be storing the records. Based upon this and your other post I see that you really, really need to do some research on database normalization. The things you are trying to do are only going to make your life harder. 1. Can this be done? Yes. But, it should be done differently than you think it should. 2. How do I retrieve the correct info from the table based on the drop down No idea. Your explanation above makes no sense. You select a time period and retrieve a list of users based on what? You then select checkmarks next to the users' names that does what? You then want to store records associated for the user based on whether they are present, absent or late. How is this determined, the checkbox? A checkbox only has two possible states: checked or not checked. So, how do you determine the three statuses? 3. What is the best way to name my check boxes? Would it be (Present1, Absent1, Late1, Present2, Absent2, Late2, etc)? Ok, from this it appears you are now wanting three checkboxes per user even though you clearly stated previously you would only have one. Why checkboxes? They are not mutually exclusive and makes your life harder. I.e. a user could check the Present AND the Absent checkboxes for the same user. So you would have to add additional validation logic. Just provide a single select list with the three options for each user. And the fields should be something like this: <select name="present[34]"> <option value="0">Absent</option> <option value="1">Present</option> <option value="2">Late</option> </select> The 34 in the name would represent the user ID of the user that the field is associated with. You POST data would then contain an array with the values for all the user. Quote Link to comment Share on other sites More sharing options...
SalientAnimal Posted April 13, 2014 Author Share Posted April 13, 2014 (edited) I was thinking checkboxes / radio buttons because there would be multiple users working the same shifts. Was also thinking that having a dropdown menu next to each used might look cluttered, and it makes it a little teadious when you have a list of 20+ users and you have to select a drop-down option for each. I actually later realised that he best way would be to rather create a new entry for each user, but this would mean that there would be multiple submits when hitting the submit button? Edited April 13, 2014 by SalientAnimal Quote Link to comment Share on other sites More sharing options...
Solution SalientAnimal Posted April 15, 2014 Author Solution Share Posted April 15, 2014 Ok, so I've done some work on this and tried applying the logic you had helped me with in an earlier thread. I'm almost certain that I'm not doing this right though. <?php //FUNCTION TO CREATE HTML FOR OPTIONS LIST function createOptions($optionList, $selectedValue) { $options = ''; foreach ($optionList as $option) { $selected = ($option['value']==$selectedValue) ? ' selected="selected"' : ''; $options .= "<option value='{$option['value']}'{$selected}>{$option['label']}</option>\n"; } return $options; } //DETERMINE SELECTED OPTIONS PASSED ON QUERY STRING $shift = isset($_GET['shift']) ? intval($_GET['shift']) : false; $agent = isset($_GET['agent']) ? intval($_GET['agent']) : false; //$tertiary_category = isset($_GET['tertiary_category']) ? intval($_GET['tertiary_category']) : false; //GENERATE OPTIONS FOR THE SHIFT OPTIONS $query = "SELECT DISTINCT id AS value, shift AS label FROM shift_structure WHERE active_status = 1 ORDER BY id"; $optionList = $dbo->query($query); $shift_options = createOptions($optionList, $shift); //SELECTING THE AGENTS THAT ARE SCHEDULE FOR THE MENTIONED SHIFT if($shift) { $query = "SELECT shift AS value, agent AS label FROM schedule WHERE id = $shift ORDER BY agent"; $optionList = $dbo->query($query); $agent_options = createOptions($optionList, $agent); } ?> <!doctype html public "-//w3c//dtd html 3.2//en"> <html> <head> <title>Shift Report - Agent Analysis</title> <script language="javascript"> function getSelectValue(selectID) { var optionObj = document.getElementById(selectID); return optionObj.options[optionObj.selectedIndex].value; } function reload(form) { //Adding the unselected options should work fine var locationURL = 'shift_form_schedule.php'; locationURL += '?shift=' + getSelectValue('shift'); // locationURL += '&secondary_category=' + getSelectValue('secondary_category'); // locationURL += '&tertiary_category=' + getSelectValue('tertiary_category'); //Perform the reload self.location = locationURL; } </script> <!-- INCLUDING THE NAVIGATION MENU --> <?php // INCLUDING THE TOP LOGIN / LOGOUT PANEL include 'includes/panel.php'; // INCLUDING THE NAVIGATION MENU include '/nav/menu.html'; ?> <div id="container"> <div id="content" style="margin-top:-45px;"> <img src="images/logo.png" alt="Altech Autopage"></img> <h1>Auxilium</h1> <!-- <h2>Sliding login panel with jQuery - Demo</h2> --> <div id="stylized" class="form"> <form id="form" name="form" method="post" action="process/submit_voc.php"> <h1>VOC Root Cause Analysis</h1> <!--<p>This is the basic form layout. We can edit it as required.</p>--> <!-- DISPLAY THE DETAILS OF THE LOGGED IN USER --> <label>User Logged In : <span class="small">You are logged in as</span> </label> <input type="text" name="username" id="username" value="<?php echo htmlentities($_SESSION['username']);?>" readonly style="background-color: #C9C9C9"> <!-- DISPLAY THE DETAILS OF THE LOGGED IN USER <label>Form Reference Number : <span class="small">Number Reference to link queries</span> </label>--> <input type="hidden" name="voc_reference" id="voc_reference" value="<?php echo $random;?>" readonly style="background-color: #C9C9C9"> <label>Shift : <span class="small">Shift that is being updated</span> </label> <select name='shift' id='shift' onChange="reload(this.form)"> <option value=''>--- Select a Shift ---</option> <?php echo $shift_options; ?> </select> <label><?php print $agent;?> : <span class="small">Agent being updated</span> </label> <input type ='radio' name='present' value="<?php echo $agent;?>"> <?php print $agent;?> Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.