bei mir läuft das Query in einem PHP-Script und liefert mir je nach Aufrufparameter die Datensätze als CSV oder JSON, obtional gefiltert nach den Schild-Status
Code: Alles auswählen
<?php
//error_reporting(E_ERROR | E_PARSE);
// SchILD-Status
// 0 - Neuaufnahme
// 2 - Aktiv
// 6 - Externe
$Status = '2,3,6';
if (isset($_GET['auswahl']) && $_GET['auswahl'] == "neu") {
$Status = 0 ;
}
elseif (isset($_GET['auswahl']) && $_GET['auswahl'] == "aktiv") {
$Status = "2,3";
}
elseif (isset($_GET['auswahl']) && $_GET['auswahl'] == "externe") {
$Status = "6";
}
elseif (isset($_GET['auswahl']) && $_GET['auswahl'] == "alle") {
$Status = '0,2,3,6';
}
$vorwahl="01234";
$formattelefon="false";
$rows = array();
$mysqli = new mysqli("server", "datenbank", "benutzer", "passwort");
if ($mysqli->connect_errno) {
die("Verbindung fehlgeschlagen: " . $mysqli->connect_error);
}
$mysqli->set_charset('utf8');
$sql="
SELECT
(CASE STATUS
WHEN '6' THEN 'extern'
WHEN '2' THEN 'aktive'
WHEN '3' THEN 'beurlaubt'
WHEN '0' THEN 'neuaufnahme'
END) AS Status,
ID,
Klasse,
Vorname,
Name,
(CASE Geschlecht
WHEN 3 THEN 'männlich'
WHEN 4 THEN 'weiblich'
END) AS Geschlecht,
DATE_FORMAT(Geburtsdatum, '%d.%m.%Y') AS Geburtsdatum,
(CASE STATUS
WHEN 2 THEN Schueler.SchulnrEigner
WHEN 6 THEN Schueler.ExterneSchulnr
END) AS SchulNummer,
Strasse,
PLZ,
OrtAbk,
Telefon,
DATE_FORMAT(AufnahmeDatum, '%d.%m.%Y') AS AufnahmeDatum,
AbschlussDatum
FROM
Schueler
WHERE
(Schueler.Status IN (". $Status .")
AND Schueler.Geloescht = '-')
ORDER BY Schueler.Klasse ASC , Schueler.Name , Schueler.Vorname
";
$result = $mysqli->query($sql,MYSQLI_USE_RESULT);
$rows = $result->fetch_all(MYSQLI_ASSOC);
$result->free();
$mysqli->close();
if ($formattelefon == "true") {
include_once("vendor/autoload.php");
foreach ($rows as $nr => $data) {
if (isset($rows[$nr]["Telefon"])) {
$rows[$nr]["Telefon"] = preg_replace('/[^0-9]/', '', $rows[$nr]["Telefon"]);
if (strlen(str_replace(" ", "", $rows[$nr]["Telefon"])) < 9 ) {
$rows[$nr]["Telefon"] = $vorwahl . $rows[$nr]["Telefon"];
}
$phoneUtil = \libphonenumber\PhoneNumberUtil::getInstance();
try {
$NumberProto = $phoneUtil->parse($rows[$nr]["Telefon"], "DE");
//var_dump(NumberProto);
}
catch (\libphonenumber\NumberParseException $e) {
var_dump($e);
}
$rows[$nr]["Telefon"] = $phoneUtil->format($NumberProto, \libphonenumber\PhoneNumberFormat::E164);
}
}
}
if (isset($_GET["format"]) && $_GET["format"] == "csv") {
header('Content-Type: application/csv; charset=utf-8');
header("Content-Disposition:attachment;filename=schueler.csv");
$output = fopen("php://output",'w') or die("Can't open php://output");
foreach($rows as $nr => $data) {
fputcsv($output, $data, ';');
// fputs($output, implode(';', $data)."\n");
}
fclose($output) or die("Can't close php://output");
} else {
header('Content-Type: application/json');
echo json_encode($rows);
}
Damit der Block mit der Rufnummernformatierung funktioniert muss
https://github.com/giggsey/libphonenumber-for-php installiert werden.
"Der Computer rechnet mit allem - nur nicht mit seinem Besitzer." Dieter Hildebrandt