jagreygoose icon

setup script to give 20 merits to open evening peeps

jagreygoose | PRO | 11/11/14 10:23:34 PM UTC | 0 ⭐ | 280 👁️ | Never ⏰ | []
PHP |

3.15 KB

|

None

|

0 👍

/

0 👎

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

Comments