Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /*
- * Emerit Ticket (setup script to give 20 merits to open evening peeps)
- * Tested up to 20000 rows
- * URL SCHEME: /?id=8888,8887,8886,8885&merits=20
- * Database variables need to be set for your own environment
- */
- # Local timezone
- define('TIME_ZONE','Europe/London');
- # Database driver /database name /charset
- define('DB_DSN', 'mysql:host=localhost;dbname=Emerit;charset=utf8');
- # Database username
- define('DB_USER', 'root');
- # Database password
- define('DB_PASSWORD', 'admin');
- # Device ID
- define('DEVICE_ID', 'SCRIPT');
- # Student ID
- $getStudentID = filter_input(INPUT_GET,"id",FILTER_SANITIZE_STRING);
- # Create an array from comma delimited get input
- $getStudentIDArray = explode(',', $getStudentID);
- # Amount of merits to award
- $getAmount = filter_input(INPUT_GET,"merits",FILTER_SANITIZE_STRING);
- /*
- * PDO connection block
- * Prints error & dies if connection can't be made
- */
- try
- {
- $CONN = new PDO(DB_DSN,DB_USER,DB_PASSWORD);
- $CONN->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
- }
- catch(PDOException $e)
- {
- echo "Error: " . $e->getMessage();
- # MYSQL MyISAM doesn't support transactions
- $CONN->rollback();
- die($CONN = null);
- }
- /*
- * Get date & time
- * Sets datetime for locality
- * @param string local timezone
- * @return array date( d-m ) & time( H:i )
- */
- function dateTimeNow($TZ)
- {
- $timeZone = new DateTimeZone($TZ);
- $dateTime = new DateTime();
- $dateTime->setTimezone($timeZone);
- $dateNow = $dateTime->format('d-m');
- $timeNow = $dateTime->format('H:i');
- return array(
- "date" => $dateNow,
- "time" => $timeNow
- );
- }
- # Access array with $now['date'] & $now['time']
- $now = (dateTimeNow(TIME_ZONE));
- # Strictly stated single row INSERT example
- // $Statement = $CONN->prepare("INSERT INTO EMerits(EMeritNo, StudentID, Time, Date, DeviceID, DateUploaded, TimeUploaded) VALUES(:EMeritNo, :StudentID, :Time, :Date, :DeviceID, :DateUploaded, :TimeUploaded)");
- // $Statement->execute(array("EMeritNo" => null,
- // "StudentID" => $STUDENTID,
- // "Time" => $now['time'],
- // "Date" => $now['date'],
- // "DeviceID" => "SCRIPT",
- // "DateUploaded" => $now['date'],
- // "TimeUploaded" => $now['time']));
- $merits = array(
- #array(null, '8888', $now['time'], $now['date'], 'SCRIPT', $now['date'], $now['time'])
- );
- # fill merits array with student id * specified merits quantity
- foreach ($getStudentIDArray as $getStudentEl) {
- $studentEL = $getStudentEl;
- for($i=0; $i < $getAmount; $i++)
- {
- $merits[] = array(null, $studentEL, $now['time'], $now['date'], DEVICE_ID, $now['date'], $now['time']);
- }
- }
- # VALUES from $merits array for each insert
- $params = implode(",", array_fill(0, count($merits[0]), "?"));
- # SQL query for a single table row / merit
- $sql = "INSERT INTO EMerits VALUES ($params)";
- #prepare statement
- $Statement = $CONN->prepare($sql);
- # Execute 1 insert statement at a time
- foreach ($merits as $merit)
- {
- $Statement->execute($merit);
- }
- # Arbitrary feedback
- echo "<pre>";
- echo "Student(s) Id: ";
- print_r($getStudentIDArray);
- echo "<br />";
- echo "Amount of Merits: " . $getAmount;
- echo "</pre>";
Advertisement
Add Comment
Please, Sign In to add comment