首页 > 解决方案 > 在我的页面上动态显示数组数据

问题描述

我有一个网站可以显示越野比赛的结果。当每个运动员越过终点线时,我们会将几个 .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>';

标签: phparraysdynamicdisplay

解决方案


推荐阅读