php - 在我的页面上动态显示数组数据
问题描述
我有一个网站可以显示越野比赛的结果。当每个运动员越过终点线时,我们会将几个 .csv 文件上传到我们的服务器。这种情况每秒都会发生。然后我们抓取 .csv 文件数据并将它们放入一个数组中。然后,我们在我们的网站上显示从第一名到最后一名的数组数据。但是我想立即显示数据,目前我们必须选择比赛并在数据显示之前点击提交按钮 我想选择比赛,并在不按提交按钮和/或刷新的情况下显示数据页。这是我的代码。
这部分代码抓取 .csv 数据并将其放入数组中
//races
$array = array();$header = NULL;
if (($handle = fopen("races.csv", "r")) !== FALSE){
while (($row = fgetcsv($handle, 0, ",")) !== FALSE){
if(!$header){
$header = $row;
}else{
$val = array_combine($header, $row);
$races[$val['ID']]=$row;
$startDateTimeAry = preg_split( '/\.|\:/', $val['StartDateTime']);//$val['ID'];
$startTime = ($startDateTimeAry[1]*60 + $startDateTimeAry[2]) + ($startDateTimeAry[3]/1000);
$startTimeAry[$val['ID']] = $startTime;
}
}
fclose($handle);
}
//==============================================================================
//divisions
$array = array();$header = NULL;
if (($handle = fopen("divisions.csv", "r")) !== FALSE){
while (($row = fgetcsv($handle, 0, ",")) !== FALSE){
if(!$header){
$header = $row;
}else{
$val = array_combine($header, $row);
$divisions[$val['ID']]=$row;
}
}
fclose($handle);
}
//==============================================================================
//splits
$array = array();$header = NULL;
if (($handle = fopen("splits.csv", "r")) !== FALSE){
while (($row = fgetcsv($handle, 0, ",")) !== FALSE){
if(!$header){
$header = $row;
}else{
$val = array_combine($header, $row);
//if(intval($val['AthleteID']) != 0){
$splits[$val['AthleteID']]= $row;
//}
$rows[]=$row;
$place[$val['SplitDateTime']] = $$row;
}
}
fclose($handle);
}
//==============================================================================
//teams
$array = array();$header = NULL;
if (($handle = fopen("teams.csv", "r")) !== FALSE){
while (($row = fgetcsv($handle, 0, ",")) !== FALSE){
if(!$header){
$header = $row;
}else{
$val = array_combine($header, $row);
$teams[$val['ID']]=$row;
}
}
fclose($handle);
}
//==============================================================================
//athletes
$array = array();$header = NULL;
if (($handle = fopen("Athletes.csv", "r")) !== FALSE){
while (($row = fgetcsv($handle, 0, ",")) !== FALSE){
if(!$header){
$header = $row;
}else{
$val = array_combine($header, $row);
if(trim($val['BibNumber']) == "" || trim($val['BibNumber']) == 0 || trim($val['BibNumber']) == "0"){
$val['BibNumber'] = "C".str_pad(trim($val['ID']), 5, '0', STR_PAD_LEFT);
}
$athletes[$val['RaceID']][]=$row;
}
}
fclose($handle);
}
//==============================================================================
//Full Array
foreach($athletes[$_REQUEST['RaceId']] as $key => $AthletesArray){
$splitDateTimeAry = preg_split( '/\.|\:/', $splits[$AthletesArray[0]][2]);
$finishTime = ($splitDateTimeAry[0]*3600 + $splitDateTimeAry[1]*60 + $splitDateTimeAry[2]) + ($splitDateTimeAry[3]/1000);
$startDateTimeAry = preg_split( '/\.|\:/', $races[$AthletesArray[1]][13]);
$startTime = ($startDateTimeAry[0]*3600 + $startDateTimeAry[1]*60 + $startDateTimeAry[2]) + ($startDateTimeAry[3]/1000);
$final = floatval($finishTime) - floatval($startTime);
$finish = secToTimeFormat($final);
if($final > 0){
$athletesAry[$AthletesArray[0]]['Id'] = $AthletesArray[0];
$athletesAry[$AthletesArray[0]]['Name'] = $AthletesArray[4].' '.$AthletesArray[5];
$athletesAry[$AthletesArray[0]]['TeamName'] = $teams[$AthletesArray[17]][1];
$athletesAry[$AthletesArray[0]]['BibNumber'] = $AthletesArray[2];
$athletesAry[$AthletesArray[0]]['FinishDateTime'] = $splits[$AthletesArray[0]][2];
$athletesAry[$AthletesArray[0]]['StartDateTime'] = $races[$AthletesArray[1]][13];
$athletesAry[$AthletesArray[0]]['FinishTimeSeconds'] = $final;
$athletesAry[$AthletesArray[0]]['FinishTimeFormatted'] = $finish;
$athletesAry[$AthletesArray[0]]['TeamId'] = $AthletesArray[17];
$athletesAry[$AthletesArray[0]]['Scorers'] = $races[$AthletesArray[1]][21];
$athletesAry[$AthletesArray[0]]['Displacers'] = $races[$AthletesArray[1]][22];
}
}
//$beforecunk[] = $order;
//$order = array_chunk($order,10);
$athletesArysort = array_sort($athletesAry,'FinishTimeSeconds',SORT_ASC);
$n=1;
foreach($athletesArysort as $key => $array){
//$athletesAry[$array['Id']]['Place'] = $key;
$athletesAry[$key]['Place'] = $n;
$n++;
$athletesOnTeam[$athletesAry[$key]['TeamId']]++;
/*$athletesXxxxx[$athletesArysort[$key]['TeamId']][] = $athletesArysort[$key]['Name'];
}
foreach($athletesXxxxx as $keyXxxx => $aryXxxx){
foreach($aryXxxx as $key2Xxxx => $valXxxx){
echo $keyXxxx." => ".$key2Xxxx." => ".$valXxxx."<BR>";
}*/
}
$athletesAry = array_sort($athletesAry,'FinishTimeSeconds',SORT_ASC);
$place=1;
$scorers = $races[$_REQUEST['RaceId']][21];
$displacers = $races[$_REQUEST['RaceId']][22];
foreach($athletesAry as $key => $array){
/*
//==========================================================================
//$ccTeam[$_REQUEST['RaceId']][$order[$key][1]]['points'] += $key;
//$ccTeam[$_REQUEST['RaceId']][$order[$key][1]]['teamId'] = $order[$key][7];
$ccTeam[$_REQUEST['RaceId']][$athletesAry[$key][7]]['points'] += $key;
$ccTeam[$_REQUEST['RaceId']][$athletesAry[$key][7]]['name'] = $athletesAry[$key][1];
$ccTeam[$_REQUEST['RaceId']][$athletesAry[$key][7]]['scorers'] = $athletesAry[$key][8];
$ccTeam[$_REQUEST['RaceId']][$athletesAry[$key][7]]['displacers'] = $athletesAry[$key][9];
$ccteamsDeChunked = array_merge($ccTeam);//oposite of array_chunked
$ccteamsDeChunked = $ccteamsDeChunked[0];//sets key value merged array
$ccteamsDeChunked = array_sort($ccteamsDeChunked,'points',SORT_ASC);
//==========================================================================
*/
if(intval($teamAthletesCount[$athletesAry[$key]['TeamId']]) == 0){$teamAthletesCount[$athletesAry[$key]['TeamId']] = 1;}
if(intval($teamAthletesCount[$athletesAry[$key]['TeamId']]) > $scorers && intval($teamAthletesCount[$athletesAry[$key]['TeamId']]) <= ($scorers + $displacers) && strpos($athletesAry[$key]['TeamName'],"unattached") === false){
$place++;
}
if(intval($teamAthletesCount[$athletesAry[$key]['TeamId']]) <= $scorers && $athletesOnTeam[$athletesAry[$key]['TeamId']] >= $scorers && strpos($athletesAry[$key]['TeamName'],"unattached") === false){
$teamScorersPointsTemp[$_REQUEST['RaceId']][$athletesAry[$key]['TeamId']]['points'] += $place;
$teamScorersPointsTemp[$_REQUEST['RaceId']][$athletesAry[$key]['TeamId']]['athleteName'][] = $athletesAry[$key][0];
$ary[$athletesAry[$key]['TeamId']] += $place;
$teamScorersPointsTemp[$_REQUEST['RaceId']][$athletesAry[$key]['TeamId']]['name'] = $athletesAry[$key]['TeamName'];
$test1[$_REQUEST['RaceId']][$athletesAry[$key]['TeamId']] .= $place.",";
$test3[$_REQUEST['RaceId']][$athletesAry[$key]['Name']] .= $place.",";
$test4[$_REQUEST['RaceId']][$athletesAry[$key]['TeamId']][$athletesAry[$key]['Name']] .= $place.",";
$place++;
}
$teamAthletesCount[$athletesAry[$key]['TeamId']]++ ;
}
asort($ary);
$n=1;
foreach($ary as $key => $val){
$teamScorersPoints[$_REQUEST['RaceId']][$key] = $teamScorersPointsTemp[$_REQUEST['RaceId']][$key];
$teamScorersPoints[$_REQUEST['RaceId']][$key]['place'] = $n;
$n++;
}
asort($ary);
$n=1;
foreach($ary as $key => $val){
$teamScorersPoints[$_REQUEST['RaceId']][$key] = $teamScorersPointsTemp[$_REQUEST['RaceId']][$key];
$teamScorersPoints[$_REQUEST['RaceId']][$key]['place'] = $n;
$n++;
}
下一部分选择比赛并显示结果。你可以在这里查看它的运行情况。 https://meetsystems.org/individualresults2.php
echo' <div align="center">';
echo "<DIV STYLE='overflow-x:auto; border:1px solid #A6C9E2;margin:auto 0px;padding:5px;width:600px;' CLASS='corner-all'>";
echo '<form style="margin:0px;padding:0px;" id="form1" name="form1" action="" method="post">';
echo 'Division<select id="RaceId" name="RaceId" style="width:100%;">';
echo '<option value="">Select...</option>';
foreach($races as $RaceId => $RaceArray)
echo '<option '.(($_REQUEST['RaceId']==$RaceId)?"SELECTED":"").' value="'.$RaceId.'">'.$RaceArray[1].'</option>';
echo '</select>';
echo '<button type="submit" style="margin:10px 0px 0px 0px;">Submit</button>';
echo '</form>';
//==============================================================================
//Table indvidual
if(isset($_REQUEST['RaceId'])){
echo'<div class="divTableBody"></div>';
echo'<div class="divTableRow"></div>';
echo'<div class="divTableCell">Athlete</div>';
echo'<div class="divTableCell">Team Name</div>';
echo'<div class="divTableCell">Bib</div>';
//echo'<div class="divTableCell">Split Time</div>';
//echo'<div class="divTableCell">Start Time</div>';
//echo'<div class="divTableCell">Time in sec</div>';
echo'<div class="divTableCell">Finish Time</div>';
echo'<div class="divTableCell">Place</div>';
//echo'<div class="divTableCell">Points</div>';
foreach($athletesAry as $key => $array){
echo'<div class="divTableRow"></div>';
echo'<div class="divTableCell">'.$array['Name'].'</div>';
echo'<div class="divTableCell">'.$array['TeamName'].'</div>';
echo'<div class="divTableCell">'.$array['BibNumber'].'</div>';
//echo'<div class="divTableCell">'.$array['FinishDateTime'].'</div>';
//echo'<div class="divTableCell">'.$array[4].'</div>';
//echo'<div class="divTableCell">'.$array[5].'</div>';
echo'<div class="divTableCell">'.$array['FinishTimeFormatted'].'</div>';
echo'<div class="divTableCell">'.$array['Place'].'</div>';
//echo'<div class="divTableCell">'.$array['Points'].'</div>';
//echo'</div>';
//echo'</div>';
//echo'</div>';
//echo '</div>';
}
//echo '</div>';
}
echo'</div>';
echo '<br>';
//==============================================================================
//Table team
echo 'Team Scores';
echo "<DIV STYLE='overflow-x:auto; border:1px solid #A6C9E2;margin:auto 0px;padding:5px;width:600px;' CLASS='corner-all'>";
if(isset($teamScorersPoints[$_REQUEST['RaceId']])){
echo'<div class="divTableBody"></div>';
echo'<div class="divTableRow"></div>';
echo'<div class="divTableCell">Team Name</div>';
echo'<div class="divTableCell">Points</div>';
echo'<div class="divTableCell">Place</div>';
//echo '<td>Split Time</td>';
//echo '<td>Start Time</td>';
//echo '<td>Time in sec</td>';
//echo '<td>Finish Time</td>';
//echo '<td>Place</td>';
//echo '</tr>';
foreach($teamScorersPoints[$_REQUEST['RaceId']] as $key => $array){
//foreach($teamScorersPoints[$_REQUEST['RaceId']]['athleteName'] as $key => $array2){}
echo'<div class="divTableRow"></div>';
echo'<div class="divTableCell">'.$array['name'].'</div>';
echo'<div class="divTableCell">'.$array['points'].'</div>';
echo'<div class="divTableCell">'.$array['place'].'</div>';
}
echo'</div>';
}
echo'</div>';
解决方案
推荐阅读
- c - 有人可以给我一个 C 中回调函数的具体例子吗?
- c++ - 在具有相同类型的模板内使用模板
- python - 方程组 SciPy
- neural-network - 神经网络,未指定的输入大小
- kubernetes - 如何在 `KubernetesPodOperator` 中引用 DAG 的执行日期?
- c# - 多线程应用程序中基于上下文的依赖注入
- google-chrome-extension - 有没有办法在 Cypress 上访问 chrome 扩展背景页面?
- apache-spark - 从 Spark 访问 Openstack Swift - SwiftAuthenticationFailedException
- ios - 如何在某个字符串处停止正则表达式并捕获子字符串?
- c - 为什么是阶乘 13!不适用于 unsigned long long int?