Zum Inhalt springen

matse

Mitglieder
  • Gesamte Inhalte

    43
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von matse

  1. Vielen Dank für eure Tipps! Ich sehe jetzt, dass ich noch eineiges lernen muss bevor ich mit der Arbeit anfangen kann. Es wird doch etwas länger dauern als geplant. Eine Frage hätte ich noch. Da ich nun auch die ganze benötigte Software auf den Windows Server 2003 installieren muss, was würdet ihr empfehlen - Apache zu installieren, oder das vorhandene IIS zu nutzen?
  2. D.h. mit MySQL kann ich auch keine Trigger mit PHP, C/C++ oder sonst irgendwas schreiben? Ja, weiß ich. Leider weiß es mein Ausbilder nicht Habe ich es richtig verstanden, dass das Crontab/Cronjob nur auf UNIX-basierten Betribssystemen funktioniert. Also nicht auf Windows. Tut mir Leid fürs Nerven, aber es ist sehr wichtig für mich, damit ich zumindest weiß, wo ich anfangen soll, bzw. damit ich weiß, Grundlagen von was ich zuerst lernen soll...
  3. Was ist ein Cronjob? Was meinst Du unter "nicht zeitnah"? Wenn die Zeitspanne zwischen der Änderung und dem Versenden der E-Mail 20-30 Minuten ist, so ist es in Ordnung. 2-3 Tage wären schon ein Problem. Ist die Verzögerung auch das einzige Nachteil eines Cronjobs?
  4. Das Problem ist, dass es nach einer manuellen Änderung der Datenbank eine E-Mail versendet werden soll. Und ich weiß nicht mal wo ich anfangen soll. Ist es nicht möglich so einen Trigger in Java zu schreiben? Und muss ich wirklich die DBS ändern? Wenn es nicht geht, kannst Du mir empfehlen welche Programmiersprache bzw. DBS ich lernen soll, damit ich die Aufgabe lösen kann? Wäre Postgres und C++ eine gute Alternative? Oder vielleicht MySQL mit Perl?
  5. Hallo an Alle! Ich habe in der Ausbildung die Aufgabe bekommen, eine Datenbank zu erstellen. Das habe ich gerade noch hingekriegt. Jetzt soll eine E-Mail verschickt werden, wenn ein bestimmter Eintrag in der DB geändert wird. Wie ich im Internet gelesen habe, sollte es mit Hilfe eines "Triggers" gehen. Nun wie schreibt man so einen Trigger? Ich habe nur sehr wenige Kentnisse in PHP und MySQL, und ganz wenig Erfahrung mit JAVA. Könnte mir jemand ein Lehrbuch empfehlen, welches mich schnell ans Ziel bringt? Kann man diesen Trigger mit JAVA schreiben? Wie bindet man ihn dann in die Datenbank ein? Wäre für eure Hilfe sehr dankbar!
  6. Also, hier meine PHP-Dateien. index.php und main.php sind oben zu sehen add.php <select name="vorrat"> <?php foreach (vorrat::$valid as $k=>$v) { echo "<option value='$k'>$v</option>\n"; } if ($send != '') { $r = new $res(0); html_start("Hinzufuegen eines Artikels"); echo "<h2>Hinzufügen eines Artikels: $res</h2>\n"; printf("<form method='GET' action='%s'>\n",$_SERVER["PHP_SELF"]); $r->showCreate(); echo "<input type='submit' name='add' value='Hinzufügen'>\n"; html_end(); exit(); } if ($add != '') { $o = new $object(time()); foreach($_GET as $k=>$v) { $o->$k = $v; } try { if ($o->name == '') $o->name = $o->id; $o->save(); html_start("Neues Artikel hinzugefügt"); echo "<h2>Neues Artikel hinzugefügt: ID: {$o->id}</h2>\n"; echo "<a href='book.php?id={$o->id}'>Termine reservieren</a>.\n"; html_end(); exit(); } catch (Exception $e) { html_start("Fehler beim Hinzufügen"); echo "<h2>Es ist ein Fehler aufgetreten: ".$e->getMessage()."</h2>\n"; } } ?>[/PHP] [b]reserved.php[/b] [PHP]<?php class reserved { public $start; public $end; public $user; public function __construct($start, $end, $user) { if ($start > $end) throw new Exception("Endzeit vor dem Beginn"); $this->start = $start; $this->end = $end; $this->user = $user; if ($this->getDuration() > 3600*24*62) throw new Exception("Keine Buchungen ueber zwei Monate"); } public function getDuration() { return ($this->end - $this->start); } public function isBusy($from, $to) { // gibt TRUE zurück, wenn das Objekt zwischen $from und $to bereits gebucht ist if (($this->start <= $from && $this->end >= $from) || ($this->start <= $to && $this->end >= $to) || ($from <= $this->start && $to >= $this->end)) return true; else return false; } } class DateFormatException extends Exception { public function __construct($msg); { parent::__construct($msg); } public function showHelp() { echo "<p class = 'hint'>". "<a href = 'http://www.gnu.org/software/tar/manual/html_chapter/tar_7.html'>". "Zur Liste</a> der unterstützten Datumsformate.</p>\n"; } public funtion __toString() { return "<p class = 'error'>".$this->getMessage()."(".__CLASS__.").</p>\n"; } } ?> vorrat.php <?php abstract class vorrat { public $id; public $name; public $reservations = array(); public static $valid = array("benq" => "benq", "asus" => "asus"); public abstract function showCreate(); // Zeigt ein HTML-Formular zum Erstellen einer neuen Klasse. // Jede Unterklasse muss diese Funktion ueberschreiben. public function book($s,$e){ if ($s == '' || $e == '') throw new DateFormatException("Leeres Datum"); $start = strtotime($s); $end = strtotime($e); $user = $_SERVER["REMOTE_ADDR"]; if ($start == -1 || $end == -1) throw new DateFormatException("Fehler bei der Zeitumwandlung"); $res = new reserved($start, $end, $user); if ($this->isBooked($start,$end)) throw new Exception("{$this->name} ist zu dieser Zeit bereits belegt."); $this->reservations[$start] = $res; } public function isBooked($start, $end = NULL) { if ($end == NULL) $end = $start + 1; if (count($this->reservations) > 0){ foreach ($this->reservations as $r) { if ($r->isBusy($start, $end)) return true; } } return false; } public function save() { $_SESSION['vorrat'][$this->id] = $this; return true; } public static function clearAll() { unset($_SESSION['vorrat']); return true; } public static function getAll() { if (property_exists('vorrat', $_SESSION)) return $_SESSION['vorrat']; else return false; } public static function getById($id) { if (array_key_exists($id, $_SESSION['vorrat'])) return $_SESSION['vorrat'][$id]; else throw new Exception("Id nicht gefunden"); } } class benq extends vorrat { public $operatingSystem = ''; public $ram = ''; public function __construct($id) { parent::__construct($id); } public function showCreate() { echo "<table border = '1'>\n"; $this->showTextFeature('Name', 'name'); $this->showTextFeature('Betriebssystem', 'operatingSystem'); $this->showTExtFeature('RAM', 'ram'); echo "</table>\n"; echo "<input type = 'hidden' name = 'object' value = 'BENQ'>\n"; } } class asus extends vorrat { public $operatingSystem = ''; public $ram = ''; public function __construct($id) { parent::__construct($id); } public function showCreate() { echo "<table border = '1'>\n"; $this->showTextFeature('Name', 'name'); $this->showTextFeature('Betriebssystem', 'operatingSystem'); $this->showTExtFeature('RAM', 'ram'); echo "</table>\n"; echo "<input type = 'hidden' name = 'object' value = 'ASUS'>\n"; } } ?> [/PHP] [b]DateFormatException.php[/b] [PHP]<?php class DateFormatException extends Exception { public function __construct($msg); { parent::__construct($msg); } public function showHelp() { echo "<p class = 'hint'>". "<a href = 'http://www.gnu.org/software/tar/manual/html_chapter/tar_7.html'>". "Zur Liste</a> der unterstützten Datumsformate.</p>\n"; } public funtion __toString() { return "<p class = 'error'>".$this->getMessage()."(".__CLASS__.").</p>\n"; } } ?> book.php <?php if ($id == '' || $id == false) { header("Location: index.php"); } try { $r = vorrat::getById($id); } catch (Exception $e) { html_start(); echo "<p class='error'>Der gewünschte Artikel konnte nicht gefunden werden\n"; html_end(); exit(); } $r->showAddReservation(); if ($reserve != '') { $from = array_item($_GET, 'from'); $to = array_item($_GET, 'to')); try { $r->book($from, $to); $r->save(); } catch (DateFormatException $e) { echo $e; $e->showHelp(); } catch (Exception $e) { printf("<p class='error'>%s</p>\n", $e->getMessage()); } } $r->showBooked(); ?>[/PHP]
  7. main.php <?php //session_start(); function __autoload($class_name) { require_once(strtolower(dirname(__FILE__)."/$class_name.php")); } ?>[/PHP] session_start(); habe ich auskomentiert, denn es funktionierte nicht (siehe mein erster Beitrag). Im Buch war hier der session_start() und nicht in index.php
  8. Meinst Du das so <?php //session_start(); ob_start(); require_once(dirname(__FILE__)."/main.php"); $elements = vorrat::getAll(); if ($elements == FALSE) { header("Location: add.php"); //Zeile 11 exit(); } html_start("Reservierungssystem"); foreach($elements as $r) { echo "<option value='{$r->id}'>{$r->name}</option>\n"; } ob_end_flush(); ?>[/PHP] Funktioniert leider auch nicht. Bekomme wieder die Meldung [color=Navy]Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\benq\index.php:2) in C:\xampp\htdocs\benq\index.php on line 11[/color]
  9. Tut mir Leid, aber ich verstehe nicht wirklich, was du meinst. Wenn ich die Zeile mit session_start(); in index.php (oder main.php, wie im Original) nicht auskommentiere, dann bekomme ich eine Fehlermeldung (siehe mein erster Beitrag). Und die Funktion ob_start() kenne ich nicht. Ich habe zwar im php.manual die Definition durchgelesen, weiß aber nicht, wie ich diese Funktion in mein Programm richtig einbaue, und auch welche Parameter sie braucht. Für eine detailliertere Hilfe wäre ich sehr dankbar. Gruß, matse
  10. Danke Reinhold! Ich bekomme jetzt aber eine neue Meldung, die ich nicht verstehe Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\benq\index.php:2) in C:\xampp\htdocs\benq\index.php on line 8 Hier der PHP-Code index.php <?php //session_start(); require_once(dirname(__FILE__)."/main.php"); $elements = vorrat::getAll(); if ($elements == FALSE) { header("Location: add.php"); //8. Zeile exit(); } html_start("Reservierungssystem"); foreach($elements as $r) { echo "<option value='{$r->id}'>{$r->name}</option>\n"; } ?>[/PHP] [b]add.php[/b]. Sieht etwas komisch aus. Ich denke, da werden sich auch ein Paar Fehler auffinden. [PHP]<select name="vorrat"> <?php foreach (vorrat::$valid as $k=>$v) { echo "<option value='$k'>$v</option>\n"; } ...
  11. Das Umsetzen hat nicht geholfen. Ich habe aber den session_start() auskommentiert und bekomme diese Meldung nicht mehr. Was soll ich aber mit der Datei vorrat.php machen? Anscheinend mag der Compiler die Zeile public reservations = array(); nicht. Diese ist aber eins zu eins vom Buch kopeirt. Ich verstehe nicht was da falsch ist.
  12. Und was sollte ich nun in meinem PHP-Code ändern, damit es funktioniert?
  13. Ich versuche PHP und MySQL zu lernen, mit dem Buch von M.Kofler und B.Öggl (von Addison-Wesley-Verlag). Es gibt dort ein Beispiel eines Buchungssystems für Geräte, welches ich nicht zum Laufen bringen kann. Ich hoffe, jemand kann es mir erklären, wo meine Fehler liegen... Im Browser bekomme ich folgende Fehlermeldung: Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\xampp\htdocs\benq\index.php:2) in C:\xampp\htdocs\benq\main.php on line 3 Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\benq\index.php:2) in C:\xampp\htdocs\benq\main.php on line 3 Parse error: syntax error, unexpected T_STRING, expecting T_VARIABLE in C:\xampp\htdocs\benq\vorrat.php on line 6 Hier die Dateien: index.php <?php require_once(dirname(__FILE__)."/main.php"); $elements = vorrat::getAll(); if ($elements == FALSE) { header("Location: add.php"); exit(); } html_start("Reservierungssystem"); foreach($elements as $r) { echo "<option value='{$r->id}'>{$r->name}</option>\n"; } ?>[/PHP] [b]main.php[/b] [PHP]<?php session_start(); //dritte Zeile function __autoload($class_name) { require_once(strtolower(dirname(__FILE__)."/$class_name.php")); } ?> vorrat.php <?php abstract class vorrat { public $id; public $name; public reservations = array(); //6.Zeile public static $valid = array("benq" => "benq", "asus" => "asus"); public abstract function showCreate(); // Zeigt ein HTML-Formular zum Erstellen einer neuen Klasse. // Jede Unterklasse muss diese Funktion ueberschreiben.[/PHP]
  14. Danke für den Hinweis! Die Funktionen der Klasse rectangle funktionierten wirklich nicht ohne $this. Viele Grüße, matse
  15. Danke Dir! Mit den Strichen funktioniert es jetzt. Die Werte werden übernommen! Gruß, matse
  16. Ich habe follgendes Beispiel aus einem Buch ausprobiert: <?php //function _autoload($class_name) { // require strtolower("inc/$class_name.php"); // } include 'circle.php'; include 'rectangle.php'; $circ = new circle(300); echo "Radius des Kreises: ".$circ->radius; $rect = new rectangle(300,400); echo "Breite des Rechtecks: ".$rectangle->width; echo "Umfang des Rechtecks: ".$rect->getPerimeter()."\n"; echo "Fleache des Kreises: ".$circ->getArea()."\n"; ?> [/PHP] Mit der auskommentierten Funktion funktionierte es überhaupt nicht. Ich bekamm dann immer die Meldung, 'circle' und 'rectangle' seien unbekannt. Also habe ich die beiden include-Anweisungen eingefügt. Datei circle.php: [PHP]<?php class circle { public $radius; public function _construct($r) { $this->radius = $r; } public function getArea() { return pow($this->radius,2)*pi(); } public function getPerimeter() { return 2*pi()*$this->radius; } } ?> Datei rectangle.php: <?php class rectangle { protected $width; protected $height; public function _construct($w,$h) { $this->width = $w; $this->height = $h; } public function getArea() { return $width*$height; } public function getPerimeter() { return 2*$width+2*$height; } } ?>[/PHP] Wenn ich jetzt das Programm im Browser aufrufe, steht dort: "Radius des Kreises: Breite des Rechtecks: Umfang des Rechtecks: 0 Fleache des Kreises: 0". Wieso übernimmt das Programm nicht die übergebenen Grüßen? Was muss ich ändern?
  17. Danke für die Antworten. Ich habe mir jetzt doch XAMPP installiert
  18. Ich kenne mich mit dem ganzen noch kaum aus, aber ich habe eine Datei mit phpinfo(); erstellet und diese kann ich im Browser einsehen. In irgendeiner Anleitung habe ich gelesen, dass der phpMyAdmin eine Erweiterung mit dem Namen mcrypt braucht. Darauf hin habe ich in php.ini das Semikolon vor extesion=php_mcrypt.dll entfernt. Als ich aber Apache neugestartet habe, gab es mir die Meldung, dieser Modul könne nicht geladen werden. Also habe ich diese extension wieder auskommentiert.
  19. In der Anleitung, der ich beim Konfigurieren folgte, heißt es, man solle in der Datei conf.inc.php, welche sich innnerhalb des Installations-Verzeichnisses befindet, ein Paar Einstellungen ändern. Diese Datei gibt's bei mir aber nicht. Nur eine config.sample.inc.php, die auch ganz anders aussieht, als die im Buch. Im Verzeichnis libraries habe ich eine Datei mit dem Namen config.default.php gefunden, welche die genannten einträge (wie z.B. $cfg['PmaAbsoluteUri'] u.Ä) beinhaltet. Da habe ich einfach diese Datei entsprechend geändert. War das ein Fehler? Sollte ich vielleicht diese Datei ins Hauptverzeichnis kopieren, umbennenen und dann abändern? Ich beschäftige mich schon die ganze Woche mit Apache, PHP und MySQL-Installetionen. Warum gibt es keine gescheite Anleitungen dafür?
  20. Wenn ich mir die Ereignisanzeige ansehe, so gibt's dort folgende Fehlermeldung: Fehlgeschlagene Anwendung httpd.exe, Version 2.2.16.0, fehlgeschlagenes Modul php5ts.dll, Version 5.2.14.14, Fehleradresse 0x00009fe6 Das sagt mir überhaupt nichts. Vielleicht könnte man daran sehen wo der Fehler liegt?
  21. Hallo! Nachdem ich mir Apache, PHP und MySQL auf dem Windows Server 2003 inastalliert habe und alles zu funktionieren scheint, wollte ich mir auch phpMyAdmin installieren. Ich habe es, wie in vielen Installationsanweisungen beschrieben wird heruntergeladen und ins Verzeichnis Apache/htdocs entpackt. Die nötigen Änderungen in der Konfigurationsdatei habe ich auch vorgenommen. Nun gebe ich in meinem Web-Browser localhost/phpMyAdmin/index.php ein. Es öffnet sich ein Fenster in dem ich Benutzername und Passwort eingeben soll. Ich schreibe die Daten rein, drücke auf OK und bekomme eine Fehlermeldung: "Verbindung unterbrochen. Überprüfen Sie die Internetverbindung u.Ä." Nach mehreren Versuchen immer wieder das gleiche Problem. Was mache ich falsch?
  22. Problem gelöst! Folgendes Tutorial hat sehr geholfen How to Install and Configure PHP 5 to Run with Apache on Windows (thesitewizard.com) Danke euch allen für Hilfe!
  23. Danke! Ich mache gerade noch ein Anlauf das PHP als Modul zu installieren. Ich bin aber als Admin angemeldet. Wer hat denn sonst die Berechtigung?
  24. Ich habe die Apache 2.2 installiert Ja, hab ich. Nä. Ich habe schon den Zip-Verzeichnis heruntergeladen. Davon gibt's allerdings auch verschiedene Versionen. In der einen fehlt dann das sapi-Verzeichnis, in der Anderen die php5ts.dll-Datei. Ja ich weiß, aber diese beziehen sich auf ältere Versionen von PHP (4.x meistens). Dürfte kein großer Unterschied bei der Installation sein, komme trotzdem nicht weiter. In allen von den Manuals, die erklären wie man PHP als Modul installiert, werden die obengenannten Dateien/Verzeichnise gebraucht, die bei mir dann fehlen. Ich habe mir jetzt den php-installer heruntergeladen und es als "CGI binary" (was auch immer es heißt) installiert. In vielen Tutorials wird davon aber abgeraten. Warum? Ich habe die Apache-Kofigurqationsdatei entsprechend der install.txt geändert und es scheint zu funktionieren. Zumendest gibt mir Apache keine Fehlermeldungen beim Neustart. Ich bin jetzt aber auf ein anderes Problem gestoßen. Um PHP auszuprobieren habe ich eine info-Datei erstellt <?php phpinfo(); ?>[/PHP] und in htdocs gespeichert. Nachdem ich jetzt versuche über localhost/test.php die Datei aufzumachen erscheint im Browser die Meldung "Forbidden. You don't have permission to access /php/php-cgi.exe/test.php on this server" Was soll das heißen?

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...