Seite 1 von 1

Export WebUntis

Verfasst: Mittwoch 31. August 2022, 09:15
von ChrMim
Hallo zusammen,

wir als BK haben mit hoher Fluktuation und Verschiebung von Schüler:innen zu tun. Um WebUntis als Stundenplananzeigetool aktuell zu halten, ist es mehrfach die Woche notwendig alle Schüler:innen aus SchILD zu exportieren und in WebUntis zu importieren.

Meine Fragen:
  • Ist es möglich den Export aus SchILD zu automatisieren?
  • Ist ein Zugriff abseits von SchILD mit einer SQL-Abfrage denkbar?
  • Kann sowas vielleicht zeitgesteuert erfolgen?
Grüße

Christian Mimberg

Re: Export WebUntis

Verfasst: Mittwoch 31. August 2022, 11:15
von kroerig
Hallo Herr Mimberg,

auf welcher Datenbank laufen Sie? Für MySQL hatte ich ein Query. Allerdings müssen Sie den Import in WebUntis/Untis manuell machen. Hier gibt es keine API.

Gruß

Klaus Rörig

Re: Export WebUntis

Verfasst: Mittwoch 31. August 2022, 18:25
von Raffenberg
In Schild2 wird es soetwas nicht geben. In Schild3 hätte Untis dann die Möglichkeit, am SVWS-Server über eine API zu interagieren. Das wird aber noch etwas dauern.

Re: Export WebUntis

Verfasst: Samstag 3. September 2022, 15:21
von ChrMim
kroerig hat geschrieben: Mittwoch 31. August 2022, 11:15 Hallo Herr Mimberg,

auf welcher Datenbank laufen Sie? Für MySQL hatte ich ein Query. Allerdings müssen Sie den Import in WebUntis/Untis manuell machen. Hier gibt es keine API.

Gruß

Klaus Rörig
Wir betreiben eine SQL-Datenbank.

An dem Query wäre ich sehr interessiert.

Danke

Christian Mimberg

Re: Export WebUntis

Verfasst: Donnerstag 15. September 2022, 21:24
von calloj
sorry falscher Beitrag....

Re: Export WebUntis

Verfasst: Sonntag 18. September 2022, 11:08
von Raffenberg
Mit dem Query könnte man ein Powershell-Script schreiben, welches die benötigte Datei über den Datenbankzugriff erzeugt und über die Aufgabenplanung zeitgesteuert ausgeführt wird.

Re: Export WebUntis

Verfasst: Sonntag 18. September 2022, 13:11
von kroerig
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.

Re: Export WebUntis

Verfasst: Mittwoch 22. März 2023, 10:42
von ChrMim
Raffenberg hat geschrieben: Mittwoch 31. August 2022, 18:25 In Schild2 wird es soetwas nicht geben. In Schild3 hätte Untis dann die Möglichkeit, am SVWS-Server über eine API zu interagieren. Das wird aber noch etwas dauern.
Das klingt doch positiv. Wann wird es denn die erste Version von SchILD3 geben?

Re: Export WebUntis

Verfasst: Mittwoch 22. März 2023, 13:14
von Raffenberg
In der Aplha-Phase wird Schild3 schon jetzt von Fachberatern getestet.

Alle Beteiligten streben eine Beta-Phase mit wenigen Testschulen nach der Schulstatistik in diesem Jahr an. Der offizielle Start wird dann wenige Monate später sein.

Da aber noch immer Anpassungen an der Datenbank stattfinden, nageln Sie mich bitte hier nicht fest.