Retrieving and comparing data from arrays

Discussion in 'PHP' started by assgar, Jun 28, 2007.

  1. #1
    Hi

    I am php newbie and I don't know if I am approaching this properly.
    I need to creat a scheduler that list the appointment time on the left
    and client for a specific appointment time on the left.

    NOTE: The appointments are stored in a Mysql database

    This is what I am trying to acomplish:

    Time | client Name
    -------------------------------------------
    09:00 AM |
    10:00 AM | John Smith
    11:00 AM |
    to
    09:00 PM | Mike Smith



    The problem I am having is getting the appointments on the
    right to match up with the time on the left.


    This is what I am getting with the code below:


    Time | client Name
    ------------------------------------------------
    09:00 AM | John Smith
    10:00 AM | Mike Smith
    11:00 AM |
    to
    09:00 PM |



    
    <?
      /**--------------------------time interval--------------------**/
      //array with time interval listing found on the left side of the page
      $time_60min_array = array(
      '06:00 AM', '07:00 AM', '08:00 AM', '09:00 AM', '10:00 AM', '11:00 AM', 
      '12:00 PM', '01:00 PM', '02:00 PM', '03:00 PM', '04:00 PM', '05:00 PM', 
      '06:00 PM', '07:00 PM', '08:00 PM', '09:00 PM');
      
      /**-------------select appointment from database-----------------**/
      // select by date to match to time interval listing
      $query = "SELECT distinct(event_id), event_date, event_time, 
                             event_am_pm, first_name, last_name, 
          	    FROM cal_appointment 
      	    WHERE event_date = '$event_date'
      	    ORDER BY event_date, event_am_pm, event_time";
    
       $result = mysqli_query($mysqli, $query) or die('Error, query failed');
     
       /**-------------------------------title--------------------------**/	
      echo "<div id=\"Layer4\" style=\"position:absolute;  margin: 4px; width:
                 100%; height:20px; z-index:4; left: 4px; top: 430px;\">\n";
      echo "<table width=\"98.5%\" margin=\"\" left =\"4\" align=\"center\">
      	<tr>
        	  <td width=\"30%\" height=\"12\" align=\"center\" 
                       bgcolor=\"#eeeee0\"><span class=\"style20 
                        strong>Time</strong></span></td>
           	  <td width=\"68%\" height=\"12\" align=\"center\" 
                     bgcolor=\"#eeeee0\"><span class=\"style20\"> 
                     <strong>Patient</strong></span></td>
         	</tr>\n";
      echo "</table>\n";
      echo "</div>\n";
      
      //search area display area layer and table
      echo "<table width=\"99%\"  border=\"0\">
             <tr align=\"center\" bgcolor=\"#FFFFFF\" height=\"\">
              <td width=\"100%\" >
               <div id=\"Layer2\" style=\"position:absolute; width:100%; 
                        height:500px; z-index:2; left: 4px; top: 465px;\">
                <div id=\"scroll-box2\" style=\"overflow: auto; float: left; 
                      width: 100%; height: 480px;  margin: 5px; \">\n";
      
      
         //table begins
         echo "<table width=\"100%\" height=\"332\" left =\"4\" align = \"\" 
                    border=\"0\" font face =\"arial\">\n";
    
         
         /**--------------------------display------------------------**/
         $result = mysqli_query($mysqli, $query) or die('Error, query failed');
    
    	for($i=0; $i < count($time_60min_array ); $i++)
    	{
    		$row = mysqli_fetch_array($result); 
     
     		list($event_id, $event_date, $event_time, 
                                    $event_am_pm,$first, $last) = $row;
     		
     		
     	      //format time
    	      $appoint_time = $hour.":".$minutes." ".$am_pm;
    		
    	       //match appointment time on right to time listing on left	      
    	         if(in_array($appoint_time,  $time_60min_array))
    		  {
    			$s_event_id = $event_id; 
       		            $client_name = $last.", ".$first;
    		  }
    		
    	    //display list
    	     echo"<tr height=\"10\">
    		<td width=30% height=\"10\" bgcolor=\"$bgcolor\" 
                                   align=\"center\">$time_interval[$i]</td>
    		<td width=\"70%\"  height=\"10\" bgcolor=\"$bgcolor\"> 
                                   <span class=\"style20\">$client_name</td>\n";
         	     echo"</tr>\n";
         	 }
    ?>
    
    PHP:
     
    assgar, Jun 28, 2007 IP
  2. assgar

    assgar Peon

    Messages:
    50
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #2
    I forgot to add the end of the table structure

    
    <?
        echo"</div>\n";
          echo "</div>\n";
          echo "</td>\n";
          echo "</tr>\n";
          echo "</table>\n";
          echo "</table>\n";
    ?>
    
    PHP:
     
    assgar, Jun 28, 2007 IP
  3. assgar

    assgar Peon

    Messages:
    50
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #3
    Hello
    Thanks for the info its was the best way to make this work.


    This is the solution, this final code allows you to double book appointments.


     	 
     <? 
     
     /**---------------------------appointment interval--------------------------**/
         SWITCH($time_interval)
      	{
       	    case 10:
     	    	$add_time = 600; //10 min appointment
     	    break;
     				
     	    case 15:
     	    	$add_time = 900; //15 min appointment
     	    break;
     
     	    case 20:
     		$add_time = 1200; //20 min appointment
     	    break;
     
     	    case 30:
     		$add_time = 1800; //30 min appointment
     	    break;
     
     	    case 60:
     		$add_time = 3600; //60 min appointment
     	    break;
     
     	    default:
     		$add_time = 900; //15 min appointment
     	    break;
    	}
         /**-------------------------------search by date-----------------------------------**/
         $query = "SELECT  event_id, event_date, event_time, 
    		       first_name, last_name
    	       FROM cal_appointment 
    	       WHERE a.event_date = '$event'
    	       GROUP BY a.event_id, a.event_date, a.event_time, 
    	                first_name, last_name
    	       ORDER BY event_time, last_name, first_name
    	       ";
    	       
         $result = mysqli_query($mysqli, $query) or die('Error, query failed');
    
       
       /************************** this section displays events********************************/
    
    	/**-Note: <table> tags etc. go here**/
     
    	//declare array
    	$events = array();
    	
     	//Storing the rows rather than outputting them immediately
     	while($row = mysqli_fetch_array($result))
       	   {
                  $events[] = $row;
       	   }
    
       //Loop over the hours from 9AM to 6PM
       for ($time = $start_time; $time <= $end_time; $time += $add_time)
       	{		
    		//format 24 hour time interval for passing via url
    		$interval_24hr =  date("H:i:s", $time);
    
    		
    	      echo "<tr>";
       	      //Output the time interval label
     	      echo"<td width=\"10%\" height=\"15\" bgcolor=\"#e6e8fa\" align=\"center\">".date("h:i A", $time)."</td>";
       	 
    
          //start of next cell
          foreach ($events as $event)
       	{
       	    list($event_hr,$event_min,$event_sec) = split(":",$event['event_time']);
       	        
    	    //convert event time for comparison 
    	    $event_time = mktime($event_hr, $event_min, $event_sec);
     
          	    //Event falls into this hour
     	    if($event_time >= $time && $event_time < ($time + $add_time))
       	         {
       	           //format client name
    	  	   $client_name = $event['last_name'].", ".$event['first_name'];
    		 				
            	   //looping data diaplayed 		   
    	           echo "<td width=\"20%\"  height=\"10\" bgcolor=\"$bgcolor\"><span class=\"style20\"><div style = \"margin-left:10;\">$client_name</td>";
     		}//end if
     
             }//end foreach
       	     
         echo "</tr>";
      }//end for
      
      /**Note: end of </table> etc. goes here**/
    }
    ?>
    
    PHP:
     
    assgar, Jul 6, 2007 IP