Statistik - Boote auf Fahrt

Diskussion, Fragen, Anregungen und Wünsche zu efa2

Moderatoren: nick, smg

Forumsregeln
Verfasse bitte die Beiträge in den passenden Kategorien und gib ihnen einen aussagekräftigen Betreff.
Antworte bitte nur zum Thema und beginne ein neues Thema, falls Du noch etwas Zusätzliches sagen möchtest.
Antworten
RV-OSCH
Beiträge: 8
Registriert: Di 2. Sep 2014, 10:48
Kontaktdaten:

Statistik - Boote auf Fahrt

Beitrag von RV-OSCH » Sa 7. Jan 2017, 20:44

Hallo Nick, hallo Community,

besteht die Möglichkeit eine Statistik zu erstellen die darstellt welche Boote sich zur Zeit auf Fahrt befinden, sowie seit wann und wo hin? Falls ja wie funktioniert es diese so konfigurieren, habe in den normalen Einstellungen der Statistiken nicht die passenden Optionen gefunden. Wir würden so etwas nämlich gerne in unsere Vereinswebsite integrieren, damit unsere Mitglieder von zu Hause aus sehen können ob ihr Wunschboot zur Zeit verfügbar ist.

Rudersportliche Grüße von der Hamme,
Trainer
Ruder-Verein Osterholz-Scharmbeck von 1901 e.V.

iww-martin
Beiträge: 266
Registriert: Fr 24. Feb 2012, 15:42
Wohnort: Itzehoe
Kontaktdaten:

Re: Statistik - Boote auf Fahrt

Beitrag von iww-martin » Mo 9. Jan 2017, 11:11

Hallo Youri,

so geht es...
Statistiktyp: Weitere
Statistikart: Bootsstatus
Statistikschlüssel: Name

Die Statistik zeigt in der Ausgabeart "intern" oder "HTML" vier Spalten: Name, Basis-Status, aktueller Status, Bemerkungen.

Lässt man die Statistik als xml-Datei ausgeben hat man pro Boot bis zu vier Attribute:

Code: Alles auswählen

  <Item index="1">
    <Name>Apfelsine (Verein)</Name>
    <Field1>verfügbar</Field1>
    <Field2>verfügbar</Field2>
  </Item>

  <Item index="37">
    <Name>Aufunddavon (Max Mustermann)</Name>
    <Field1>verfügbar</Field1>
    <Field2>unterwegs</Field2>
    <Field3>unterwegs auf Wanderfahrt seit 09.01.2017 um 10:15 mit Mustermann, Max</Field3>
  </Item>

  <Item index="123">
    <Name>Nichtda (Verein)</Name>
    <Field1>verfügbar</Field1>
    <Field2>unterwegs</Field2>
    <Field3>unterwegs auf Wanderfahrt seit 09.01.2017 um 10:20 mit Mustermann, Erika</Field3>
  </Item>

  <Item index="189">
    <Name>Schrotti (Verein)</Name>
    <Field1>verfügbar</Field1>
    <Field2>verfügbar</Field2>
    <Field3>Bootsschaden: Boot undicht (Boot nicht benutzbar)</Field3>
  </Item>
Ich gehe davon aus, dass ihr nur Vereinsboote auf Eurer Internetseite zeigen wollt.

Wir geben bei allen unseren Booten als "Namenszusatz" im Bootsstamm entweder den Namen des Besitzers an oder tragen bei Vereinsbooten "Verein" ein.
So lassen sich die Vereins- und Privatboote in den Auswahllisten und hier in der Statistik unterscheiden....

Entweder man nutzt so eine Namenskonvention, um aus der xml-Struktur für alle Boote die "Vereinsboote" auszufiltern
oder man setzt in der Statistik einen Filter für "Eigentümer" und lässt nur die "Vereinsboote" ausgeben.

Hinweis: Vereinsboote sind alle Boote, bei denen im Bootsstamm im Feld "Eigentümer (Fremdboot)" nichts eingetragen ist. Bei Privatbooten sollte man hier konsequent den Namen des Besitzers eintragen.

Das Beispiel zeigt Dir zwei Boote, die unterwegs sind (<Field2>unterwegs</Field2>) und ein Boote, für das ein Bootsschaden gemeldet wurde. Das Boot ist zwar "verfügbar" (<Field2>verfügbar</Field2>) aber trotzdem nicht nutzbar (<Field3>Bootsschaden: Boot undicht (Boot nicht benutzbar)</Field3>)...

