Hallo,
ich habe ein Formular mit zwei Datumsfeldern und zwei Submit-Buttons. Der eine Button soll eine SQL Abfrage als HTML Tabelle anzeigen, der andere Button soll die SQL Abfrage in eine CSV-Datei schreiben und dem User zum Download anbieten. Über die Datumsfelder wird ein Filter in die SQL Abfrage eingebaut. Es funktioniert alles soweit auch gut, bis auf einen kleinen Fehler. Wenn ich zuerst den "Show" Button klicke, wird die Tabelle angezeigt. Wenn ich danach den Zeitraum ändere und den Download-Button klicke, dann bleibt die vorherige Ausgabe stehen. Kann mir jemand sagen woran das liegt?
Danke!
Hier mein Code:
ich habe ein Formular mit zwei Datumsfeldern und zwei Submit-Buttons. Der eine Button soll eine SQL Abfrage als HTML Tabelle anzeigen, der andere Button soll die SQL Abfrage in eine CSV-Datei schreiben und dem User zum Download anbieten. Über die Datumsfelder wird ein Filter in die SQL Abfrage eingebaut. Es funktioniert alles soweit auch gut, bis auf einen kleinen Fehler. Wenn ich zuerst den "Show" Button klicke, wird die Tabelle angezeigt. Wenn ich danach den Zeitraum ändere und den Download-Button klicke, dann bleibt die vorherige Ausgabe stehen. Kann mir jemand sagen woran das liegt?
Danke!
Hier mein Code:
PHP:
<?php
require_once 'includes/database.class.php';
require_once 'includes/export_functions.php';
$conn = database::getInstance();
$conn->connect();
if (isset($_POST['formData'])) {
$data = $_POST['formData'];
$datefrom = $data['datefrom'];
$dateto = $data['dateto'];
} else {
//calculate last quarter
$date = date_create('today'); //oder hier Datum rein zum testen
$month = $date->format('m'); $year = $date->format('Y');
$month_q = $month - ($month-1) % 3; //Monat des akt.Quartals
$str_curr_q = $year.'-'.$month_q.'-01'; //akt.Quartal Anfang als string
//letztes. Quartal Anfang = akt.Quartal Anfang - 3 Monate
$datefrom = date_format(date_create('-3 month '.$str_curr_q),"Y-m-d");
// letztes. Quartal Ende = akt.Quartal Anfang - 1 Tag
$dateto = date_format(date_create('-1 day '.$str_curr_q),"Y-m-d");
}
?>
<div class="page-header">
<h1>Report of entered Data</h1>
</div>
<form>
<label>Please select timeframe</label><br />
<input type="date" name="formData[datefrom]" value="<?php echo $datefrom; ?>" required /> to
<input type="date" name="formData[dateto]" value="<?php echo $dateto; ?>" required />
<button name="formData[submit]" value="show" formaction="index.php?page=report" formmethod="post">Show</button>
<button name="formData[submit]" value="download" formaction="index.php?page=report" formmethod="post">Download</button><br />
</form>
<?php if (isset($_POST['formData'])) {
if ($data['submit']=="show") { /* Ergebnisausgabe nur wenn Show-Button gedrückt wurde */?>
<div class="col-md-6">
<table class="table table-striped">
<thead>
<tr>
<th>Spalte 1</th>
<th>Spalte 2</th>
</tr>
</thead>
<tbody>
<?php
// SQL-Befehl ausführen
if($results = $conn->doQuery("SELECT spalte1, spalte2 FROM table1 WHERE enddate BETWEEN '".$datefrom."' AND '".$dateto."' ORDER BY spalte1")) {
while ($list = $results->fetch_object()){
echo "<tr>";
echo "<td>".$list->spalte1."</td>";
echo "<td>".$list->spalte2."</td>";
echo"</tr>";
}
}
?>
</tbody>
</table>
</div>
<?php
$results->close();
} elseif ($data['submit']=="download") {
$headers = array('spalte1', 'spalte2');
$sql = "SELECT spalte1, spalte2 FROM table1 WHERE enddate BETWEEN '".$datefrom."' AND '".$dateto."' ORDER BY spalte1";
export_csv($headers, $sql); /* Funktion in export_functions.php */
exit();
}
// Verbindung zum Datenbankserver beenden
$conn->close();
}
?>