Link to home
Start Free TrialLog in
Avatar of Spydie
Spydie

asked on

employee schedule php/mysql within a dynamic table

I am trying to create a dynamic table where an employees hours are posted...
The employees names are in another table so all I would need is the hours to the right of them...
I have the hours in a table in my mysql database setup as so..

emp_id | s_id | work | timestart | timeend | medleave | request | scrubflrs | temps | train | earlylater

emp_id = the employee id linking to the employees id of said employee in the users table
s_id = the store number of said employee
work = if they work that day or not. true of false 1 being true, 0 being false
timestart = in datetime format of the time they start working
timeend = see above just ending time
medleave = to show if they are on medical leave or not
request = to show if they requested the day off
scrubflrs = if they need to scrub the floors that night
temps = if they need to do temps or not
train = if they are training
earlylater = if they can leave early or later than when they are scheduled.

I'm trying to make it so that that data will display in a row and will create other rows for however many employees there are. One column for each day of the week and will display if they are off work too, all sorted by the emp_id.

I have been looking all over for solutions and I've seen some stuff, but nothing really that would help me in the way I'm looking for it to be...

here is essentially what I have thus far...
http://schedule.test.spydie.net/?store=3

I also added an image of what the layout of this table would be...

I know how I would do all the information on the backend of it. Just no idea how to display it on the frontend of the site. Any help would be greatly appreciated!
database-layout.png
Avatar of Marco Gasi
Marco Gasi
Flag of Spain image

So do you want to display timeend - timestart for each employee? Can you post the code you have right now? I really don't understand what exactly is your problem...
Avatar of Spydie
Spydie

ASKER

