2016-11-08 2 views
0

Grundsätzlich habe ich eine Website, die der Benutzer zwei Daten eingeben kann. Wenn sie auf "Senden" klicken, wird eine Tabelle angezeigt, in der nur Daten zwischen diesen beiden Daten angezeigt werden.Pop-up-Sprichwort "Datei wird heruntergeladen" aber nichts passiert

Wenn ich auf den Download-Button klicke, erscheint ein Popup, dass die Datei heruntergeladen wird, aber nichts passiert.

Ich habe bereits gegooglet und sah ein paar Antworten auf diese Frage, aber während ich keine Fehler bekomme, wird die Datei immer noch nicht heruntergeladen. Sollte ich einfach einen anderen Ansatz versuchen?

Hier ist meine PHP-Code:

<?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); 


?> 

Hier ist der 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> 

Jede Hilfe würde geschätzt.

Antwort

0

Sie scheinen, dass

<table> 

vor, wenn innerhalb der letzten

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

Ausgeben werden. Dies ist nicht möglich, da Header ausgegeben werden müssen, bevor Inhalte ausgegeben werden. Ich schlage vor, Sie den Code setzen von

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

in einer anderen PHP-Datei mit dem Namen AdminDateDownload.php dann auf die Aktion der zweiten Form ändern:

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

Add target = "_ blank" so zu verstehen, ein bisschen einfacher, was passiert.

+0

Ich habe die Anpassungen vorgenommen, aber die Datei wird immer noch nicht heruntergeladen :(irgendwelche anderen Vorschläge durch Zufall. – Alexis

Verwandte Themen