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

Link to comment
Share on other sites

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

?>

Link to comment
Share on other sites

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

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.