TERMIN Verwaltung

Programmierung der FHZ-Zentralen mit contronics homeputer Standard / homeputer Studio & WEB-Server

Moderator: Co-Administratoren

Antworten
Tobbi35
Beiträge: 362
Registriert: 24.03.2007, 19:45

TERMIN Verwaltung

Beitrag von Tobbi35 » 29.05.2013, 17:41

Hallo FHZ ler,
ich benötige mal hilfe.
Ich setzte noch die Erweiterung von Bümpi ein ,die Terminverwaltung,
jetzt bekomme ich immer die Fehlermeldung in TERMINABRUFEN php List out of bounds(1)
kann mir einer sagen was das bedeutet und ^wie ich den Fehler wieder weg bekomme.

Gruß Tobbi

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: TERMIN Verwaltung

Beitrag von buempi » 29.05.2013, 18:23

Hallo Tobbi

Kannst du mal einen Screenshot von dieser Fehlermeldung machen, damit man näher eingrenzen kann, woher die kommt?

Viele Grüsse
Bümpi

Tobbi35
Beiträge: 362
Registriert: 24.03.2007, 19:45

Re: TERMIN Verwaltung

Beitrag von Tobbi35 » 30.05.2013, 14:34

Hallo Bümpi,
im Meldungsfenster kommt beim aufrufen von TermineAbrufen folgende Meldung.

30.05.2013 14:29:58 Error executing PHP-Script in TermineAbrufen: List index out of bounds (1)

