毎年さまざまなイベントに参加しているチームをデータベース テーブルの 1 つに入力するという単調な作業のための非常に大まかなスクリプトがあります。しかし、毎回戻ってデータベースの年を修正する必要がなければ、ずっといいでしょう。
クエリを実行する年次イベントのテーブルがあり、スクリプトはそのイベントのチームのリストを取得できます。年は以下を使用して設定されます。
$year = date('Y');
チームとイベントと年の組み合わせごとに、次のクエリが実行されます。
INSERT INTO attendance (`team`,`event`,`year`) VALUES ('$team','$event','$year');
私の目にはすべて問題ないように見えますが、デバッグ時0000
にスクリプトが出力されても、年はデータベースと同じように返されます。2012
私のコードは次のとおりです。
// from shared parent script
$year = (date('m') < 9) ? date('Y') : date('Y')+1;
// attendance.php - file with code in question
<?php
header("Refresh: 43200;"); // refresh every 12 hours
ob_start();
echo "<p>Filling event rosters for the {$year} season.</p>"; ob_flush(); flush();
function getTeamList($event) {
echo "<h3>Event '{$event}':</h3>"; ob_flush(); flush();
echo "Removing old entries... "; ob_flush(); flush();
mysql_query("DELETE FROM attendance WHERE event='$event' AND year='$year'");
echo "Loading list from FIRST TIMS... "; ob_flush(); flush();
$page =
file_get_contents("https://my.usfirst.org/myarea/index.lasso?page=teamlist&event_type=FRC&event=$event&year=$year&sort_teams=number");
$page = explode('<td nowrap>',$page);
$page = implode('<td>',array_slice($page,'1'));
if ($event == 'CMP') {
$page2 =
file_get_contents("https://my.usfirst.org/myarea/index.lasso?page=teamlist&event_type=FRC&event=$event&year=$year&sort_teams=number&skip_teams=250");
$page2 = explode('<td nowrap>',$page2);
$page2 = implode('<td>',array_slice($page2,'1'));
$page = '<html><body><center><table>
<tr>
<td>'.$page.' <tr bgcolor="#FFFFFF">
<td>'.$page2;
}
$timsList = new DOMDocument;
$timsList->loadHTML($page);
$listings = $timsList->getElementsByTagName('a');
echo "Adding all current entries... "; ob_flush(); flush();
foreach ($listings as $listing) {
if (is_numeric($listing->nodeValue)) {
$team = $listing->nodeValue;
$query = "INSERT INTO attendance (`team`,`event`,`year`) VALUES ('$team','$event','$year')"; // Build SQL query for events
mysql_query($query);
}
}
echo "Done."; ob_flush(); flush();
if ($event == 'CMP') {
$div = array('archimedes','curie','galileo','newton');
foreach ($div as $division) {
mysql_query("DELETE FROM attendance WHERE event='$division' AND year='$year'");
$page =
file_get_contents("https://my.usfirst.org/myarea/index.lasso?page=teamlist&event_type=FRC&event=$event&division=$division&year=$year&sort=teamnum");
$page = explode('<td nowrap>',$page);
$page = implode('<td>',array_slice($page,'1'));
$timsList = new DOMDocument;
@$timsList->loadHTML($page);
$listings = $timsList->getElementsByTagName('a');
foreach ($listings as $listing) {
if (is_numeric($listing->nodeValue)) {
$team = $listing->nodeValue;
$query = "INSERT INTO attendance (`team`,`event`,`year`) VALUES ('$team','$division','$year')"; // Build SQL Query
for Divisions
mysql_query($query);
}
}
}
}
}
if (isset($_GET["event"])) {
$event = strtoupper(mysql_real_escape_string($_GET["event"]));
mysql_select_db("frc");
getTeamList($event);
} else {
mysql_select_db("frc_{$year}scouting");
$events = mysql_query("SELECT id FROM event WHERE event.start >= NOW()") or die(mysql_error());
mysql_select_db("frc");
while ($row = mysql_fetch_array($events)) {
$event = $row['id'];
getTeamList($event);
}
}
?>