2017-02-07 4 views
0

나는 아래에 링크가 제공되는 엑셀 시트를 가지고 있습니다. 이 시트에서 나는 cse의 세 섹션을 주었다. https://i.stack.imgur.com/aHidC.png PHP에서 표시하고 싶습니다. 날짜 선택 도구와 섹션에서 날짜를 선택하고 해당 섹션을 드롭 다운하면 부재자가 표시됩니다. 나는 이것을 어떻게하는지 모른다.datepicker에서 선택한 날짜를 기준으로 다른 데이터를 얻는 방법은 무엇입니까?

$students = [ 
    ['CSE-A' => 'PRESENT'], 
    ['CSE-A' => 'PRESENT'], 
    ['CSE-B' => 'ABSENT'], 
    ['CSE-B' => 'ABSENT'], 
    ['CSE-A' => 'ABSENT'], 
    ['CSE-B' => 'PRESENT'], 
    ['CSE-B' => 'ABSENT'], 
    ['CSE-A' => 'ABSENT'], 
    ['CSE-C' => 'ABSENT'], 
    ['CSE-C' => 'PRESENT'] 
]; 

$outputs = []; 

foreach($students as $array) { 
    foreach($array as $key => $value) { 
     if (!isset($outputs[$key])) { 
      $outputs[$key] = [ 
       'present' => 0, 
       'absent' => 0, 
      ]; 

     } 

     //check value 
     if ($array[$key] === 'PRESENT') { 
      $outputs[$key]['present']++; 
     } else if ($array[$key] === 'ABSENT') { 
      $outputs[$key]['absent']++; 
     } 
    } 
} 

foreach($outputs as $key => $value) { 
    echo $key. 
    "\n"; 
    echo "Present Totals: ".$value['present']. 
    "\n"; 
    echo "absent Totals: ".$value['absent']. 
    "\n"; 
    echo "--------------\n"; 
} 

나는 이것을 시도했다. 그러나 datepicker의 날짜와 드롭 다운의 섹션에서 선택한 날짜에 학생의 유언 및 결석을 표시하는 방법이 혼란 스럽습니다.

+0

당신은 데이터가 드롭 다운 및 날짜 선택기에서 옵션을 선택하거나 버튼을 갖고 싶어하고, 사용자가 해당 버튼 페이지가 새로 고쳐 원하는 데이터 (학생들을 클릭하면 후 바로 인쇄 할 하시겠습니까 presntees 및 결석) 인쇄 할 수 있습니까? – Thanasis

+0

날짜 및 섹션이 날짜 피커 및 기간 제한에서 선택 될 때 데이터를 원합니다. – user7399549

답변

0

확인. 필요한 코드는 다음과 같습니다. 나는 그것을 테스트하고 작동합니다.

설명 : 현재보기의 누벨과 결석 수를 포함하여 테이블에있는 날짜와 cse와 일치하는 모든 항목에 대해 div를 만듭니다. 그런 다음 javascript를 사용하여 선택 항목을 선택하면 날짜와 선택 항목이 모두 선택되었는지 확인합니다. '예'일 경우 선택한 날짜와 cse가 표시된 div를 만듭니다. 대응하는 div가 없다면 (해당 일에 해당 배열에 학생이 없기 때문에) 적절한 메시지가 표시됩니다. 그렇지 않으면 선택한 날짜와 cse에 대한 데이터가 표시됩니다.

댓글의 내용은 댓글에 포함되어 있습니다. 질문이 있거나 다른 것을 원한다면 알려주십시오.

<html> 

<?php 

$students = array 
    (
    array('CSE-A','PRESENT',"2-10-2017"), 
    array('CSE-A','PRESENT',"2-10-2017"), 
    array('CSE-B','ABSENT',"3-10-2017"), 
    array('CSE-B','ABSENT',"3-10-2017"), 
    array('CSE-A','ABSENT',"3-10-2017"), 
    array('CSE-B','PRESENT',"4-10-2017"), 
    array('CSE-B','ABSENT',"4-10-2017"), 
    array('CSE-A','ABSENT',"5-10-2017"), 
    array('CSE-C','ABSENT',"5-10-2017"), 
    array('CSE-C','PRESENT',"5-10-2017") 
); 

$outputs = []; 

foreach($students as $array) { 
    $cse = $array[0]; 
    $present = $array[1]; 
    $date = $array[2]; 
    $entry = $cse.", ".$date; 
    if (!isset($outputs[$entry])) { 
     $outputs[$entry] = [ 
      'present' => 0, 
      'absent' => 0, 
     ]; 

    } 

    //check value 
    if ($present === 'PRESENT') { 
     $outputs[$entry]['present']++; 
    } else if ($present === 'ABSENT') { 
     $outputs[$entry]['absent']++; 
    } 
} 



// Save all availbale cse, for the dropdown choices 
$all_cse = array(); 
foreach($students as $array) { 
    $cse = $array[0]; 
    array_push($all_cse,$cse); 
} 
$all_cse = array_combine($all_cse, $all_cse); 

// Save all availbale dates, for the dropdown choices 
$all_dates = array(); 
foreach($students as $array) { 
    $date = $array[2]; 
    array_push($all_dates,$date); 
} 
$all_dates = array_combine($all_dates, $all_dates); 

?> 

<body> 

<select id="cse" onchange="myFunction()"> 
<option disabled selected value> -- select an option -- </option> 
<?php 

foreach($all_cse as $cse) { 
    echo "<option value='".$cse."'>".$cse."</option>"; 
} 

?> 
</select> 

<select id="dates" onchange="myFunction()"> 
<option disabled selected value> -- select an option -- </option> 
<?php 

foreach($all_dates as $date) { 
    echo "<option value='".$date."'>".$date."</option>"; 
} 

?> 
</select> 
<br><br> 
<div id="data"> 

</div> 

<?php 

foreach($outputs as $key => $value) { 

    // Create a div for every match of cse and date that exists. 

    echo "<div id='".$key."' style='display:none;'>"; 

    "<br>"; 
    echo "Present Totals: ".$value['present']. 
    "<br>"; 
    echo "absent Totals: ".$value['absent']. 
    "<br>"; 

    echo "</div>"; 
} 

?> 

</body> 
</html> 

<script type="text/javascript"> 
var lastDiv; 

function myFunction() { 
    var date = document.getElementById("dates").value; 
    var cse = document.getElementById("cse").value; 

    if (cse!="" && date!=""){ 

     // Make invisible the div for the previous choice 
     if (lastDiv!=null){ 
      lastDiv.style.display = "none"; 
     } 

     lastDiv = document.getElementById(cse + ", " + date); 

     // Make visible the div for the current choice 
     if (lastDiv!=null){ 
      document.getElementById("data").innerHTML = cse +"<br>Date: " + date; 
      lastDiv.style.display = "block"; 
     } else { 
      document.getElementById("data").innerHTML = "No matches found for this cse in this date."; 
     } 
    } 
} 
</script> 
관련 문제