Nach einem Festplattencrash mußte ich alles neu aufsetzten und seit dem hab ich das Problem :-(
Gestern habe ich nochmal die Termine.dbf gegen deine erste ausgetauscht ,hat aber leider nix geholfen :-(

Gruß Tobbi

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: TERMIN Verwaltung

Beitrag von buempi » 30.05.2013, 14:43

Hallo Tobbi

Hast du die Datei php_dbase.dll auch ins Homeputer-Verzeichnis kopiert? Achtung: Es muss diejenige aus dem Download von Contronics sein, nicht irgendeine aus dem Netz!

Sonst gib doch mal an, welche PHP-Dateien du im Homeputer-Verzeichnis hast und stelle das Makro in TermineAbrufen hier ein, so wie du es hast (es gab ja unterschiedliche Versionen).

Viele Grüsse
Bümpi

Tobbi35
Beiträge: 362
Registriert: 24.03.2007, 19:45

Re: TERMIN Verwaltung

Beitrag von Tobbi35 » 30.05.2013, 15:27

Hallo Bümpi,
die dll ist von contronics und liegt imm Homputerverzeichnis.
Ich hab das Verzeichnis schon geändert weil ich da noch ein Problem gesehen hab, wars aber auch nicht.
Ich arbeite mit WIN7 , sollte ich vielleicht noch sagen.

Code: Alles auswählen

<?
  $Termine = "";
  $TermineAnsagen = "";

  $dbase_identifier = dbase_open("C:\ProgramData\Termine\Termine.dbf", 0);
  if ($dbase_identifier)
  {
    $numrecords = dbase_numrecords($dbase_identifier);

    // Hier statt 14 die Anzahl Tage eintragen, für die auch künftige fällige Termine
    // angezeigt werden sollen. Wenn keine künftigen Termine gewünscht sind, 0 eintragen
    $LastValidDate = date("Ymd", time() + 3600*24 * 2);

    for ($i = 1; $i <= $numrecords; $i++)
    {
      $record = dbase_get_record_with_names($dbase_identifier, $i);
      $recDate = rtrim($record['TERMIN']);
      $recText = rtrim($record['TEXT']);
      $recOptn = rtrim($record['WER']);

      //Abbruch wenn Abfrageende erreicht ist
      if ($LastValidDate < $recDate) break;

      //Prüfen, ob der Datensatz nicht als "gelöscht" markiert ist...
      if ($record['deleted'] != 1)
      {
        //ASCII in ANSI wandeln
        $recText = iconv("CP850","ISO-8859-2",$recText);
        $recOptn = iconv("CP850","ISO-8859-2",$recOptn);

        $TerminText = $TerminAussprache = $recText;
        if (strpos(" " . $recText, "%x") > 0)
        {
          //Alter berechnen und String ersetzen
          $GebJahr = substr($recText, strlen($recText)-4, 4);
          $Alter = substr($recDate, 0, 4) - $GebJahr;
          $TerminText = str_replace("%x", $Alter, $recText);

          //passenden Aussprachestring erzeugen
          if ($Alter == 1)              $AlterGesprochen = "Erster";
          else if ($Alter == 3)         $AlterGesprochen = "Dritter";
          else if (($Alter % 100) == 1) $AlterGesprochen = ($Alter - ($Alter %100)) . "Erster";
          else if (($Alter % 100) == 3) $AlterGesprochen = ($Alter - ($Alter %100)) . "Dritter";
          else if (($Alter % 100) > 19) $AlterGesprochen = $Alter . "sder";
          else                          $AlterGesprochen = $Alter . "ter";
          $TerminAussprache = str_replace("%x.", $AlterGesprochen, $recText);//mit Punkt: x-tes Jahr
          $TerminAussprache = str_replace("%x", $Alter, $TerminAussprache);//ohne Punkt: Alter
          //Jahreszahl aus dem Aussprachestring entfernen
          $TerminAussprache = rtrim ($TerminAussprache,  "0123456789 ,!?.");
        }

        //Ansagetext erzeugen, wenn Option nicht "Keine Ansage" UND Termin heute
        if ((strcasecmp($recOptn, "Keine Ansage") != 0) && ($recDate == date("Ymd")))
        {
          $TermineAnsagen .= $TerminAussprache . "! ";
        }

        if ($recDate  < date("Ymd") &&
           (strpos(" " .$Termine, "Verpasste Termine:") == 0)) $Termine .= "Verpasste Termine:<<";

        if ($recDate == date("Ymd") &&
           (strpos(" " .$Termine, "Heutige Termine:") == 0)) $Termine .= "Heutige Termine:<<";

        if ($recDate  > date("Ymd") &&
           (strpos(" " .$Termine, "Künftige Termine:") == 0)) $Termine .= "Künftige Termine:<<";

///////////////////////////////////////////////////////////////////////////////////////////////////////
//
//
// Hier können individuelle Erweiterungen, die sich z.B. auf die "Optionen" beziehen eingefügt werden.
//
// Bitte beachten: Das Termin-Heutedatum ($recDate) liegt hier noch im Format YYYYmmdd (ohne Punkte) vor.
//
//
///////////////////////////////////////////////////////////////////////////////////////////////////////

        //Heutedatum muss umformatiert werden
        $recDate = substr($recDate,6,2) . "." . substr($recDate,4,2) . "." . substr($recDate,2,2);

        $Termine .= $recDate . " - " . $TerminText . "<<";
      }
    }
    dbase_close($dbase_identifier);
  } else {
    $Termine = "Fehler beim Öffnen der Termine.dbf";
  }
// Die Rückgabe eines leeren Strings kann im Makro zu Fehlern führen
if ($Termine == "") $Termine = " ";
if ($TermineAnsagen == "") $TermineAnsagen = " ";
?>

wenn Termine=" " dann
   Termine:="Heute keine Termine"
endewenn

wenn TermineAnsagen=" " dann
   TermineAnsagen:="Heute keine Termine"
endewenn

**Fehlermeldungen werden angezeigt und in die Datei PHPFehler.txt geschrieben
wenn scriptoutput<>"" dann
   scriptoutput := Zeit + " " + scriptoutput
   Schreibedatei("PHPFehler.txt",scriptoutput)
   Termine:=Termine+"<<"+scriptoutput
endewenn

sichtbar(Termine)

** Wenn die automatische Ansage nach dem Abrufen der Termine nicht
** gewünscht wird, am Anfang der nächsten Zeile zwei ** einfügen
**starte(TermineAnhoeren)

Gruß Tobbi

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: TERMIN Verwaltung

Beitrag von buempi » 30.05.2013, 16:03

Hallo Tobbi

Ich kann keinen Fehler finden :(

Hast du auch eine PHP.ini in deinem Homeputer-Verzeichnis mit mindestens folgendem Inhalt:

Code: Alles auswählen

[PHP]
extension_dir = "./"
extension=php_dbase.dll
Und die php5ts.dll fehlt ja bestimmt nicht im Verzeichnis...

Dann könntest du auch mal die PHP.exe ins Verzeichnis kopieren und aus dem PHP-Makro eine Datei "Test.PHP" erstellen und sie an der Kommandozeile mit

Code: Alles auswählen

PHP.exe Test.PHP
starten. Vielleicht kommt dann eine aussagekräftigere Fehlermeldung mit Zeilennummer :roll:

Viele Grüsse
Bümpi

PS: Nach Änderungen im PHP-Verzeichnis und in PHP-Makros immer Homeputer ganz beenden und neu starten. Sonst wird teilweise mit altem Material gearbeitet!

Tobbi35
Beiträge: 362
Registriert: 24.03.2007, 19:45

Re: TERMIN Verwaltung

Beitrag von Tobbi35 » 31.05.2013, 22:30

hallo Bümpi,
ich hab nochmal alles kontrolliert,
es ist wie du schreibst da ich mich in php nicht auskenne,
kann ich das mit der PHP.exe nicht nachvollziehen.
Ich hatte die Zeile einmal in der Termineabrufen reinkopiert,
das hat mir jetzt einen neuen Fehler beschert, wenn ich Homputer neustarte kommt jetzt
Parse
error: parse error, unexpected T_STRING in C:\Program
Files\contronics\homeputer Studio\- on line 3
Date: Fri, 31 May 2013 20:12:45 +0000

natürlich habe ich die Zeile wieder raus und den gesamten Inhalt von AbrufenTernnin noch mal neu
reinkopiert, nützt alles nix, der Fehler bleibt. ;.(

Gruß Tobbi

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: TERMIN Verwaltung

Beitrag von buempi » 01.06.2013, 08:21

Tobbi35 hat geschrieben:da ich mich in php nicht auskenne, kann ich das mit der PHP.exe nicht nachvollziehen.
... die PHP.exe findest du im Download von Homeputer. Es ist ein Interpreter, mit dem man PHP-Scripts in Windows auch an der Kommandozeilen ausführen lassen kann.

Wenn du diese ins Homeputer-Programmverzeichnis (da wo HomeputerStudio.exe und die übrigen PHP-Dateien drin sind) kopierst und dort auch die besagte Test.PHP aus deinem Makro erstellst, kannst du das Script ausführen und kriegst vielleicht aussagekräftigere Fehlermeldungen.

Hast du eigentlich Windows 7 32bit oder 64bit? Laufen die TermInp.exe und die TermOutp.exe da überhaupt noch? Das heisst: Kannst du Termine über das DOS-Programm eingeben?

Und wie ist es mit den Rechten? Hast du volle Schreib- und Leserechte für das Verzeichnis "C:\ProgramData\Termine\"?

Starte HomeputerStudio auch mal als Administrator (im Windows-Explorer auf die EXE rechtsklicken und dann "Als Administrator ausführen" wählen.

Viele Grüsse
Bümpi

PS: Ob du die besagte PHP.INI im Homeputer-Programmverzeichnis hast, hast du überprüft? - Und Homeputer nach Änderungen jeweis beendigt und neu gestartet (nicht nur die Projekt-Ausführung)

Tobbi35
Beiträge: 362
Registriert: 24.03.2007, 19:45

Re: TERMIN Verwaltung

Beitrag von Tobbi35 » 09.06.2013, 13:09

Hallo Bümpi,
ich denke ich hab alles kontrolliert,
aber ich kann den Fehler nicht finden,
jetzt kommt immer Zugriffsverletzung auf Adresse 0000000 ich denke das ich das mit den Terminen
aus dem Prg schmeissen muß ( leider )

Gruß Tobbi

PS: Der Mist liegt irgendwo mit der Rechteverwaltung in WIN7 zusammen, da ich vorher
auf dem XP Rechner nie Problem hatte. Hab auch schon das Verzeichnis aus dem Ordner Homputer nach ProgrammData und von da nach c:\ verschoben, natürlich mit Pfadanpassung in den Makros, aber immer das gleiche.

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: TERMIN Verwaltung

Beitrag von buempi » 09.06.2013, 16:46

Tobbi35 hat geschrieben:Der Mist liegt irgendwo mit der Rechteverwaltung in WIN7 zusammen, da ich vorher
auf dem XP Rechner nie Problem hatte.
... das denken ich auch. Das "Als Administrator ausführen" aus meinem letzten Beitrag hat auch nichts gebracht? Dann schalte mal die Benutzerkontensteuerung aus, falls die aktiv ist...

Viele Grüsse
Bümpi

Antworten

Zurück zu „homeputer Studio / Standard: Programmierbeispiele“