Deine Anforderung lässt sich derzeit
(1) mit der Ausgabe dieser Statistik als xml-Datei und der Aufbereitung mit einem php-Skript oder
(2) mit der Ausgabe der Statistik als HTML
lösen.

Unter "Ausgabefelder" / "Weitere" kann man die Ausgabe der Spalte "Bemerkungen" unterdrücken, um nicht die Namen der Bootsnutzer ausgeben zu lassen.
Man verliert aber Informationen über Boote mit offenen Bootsschäden, die ohne den notwendigen Hinweis auf die eingeschränkte Nutzbarkeit dann als "verfügbar" in der Liste stehen...

Mit der xml-Variante habt ihr die volle Kontrolle über die Ausgabe.
Hier ein kleines php-Skript als Anregung...

Code: Alles auswählen

<?php

  $sFileName = "status.xml";
  if (file_exists($sFileName))
  { 
    $xml = simplexml_load_file( $sFileName );  

    print "<h1>Boote auf Fahrt</h1>\r\n";

    print "<table>\r\n";
    print "<tr><td>Bootsname</td><td>Status1</td><td>Status2</td><td>Bemerkung</td></tr>\r\n";

    foreach ( $xml->Data as $d )  
    {  
       foreach ( $d->Item as $boat )
       {
         if (($boat["summary"] != "true") and (($boat->Field2 == "unterwegs") or isset($boat->Field3)))
         {
           print "<tr>";
           print "<td>".utf8_decode($boat->Name)."</td>";
           print "<td>".utf8_decode($boat->Field1)."</td>";
           print "<td>".utf8_decode($boat->Field2)."</td>";
           print "<td>".utf8_decode($boat->Field3)."</td>";
           print "</tr>\r\n";
         }
       }
    }  
    print "</table>\r\n";
  }
?> 
Das php-Skript liest eine xml-Datei, die von der oben beschriebenen Statistik erzeugt wurde, unterdrückt die Ausgabe der Summenzeile und zeigt nur die Boote, die "unterwegs" sind (<Field2>unterwegs</Field2>) oder bei denen etwas in Spalte "Bemerkung" (<Field3>.....</Field3>) steht. Das kann ein Bootsschaden sein oder die Angabe, wer mit dem Boot unterwegs ist. Die Ausgabe müsst Ihr anpassen, um nur das zu zeigen, was gezeigt werden soll...

Viele Grüße
Martin

Itzehoer Wasser-Wanderer e.V.
Zuletzt geändert von iww-martin am Di 17. Jan 2017, 16:41, insgesamt 2-mal geändert.

iww-martin
Beiträge: 266
Registriert: Fr 24. Feb 2012, 15:42
Wohnort: Itzehoe
Kontaktdaten:

Re: Statistik - Boote auf Fahrt

Beitrag von iww-martin » Di 10. Jan 2017, 11:28

...eine kleine Ergänzung.

Wenn im Fahrtenbuch Bootsreservierungen erlaubt sind, müssen auf einer Internetseite
zur Anzeige der derzeit nicht verfügbaren Boote auf Fahrt oder Booten mit Schäden
auch die aktuellen Reservierungen gezeigt werden.

Auch für die Bootsreservierungen gibt eine Statistik
Statistiktyp: Weitere
Statistikart: Bootsreservierungen
Statistikschlüssel: Name

Für die Ausgabearten und die Aufbereitung gilt die Beschreibung wie in meinem letzten Post. Das php-Skript sollte sich relativ leicht anpassen lassen,
um eine Übersicht der aktuellen Bootsreservierungen auf einer Internetseite auszugeben, die den gewünschten Datenschutzanforderungen genügt.
Man wird sicherlich nicht den Namen des Nutzers und seine Mobiltelefonnummer öffentlich machen wollen.

Viele Grüße
Martin

Itzehoer Wasser-Wanderer e.V.

RV-OSCH
Beiträge: 8
Registriert: Di 2. Sep 2014, 10:48
Kontaktdaten:

Re: Statistik - Boote auf Fahrt

Beitrag von RV-OSCH » Di 24. Jan 2017, 13:49

Hallo Martin,

vielen Dank für deine Hilfe. Hast du eine Idee wie man es realisieren kann, dass bei Field3 (Bemerkungen) nur "unterwegs nach Testziel seit 24.01.2017 um 11:30" ausgegeben wird, statt "unterwegs nach Testziel seit 24.01.2017 um 11:30 mit Mustermann, Max"?

