2016-11-08 12 views
0

基本的に私はユーザーが2つの日付を入力できるウェブサイトを持っています。 [送信]をクリックすると、その2つの日付間のデータのみが表示される表が表示されます。「ファイルがダウンロード中です」というポップアップが表示されますが、何も起こっていません

ダウンロードボタンをクリックすると、ファイルがダウンロードされていても何も起こらないことがポップアップ表示されます。

私はすでにグーグルでこの質問に対するいくつかの回答を見ていますが、エラーは発生しませんが、ファイルはまだダウンロードされません。私はちょうど別のアプローチを試みるべきですか?

<?php 

    session_start(); 
    include_once("Connection.php"); 
    $StartDate = $_POST['startDate']; 
    $EndDate = $_POST['endDate']; 
    $InstructorID = $_SESSION["InstructorID"]; 


    $sql = "SELECT Instructors.InstructorName, Class.ClassName, Class.ClassType, CLASS_STUDENT.Semester, CLASS_STUDENT.Year, Students.StudentName, TUTOR_STUDENT.ClassID, TUTOR_STUDENT.Date, 
     TUTOR_STUDENT.TopicCovered, TUTOR_STUDENT.BeginTime, TUTOR_STUDENT.EndTime, TUTOR_STUDENT.TotalMinutes, Tutors.TutorName, TUTOR_STUDENT.Categories 
     FROM Instructors 
     INNER JOIN Class 
     ON Instructors.InstructorID = Class.InstructorID 
     INNER JOIN CLASS_STUDENT 
     ON Class.ClassID = CLASS_STUDENT.ClassID 
     INNER JOIN Students 
     ON CLASS_STUDENT.StudentUsername = Students.StudentUsername 
     INNER JOIN TUTOR_STUDENT 
     ON Students.StudentUsername = TUTOR_STUDENT.StudentUsername 
     INNER JOIN Tutors 
     ON TUTOR_STUDENT.TutorUsername = Tutors.TutorUsername 
     WHERE TUTOR_STUDENT.Date >= '$StartDate' AND TUTOR_STUDENT.Date <= '$EndDate' AND TUTOR_STUDENT.ClassID = CLASS_STUDENT.ClassID 
     ORDER BY TUTOR_STUDENT.Date"; 

    $result = mysqli_query($link, $sql); 

    if ($result->num_rows > 0) 
    { 

     echo " 
        <table> 
         <tr> 
          <th>Date</th> 
          <th>Class Name</th> 
          <th>Year</th> 
          <th>Semester</th> 
          <th>Topic Covered</th> 
          <th>Begin Time</th> 
          <th>End Time</th> 
          <th>Total Minutes</th> 
          <th>Tutor Name</th> 
          <th>Student Name</th> 
          <th>Catergory</th> 

         </tr> 
          "; 

          // output data of each row 
       while($row = $result->fetch_assoc()) 
       { 
         echo " 
          <tr> 
           <td>".$row["Date"]. "</td> 
         "; 
         echo " 
           <td>".$row["ClassName"]. "</td> 
         "; 
         echo " 
           <td>".$row["Year"]. "</td> 
         "; 
         echo " 
           <td>".$row["Semester"]. "</td> 
         "; 
         echo " 
           <td>".$row["TopicCovered"]. "</td> 
         "; 
         echo " 
           <td>".$row["BeginTime"]. "</td> 
         "; 
          echo " 
           <td>".$row["EndTime"]. "</td> 
         "; 
         echo " 
           <td>".$row["TotalMinutes"]. "</td> 
         "; 
          echo " 
           <td>".$row["TutorName"]. "</td> 
         "; 
         echo " 
           <td>".$row["StudentName"]. "</td> 
         "; 
         echo " 
           <td>".$row["Categories"]. "</td> 
         "; 

         echo "</tr>"; 
            } 
         echo "</table>"; 

    } 
    else 
     echo "You have no tutoring sessions between those two dates."; 

    if (isset($_POST['downloadAdminDate'])) 
    { 

     $data = "Date,ClassName,Year,Semester,TopicCovered,BeginTime,EndDate,TotalMinutes,TutorName,StudentName,Categories\n"; 
     while($row = mysqli_fetch_array($result)) 
     { 
      $data.=$row['Date'].","; 
      $data.=$row['ClassName'].","; 
      $data.=$row['Year'].","; 
      $data.=$row['Semester'].","; 
      $data.=$row['TopicCovered']."\n"; 
      $data.=$row['BeginTime'].","; 
      $data.=$row['EndTime'].","; 
      $data.=$row['TotalMinutes'].","; 
      $data.=$row['TutorName'].","; 
      $data.=$row['StudentName']."\n"; 
      $data.=$row['Categories']."\n"; 

     } 

     $data_final = chr(255).chr(254).mb_convert_encoding($data, "UTF-16LE","UTF-8"); 
     header("Content-type: text/csv; charset=UTF-8"); 
     header("Content-Disposition: attachment; filename=Export.csv"); 

     print $data_final; 
     exit; 


    } 



    mysqli_close($link); 


?> 

がここにHTMLです:任意の助けをいただければ幸いです

<p id ="byDate"> Search all tutoring sessions by date.</p> 
     <form id ="SearchByDate" action ="AdminDate.php" method="post"> 
      Start Date <input = "textbox" type="date" name ="startDate" value="" required/> 
      End Date <input = "textbox" type="date" name ="endDate" value="" required/> </br> 
      </br> 
      <button class ="button" type="submit" name = "searchDateSubmit" id ="searchDateSubmit" value ="submit"> Submit </button> 
     </form> 
     </br> 
     </br> 

     <div id ="searchDateContainer"> Date results are displayed here. 
     </div> 
     </br> 
     </br> 
     <form id ="downloadAdminDate" action="AdminDate.php" method="post"> 
     <button class ="download" type="submit" name ="downloadAdminDate" id    ="downloadDate" value="submit"> Download File </button> 
     </form> 

は、ここに私のPHPコードです。

答えて

0

次の場合、最後の内部

header("Content-type: text/csv; charset=UTF-8"); 

前に、その

<table> 

を出力しているようです。 コンテンツを出力する前にヘッダーを出力する必要があるため、これを行うことはできません。あなたが理解して、「ブランク_」=ターゲットを追加

<form id ="downloadAdminDate" action="AdminDateDownload.php" method="post" target="_blank"> 

:私は、その後に第2の形態の動作を変更するには、AdminDateDownload.php と呼ばれる別のphpファイルで

if (isset($_POST['downloadAdminDate'])) { 

からのコードを入れてお勧め 起こっていることをもう少し簡単にする。

+0

私は調整を行いましたが、まだファイルはダウンロードされていません。 – Alexis

関連する問題