Jump to content

[SOLVED] Retrieving and comparing data from arrays


assgar

Recommended Posts

Retrieving and comparing data from arrays

 

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";
     	 }
?>

      Hi

      Thanks for responding.

 

    I forgot to include the end of the table structure.

 

      echo"</div>\n";

      echo "</div>\n";

      echo "</td>\n";

      echo "</tr>\n";

      echo "</table>\n";

      echo "</table>\n";

?>

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**/
}
?>

Archived

This topic is now archived and is closed to further replies.

×
×
  • 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.