Rudersportliche Grüße von der Hamme,
Trainer
Ruder-Verein Osterholz-Scharmbeck von 1901 e.V.

iww-martin
Beiträge: 266
Registriert: Fr 24. Feb 2012, 15:42
Wohnort: Itzehoe
Kontaktdaten:

Re: Statistik - Boote auf Fahrt

Beitrag von iww-martin » Mi 25. Jan 2017, 13:29

Hallo Youri,

hier php-Code um die Namensangabe aus der Bemerkung zu entfernen:

Code: Alles auswählen

<?php

  $sBemerkung = "unterwegs nach Testziel seit 24.01.2017 um 11:30 mit Mustermann, Max";
  $sSucheNach = " mit ";

  print $sBemerkung."<br>\r\n";

  $sBemerkung = strrev($sBemerkung);
  $nRest = stripos($sBemerkung,strrev($sSucheNach))+strlen($sSucheNach);
  $sBemerkung = strrev($sBemerkung);
  $sBemerkung = substr($sBemerkung,0,-$nRest);

  print $sBemerkung."<br>\r\n";

?>
Im Prinzip wird nach der Zeichenreihe " mit " im Text gesucht und der folgende Text inklusive " mit " abgeschnitten.
Das klappt nur auf direkten Weg, wenn man ausschließen könnte, dass eine Zielangabe nicht ein weiteres " mit " enthält. Wir müssen also das letzte " mit " vor der Namensangabe finden...

Deshalb drehe ich die Bemerkung

unterwegs nach Testziel seit 24.01.2017 um 11:30 mit Mustermann, Max

mit strrev() um

xaM ,nnamretsuM tim 03:11 mu 7102.10.42 ties leiztseT hcan sgewretnu

suche nach der Position von " tim " (dem ebenfalls umgedrehten " mit "), merke mir die Länge und schneide die dann von der wieder mit strrev() zurückgedrehten Bemerkung ab.
Das Ergebnis ist

unterwegs nach Testziel seit 24.01.2017 um 11:30

Das Umdrehen stellt sicher, dass immer das letzte " mit " - das vor dem Namen - gefunden wird.

Das klappt solange die Zeichenreihe " mit " nicht im Namen der Person vorkommt. ;-)
Das dürfte aber nur ein theoretischer Ausnahmefall sein...

Viele Grüße
Martin

Itzehoer Wasser-Wanderer e.V.

RV-OSCH
Beiträge: 8
Registriert: Di 2. Sep 2014, 10:48
Kontaktdaten:

Re: Statistik - Boote auf Fahrt

Beitrag von RV-OSCH » Do 26. Jan 2017, 14:56

Hallo Martin,

vielen Dank für deine Hilfe. Leider scheitere ich irgendwie daran, dass ganze in das von dir verfasste Skript zu integrieren. PHP ist irgendwie nicht grade meine Stärke. Ich habe es mit folgendem versucht:

Code: Alles auswählen

<?php

  $sFileName = "status.xml";
  if (file_exists($sFileName))
  { 
    $xml = simplexml_load_file( $sFileName );  

    print "<h1>Boote auf Fahrt</h1>rn";

    print "<table>rn";
    print "<tr><td>Bootsname</td><td>Bemerkung</td></tr>rn";

    foreach ( $xml->Data as $d )  
    {  
       foreach ( $d->Item as $boat )
       {
         if (($boat["summary"] != "true") and (($boat->Field2 == "unterwegs") or isset($boat->Field3)))
         {
           print "<tr>";
           print "<td>".utf8_decode($boat->Name)."</td>";
		    $sBemerkung = ".utf8_decode($boat->Field3).";
			$sSucheNach = " mit ";

			print $sBemerkung."<br>rn";

			$sBemerkung = strrev($sBemerkung);
			$nRest = stripos($sBemerkung,strrev($sSucheNach))+strlen($sSucheNach);
			$sBemerkung = strrev($sBemerkung);
			$sBemerkung = substr($sBemerkung,0,-$nRest);

		   print "<td>"$sBemerkung."</td>";
           print "</tr>rn";
         }
       }
    }  
    print "</table>rn";
  }
?>
Hat leider nur eine Fehlermeldung verursacht, statt dem gewünschten Ergebnis. Hast du eine Idee, wie ich das hinbekomme?

Rudersportliche Grüße von der Hamme,
Youri
Trainer
Ruder-Verein Osterholz-Scharmbeck von 1901 e.V.

