jagreygoose

setup script to give 20 merits to open evening peeps

Nov 11th, 2014
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.15 KB | None | 0 0
  1. <?php
  2.  
  3. /*
  4. * Emerit Ticket (setup script to give 20 merits to open evening peeps)
  5. * Tested up to 20000 rows
  6. * URL SCHEME: /?id=8888,8887,8886,8885&merits=20
  7. * Database variables need to be set for your own environment
  8. */
  9.  
  10. # Local timezone
  11. define('TIME_ZONE','Europe/London');
  12. # Database driver /database name /charset
  13. define('DB_DSN', 'mysql:host=localhost;dbname=Emerit;charset=utf8');
  14. # Database username
  15. define('DB_USER', 'root');
  16. # Database password
  17. define('DB_PASSWORD', 'admin');
  18. # Device ID
  19. define('DEVICE_ID', 'SCRIPT');
  20.  
  21. # Student ID
  22. $getStudentID = filter_input(INPUT_GET,"id",FILTER_SANITIZE_STRING);
  23. # Create an array from comma delimited get input
  24. $getStudentIDArray = explode(',', $getStudentID);
  25. # Amount of merits to award
  26. $getAmount = filter_input(INPUT_GET,"merits",FILTER_SANITIZE_STRING);
  27.  
  28.  
  29. /*
  30. * PDO connection block
  31. * Prints error & dies if connection can't be made
  32. */
  33. try
  34. {
  35.     $CONN = new PDO(DB_DSN,DB_USER,DB_PASSWORD);
  36.     $CONN->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
  37. }
  38. catch(PDOException $e)
  39. {
  40.     echo "Error: " . $e->getMessage();
  41.     # MYSQL MyISAM doesn't support transactions
  42.     $CONN->rollback();
  43.     die($CONN = null);
  44. }
  45.  
  46. /*
  47. * Get date & time
  48. * Sets datetime for locality
  49. * @param string local timezone
  50. * @return array date( d-m ) & time( H:i )  
  51. */
  52. function dateTimeNow($TZ)
  53. {
  54.     $timeZone = new DateTimeZone($TZ);
  55.     $dateTime = new DateTime();
  56.     $dateTime->setTimezone($timeZone);
  57.     $dateNow = $dateTime->format('d-m');
  58.     $timeNow = $dateTime->format('H:i');
  59.     return array(
  60.                 "date" => $dateNow,
  61.                 "time" => $timeNow
  62.                 );
  63. }
  64.  
  65. # Access array with $now['date'] & $now['time']
  66. $now = (dateTimeNow(TIME_ZONE));
  67.  
  68.  
  69.  
  70. # Strictly stated single row INSERT example
  71. // $Statement = $CONN->prepare("INSERT INTO EMerits(EMeritNo, StudentID, Time, Date, DeviceID, DateUploaded, TimeUploaded) VALUES(:EMeritNo, :StudentID, :Time, :Date, :DeviceID, :DateUploaded, :TimeUploaded)");
  72. // $Statement->execute(array("EMeritNo" => null,
  73. //                  "StudentID" => $STUDENTID,
  74. //                  "Time" => $now['time'],
  75. //                  "Date" => $now['date'],
  76. //                  "DeviceID" => "SCRIPT",
  77. //                  "DateUploaded" => $now['date'],
  78. //                  "TimeUploaded" => $now['time']));
  79.  
  80.  
  81. $merits = array(
  82.               #array(null, '8888', $now['time'], $now['date'], 'SCRIPT', $now['date'], $now['time'])
  83.                );
  84.  
  85. # fill merits array with student id * specified merits quantity
  86. foreach ($getStudentIDArray as $getStudentEl) {
  87.     $studentEL = $getStudentEl;
  88.     for($i=0; $i < $getAmount; $i++)
  89.     {
  90.         $merits[] = array(null, $studentEL, $now['time'], $now['date'], DEVICE_ID, $now['date'], $now['time']);
  91.  
  92.     }
  93. }
  94.  
  95. # VALUES from $merits array for each insert
  96. $params = implode(",", array_fill(0, count($merits[0]), "?"));
  97. # SQL query for a single table row / merit
  98. $sql = "INSERT INTO EMerits VALUES ($params)";
  99. #prepare statement
  100. $Statement = $CONN->prepare($sql);
  101.  
  102. # Execute 1 insert statement at a time
  103. foreach ($merits as $merit)
  104. {
  105.     $Statement->execute($merit);
  106. }
  107.  
  108. # Arbitrary feedback
  109. echo "<pre>";
  110. echo "Student(s) Id: ";
  111. print_r($getStudentIDArray);
  112. echo "<br />";
  113. echo "Amount of Merits: " . $getAmount;
  114. echo "</pre>";
Advertisement
Add Comment
Please, Sign In to add comment