PHP Classes

File: examples/serverside.php

Recommend this page to a friend!
  Classes of Barton Phillips   MySQL Slideshow   ???   Download  
File: examples/???
Role: Example script
Content type: text/plain
Description: Example script
Class: MySQL Slideshow
Present slideshow from images listed in a database
Author: By
Last change: Update of examples/serverside.php
Date: 1 month ago
Size: 4,177 bytes
 

Contents

Class file image Download
<?php
// This is a server side example

// Start a PHP Session

session_start();

// This file has the MySqlSlideshow class

require_once("mysqlslideshow.class.php"); // This instantiates $ss

// for use in <form action="$self" tags.

$self = $_SERVER['PHP_SELF'];

// Check for Microsoft Internet Explorer -- because everything Microsoft makes is broken!

$isIe = preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']);
//$isIe = true;
$ieMsg = $isIe ? '<p style="color: red">Microsoft Internet Explorer Version, because Microsoft can not do it like anyone else!</p>' : "";

// This file should not be in the Apache path for security reasons
//********************
// Start of Slide Show Logic

// NOTE THE ORDER. STOP must be before START and session checking.
// One could of course design this section differently so the
// order was not important but this is only an example of using the CLASS.

if($_POST['stop']) {
  unset(
$_SESSION['next']);
  echo <<<EOF
<html>
<head>
  <title>Slideshow Example: Server Side Version</title>
</head>
<body>
<h1>Slide Show Example: Server Side Version</h1>
$ieMsg
<form action="
$self" method="post">
<input type="submit" name="start" value="Start"/>
</form>
</body>
</html>
EOF;
  exit();
}

if(
$_POST['start']) {
 
$_SESSION['next'] = "next";
}

if(
$_SESSION['next'] == "next") {
 
$inx = $_SESSION['index'];
 
$ids = $_SESSION['ids'];

 
// Microsoft test
 
 
if(!$isIe) {
   
$images = $_SESSION['images'];
 
   
// getImage() returns an assoc array ['data'], ['mime']
    // ['data'] is base64 by default. If a second argument is provided as 'raw' then the data is the raw image data.

   
$info = $ss->getInfo($ids[$inx]);
   
$subject = $info['subject'];
   
$desc = $info['description'];

   
$data = $images[$inx++];
   
$_SESSION['index'] = ($inx > count($ids)-1) ? 0 : $inx;
 
   
$image = $data['data']; // image in base64
   
$mime = $data['mime']; // mime type like "image/gif" etc.
 
} else {
   
// Handle BROKEN Browser!
   
   
$image = $ss->getImage($ids[$inx], 'data', '')['data']; //"mysqlslideshow.php?image=$ids[$inx]&israw=1";
   
$info = $ss->getInfo($ids[$inx++]);
   
$_SESSION['index'] = ($inx > count($ids)-1) ? 0 : $inx;
   
$subject = $info['subject'];
   
$desc = $info['description'];
  }
 
  echo <<<EOF
<html>
<head>
  <title>Slideshow Example: Server Side Version</title>
  <!-- Set Refresh for every 5 seconds -->
  <meta http-equiv="Refresh" content="5"; url="http://localhost/test.php" />
</head>
<body>
<h1>Slide Show Example: Server Side Version</h1>
$ieMsg
<form action="
$self" method="post">
<input type="submit" name="stop" value="Stop"/>
</form>
<p>Image:
$inx</p>
<img src="
$image" alt="" width="500" /><br>
<p>Subject:
$subject, Description: $desc</p>
</body>
</html>
EOF;
  exit();
}

//++++++++++++++++++++

// First Page

// Get a list of id's.
// This function takes one optional arguments:
// $where: defaults to "", the where conditions of the query.
// You can add where conditions like this for example: "type = 'link' && data like('%bill%.jpg')" then you
// would only get link type rather than data type entries and only links with the name bill and jpegs.

$ids = $ss->getImageIds();

// Set the session up.

$_SESSION['ids'] = $ids;
$_SESSION['index'] = 0; // Start at the beginning

// Get all the images
// For NON IE browsers we can cache the images.

if(!$isIe) {
 
$images = Array();

  for(
$i=0; $i < count($ids); ++$i) {
   
$images[$i] = $ss->getImage($ids[$i], 'link');
  }
 
$_SESSION['images'] = $images;
}

// Here is the example of a slide show.
// We have two buttons "Start" and "Stop"
// and the table with the slideshow mysqlslideshow table displayed (not everything just some).
//
// The style is to add borders and padding to the table.
//

$display = $ss->displayAllImageInfo();

echo <<<EOF
<html>
<head>
<style type="text/css">
#displayAllImageInfo * {
  border: 1px solid black;
  padding: 0 10px;
}
</style>
</head>

<body>
<h1 id="maintitle">Slide Show Example: Server Side Version</h1>
$ieMsg
<div id="startstop">
<form action="
$self" method="post">
<input type="submit" name="start" value="Start"/>
</form>
</div>
$display
</body>
</html>
EOF;