yes sir and if they are on med leave or whichever.
no code as of yet. I'm clueless on what I'm suppose to do.  :(
no code as of yet ?

How create you the ouptu seen here http://schedule.test.spydie.net/?store=3?
Avatar of Spydie

ASKER

I was meaning for the hours/dates sections...
Here is my code thus far for the schedule area:
<?php
	define('MAIN_DIR',dirname(__FILE__) . '/');
	define('INC_DIR',MAIN_DIR . 'includes/');
	define('REQ_DIR',MAIN_DIR . 'requires/');
	define('FUNC_DIR',MAIN_DIR . 'includes/functions/');
	define('LANG_DIR',MAIN_DIR . 'includes/lang/');
	include (FUNC_DIR . 'db.conn.php');
	include (LANG_DIR . 'en.php');
	require (FUNC_DIR . 'name_get.php');
	require (FUNC_DIR . 's_num_get.php');
?>

<head>
<title><?php echo lang('TITLE').$title; ?></title>
<LINK REL=stylesheet HREF="includes/css/main.css" TYPE="text/css">
</head>
<?php require (REQ_DIR . 'header.php'); ?></br>
	<table width="70%" align="center" border="0" cellspacing="0" cellpadding="0">
		<tr>
			<td>
				<table width="100%" height="60" border="0" class="round" cellpadding="0" cellspacing="0">
					<tr class="dates">
						<td height="5" width="7.5%" class="toplefttop">&nbsp;</td>
						<td height="5" width="6.5%" class="datestop" colspan="2" >01/23/2013</td>
						<td height="5" width="6.5%" class="datestop" colspan="2" >01/24/2013</td>
						<td height="5" width="6.5%" class="datestop" colspan="2" >01/25/2013</td>
						<td height="5" width="6.5%" class="datestop" colspan="2" >01/26/2013</td>
						<td height="5" width="6.5%" class="datestop" colspan="2" >01/27/2013</td>
						<td height="5" width="6.5%" class="datestop" colspan="2" >01/28/2013</td>
						<td height="5" width="6.5%" class="datestoptop" colspan="2" >01/29/2013</td>
					</tr>
					<tr class="days">
						<td height="15" width="7.5%" class="topleftbottom">&nbsp;</td>
						<td height="15" width="6.5%" class="datesbottom" colspan="2" ><div>Wednesday</div></td>
						<td height="15" width="6.5%" class="datesbottom" colspan="2" ><div>Thursday</div></td>
						<td height="15" width="6.5%" class="datesbottom" colspan="2" ><div>Friday</div></td>
						<td height="15" width="6.5%" class="datesbottom" colspan="2" ><div>Saturday</div></td>
						<td height="15" width="6.5%" class="datesbottom" colspan="2" ><div>Sunday</div></td>
						<td height="15" width="6.5%" class="datesbottom" colspan="2" ><div>Monday</div></td>
						<td height="15" width="6.5%" class="datesbottombottom" colspan="2" ><p>Tuesday</p></td>
					</tr>
					<tr>
						<td width="6%">
							<?php
							$emp = mysql_query("SELECT * FROM users
							WHERE s_id = '" .$s_num. "' OR s_vist = '" .$s_num. "' ORDER BY emp_id ASC");
							while($names = mysql_fetch_array($emp)) { 
							if ($names['show'] == '1'){?>
								<table width="100%" class="round1" border="1" cellspacing="0" cellpadding="0">
									<tr>
										<td height="7.5%" class="name"
											<div>
											<?php
											if ($names['showlast'] == 0)
											{echo $names['first'];}
											else
											{echo $names['first']. ' ' .$names['last'];} ?>
											</div>
										</td>
									</tr>
									<tr>
										<td class="phone">
											<div>
											<?php if ($names['showphone'] == '1')
											{echo $names['phone_num'];}
											else
											{echo '&nbsp;';} ?>
											</div>
										</td>
									</tr>
								</table>
							<?php }} ?>
							</td>
						</td>
						<td height="25" width="6.5%" colspan="2" class="hours">hours<p></td>
						<td height="25" width="6.5%" colspan="2" class="hours">hours<p></td>
						<td height="25" width="6.5%" colspan="2" class="hours">hours<p></td>
						<td height="25" width="6.5%" colspan="2" class="hours">hours<p></td>
						<td height="25" width="6.5%" colspan="2" class="hours">hours<p></td>
						<td height="25" width="6.5%" colspan="2" class="hours">hours<p></td>
						<td height="25" width="6.5%" colspan="2" class="hoursboth">hours<p></td>
					</tr>  
				</tr>
			</table>
		</td>
	</tr>
</td>
</tr>
</table>
</br>
<?php require (REQ_DIR . 'footer.php'); ?></br>

Open in new window

Avatar of Spydie

ASKER

no help for this, eh?
I apologize, but I had no time. Seeing your code, I think you need to do a single query to extract all data from both tables at once. First, you need to have an emplyee id in both table: do you have it? The best thing would be to use phpMyAdmin and export table structures (no data, of course, only the create statement) and post here the two create instructions so we can see the full table structure. Then, but I'll can't be fast, I can build a single query to build the table dinamically. The best query type is probably a LEFT JOIN, but I'm not so able with mysql.

You could also post a new question entitling it as LEFT JOIN PROBLEM, so all mysql experts will run to help you, but you'll need anyway to post both CREATE queries built with phpMyAdmin or similar program to allow them to see exactly how your tales are built.

Cheers
Avatar of Spydie

ASKER

Here are the table structures...

--
-- Table structure for table `hours`
--

CREATE TABLE IF NOT EXISTS `hours` (
  `u_id` int(10) NOT NULL,
  `s_id` int(15) NOT NULL,
  `s_vist` int(10) NOT NULL DEFAULT '1',
  `date` date NOT NULL,
  `work` int(1) NOT NULL DEFAULT '0',
  `timestart` time DEFAULT NULL,
  `timeend` time DEFAULT NULL,
  `medleave` int(1) NOT NULL DEFAULT '1',
  `request` int(1) NOT NULL DEFAULT '1',
  `scrubflrs` int(1) NOT NULL DEFAULT '1',
  `temps` int(1) NOT NULL DEFAULT '1',
  `train` int(1) NOT NULL DEFAULT '1',
  `earlylater` int(1) NOT NULL DEFAULT '1',
  KEY `u_id` (`u_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- --------------------------------------------------------

--
-- Table structure for table `users`
--

CREATE TABLE IF NOT EXISTS `users` (
  `u_id` int(3) NOT NULL AUTO_INCREMENT,
  `emp_id` int(2) NOT NULL,
  `first` text,
  `last` text,
  `showlast` int(1) NOT NULL DEFAULT '0',
  `area_code` char(3) NOT NULL DEFAULT '309',
  `phone_3` char(3) DEFAULT NULL,
  `phone_4` char(4) DEFAULT NULL,
  `showphone` int(1) NOT NULL DEFAULT '1',
  `s_id` varchar(255) NOT NULL DEFAULT '1',
  `s_vist` int(10) DEFAULT NULL,
  `show` int(1) NOT NULL DEFAULT '1',
  PRIMARY KEY (`u_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=42 ;

Open in new window

Thanks again, marqusG
ASKER CERTIFIED SOLUTION
Avatar of Marco Gasi
Marco Gasi
Flag of Spain image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Thanks for points, Spydie. I hope you have solved your problem and I'm sorry I coudn't help you better :(

Cheers
Avatar of Spydie

ASKER

You're welcome, thanks for the lil help. No I have not gotten anywhere with it yet. I've been busy at work to even attempt it.