iww-martin
Beiträge: 266
Registriert: Fr 24. Feb 2012, 15:42
Wohnort: Itzehoe
Kontaktdaten:

Re: Statistik - Boote auf Fahrt

Beitrag von iww-martin » Do 26. Jan 2017, 16:59

Hallo Youri,

versuch es mal mit...

Code: Alles auswählen

<?php

  $sFileName = "status.xml";
  if (file_exists($sFileName))
  {
    $xml = simplexml_load_file( $sFileName ); 

    print "<h1>Boote auf Fahrt</h1>\r\n";

    print "<table>\r\n";
    print "<tr><td>Bootsname</td><td>Bemerkung</td></tr>\r\n";

    foreach ( $xml->Data as $d ) 
    { 
       foreach ( $d->Item as $boat )
       {
         if (($boat["summary"] != "true") and (($boat->Field2 == "unterwegs") or isset($boat->Field3)))
         {
           print "<tr>";
           print "<td>".utf8_decode($boat->Name)."</td>";

           $sBemerkung = utf8_decode($boat->Field3);
           $sSucheNach = " mit ";
           $sBemerkung = strrev($sBemerkung);
           $nRest = stripos($sBemerkung,strrev($sSucheNach))+strlen($sSucheNach);
           $sBemerkung = strrev($sBemerkung);
           $sBemerkung = substr($sBemerkung,0,-$nRest);

           print "<td>".$sBemerkung."</td>";
           print "</tr>\r\n";
         }
       }
    } 
    print "</table>\r\n";
  }
?>
Viele Grüße
Martin

Itzehoer Wasser-Wanderer e.V.

RV-OSCH
Beiträge: 8
Registriert: Di 2. Sep 2014, 10:48
Kontaktdaten:

Re: Statistik - Boote auf Fahrt

Beitrag von RV-OSCH » Do 2. Feb 2017, 12:01

Hallo Martin,

vielen Dank nochmals für deine Hilfe. Nun funktioniert es so wie wir uns das vorgestellt haben. Habe das Ganze, dann mit Hilfe von CSS noch ein wenig optisch ansprechender gestaltet und auf der Vereinshomepage sichtbar gemacht.

Rudersportliche Grüße,
Youri
Trainer
Ruder-Verein Osterholz-Scharmbeck von 1901 e.V.

iww-martin
Beiträge: 266
Registriert: Fr 24. Feb 2012, 15:42
Wohnort: Itzehoe
Kontaktdaten:

Re: Statistik - Boote auf Fahrt

Beitrag von iww-martin » Do 2. Feb 2017, 13:45

Hallo Youri,

...das sieht gut aus. Eine kleine Änderung habe ich noch für Dich. Das zuvor gepostete php-Skript schneidet etwas Text ab, auch wenn im Text kein " mit " vorkommt.
Deshalb zeigt Deine Ausgabe bei den beiden Bootsschäden nicht "...nutzbar)" sonder nur "...benut"... :roll:

Eine weitere kleine Änderung behebt das Problem:

Code: Alles auswählen

<?php

  $sFileName = "status.xml";
  if (file_exists($sFileName))
  {
    $xml = simplexml_load_file( $sFileName );

    print "<h1>Boote auf Fahrt</h1>\r\n";

    print "<table>\r\n";
    print "<tr><td>Bootsname</td><td>Bemerkung</td></tr>\r\n";

    foreach ( $xml->Data as $d )
    {
       foreach ( $d->Item as $boat )
       {
         if (($boat["summary"] != "true") and (($boat->Field2 == "unterwegs") or isset($boat->Field3)))
         {
           print "<tr>";
           print "<td>".utf8_decode($boat->Name)."</td>";

           $sBemerkung = utf8_decode($boat->Field3);
           $sSucheNach = " mit ";
           $sBemerkung = strrev($sBemerkung);
           if (stripos($sBemerkung,strrev($sSucheNach)) !== false)
           {
              $nRest = stripos($sBemerkung,strrev($sSucheNach))+strlen($sSucheNach);
              $sBemerkung = strrev($sBemerkung);
              $sBemerkung = substr($sBemerkung,0,-$nRest);
           }
           else
             $sBemerkung = strrev($sBemerkung);

           print "<td>".$sBemerkung."</td>";
           print "</tr>\r\n";
         }
       }
    }
    print "</table>\r\n";
  }
?>
Viele Grüße
Martin

Itzehoer Wasser-Wanderer e.V.

Antworten