![]() |
[PHP] - Von PHP 4 auf 5 -> Code überarbeiten
Hi.
Nach einem PHP-Versionswechsel von 4 auf 5 bin ich nun dabei die Scripte anzupassen. Ein Script nervt besonders. Das gesamte Script handelt von einem virtuellen Rundgang, der angesprochene Teil zeichnet auf eine Image (Plan) einen Aufenthaltspunkt, welchen es aus der Datenbank entnimmt. Soweit sogut, hat auch alles wunderbar geklappt. Doch jetzt, nach der Umstellung, meldet der Browser immer
Code:
Ich habe die Ursache auf einen Includedatei begrenzen könne, sie enthällt die Klasse "Location".
Die Grafik ".../plan.php?id=2" kann nicht angezeigt werden, weil sie Fehler enthält.
Man übergibt ihr die ID des Bildes und die Klasse besorgt einem dann alles was man über das Bild in der Datenbank hat. Hier der Code
Code:
Was ist an dieser Klasse falsch??? Wie gesagt, unter PHP 4 ging alles reibungslos.
<?php
include ("../config.inc.php"); //An dieser weiteren Include liegts nicht. $dummy = ";;;;;;;;;;;"; class Location { var $id; var $name; var $room_nr; var $directions = array (); //of bool var $direction_paths = array (); //id array var $direction_names = array (); var $quer; var $koordinaten = array (); var $door; var $stockwerk; var $turn; var $dummy_names = array (); var $visits; // Hab hier schon public vorgeschrieben, bringt auch nix public function GetProperties ($id,$inc) { //An SQL-Codes liegts nicht... $query = mysql_query ("SELECT ... FROM ... WHERE id = '$id'"); if (!$query) { die ("Error in SQL-Syntax ".mysql_error ()); } $r = mysql_fetch_array ($query); $this->id = $id; $this->name = $r[1]; $this->room_nr = $r[2]; $this->quer = $r[5]; $this->directions = explode (";",$r[3]); $this->direction_paths = explode (";",$r[4]); $this->door = $r[7]; $this->koordinaten = explode (";",$r[6]); $this->stockwerk = $r[8]; $this->turn = $r[9]; if (!empty($r[10])) { $this->dummy_names = explode(";",$r[10]); } else { $this->dummy_names = explode(";",$dummy); } $this->visits = $r[11]+1; if ($inc) { $handle = fopen ("buffer.dat","r"); $allVisits = fread ($handle,filesize ("buffer.dat")); fclose ($handle); $allVisits++; $handle = fopen ("buffer.dat","w"); fwrite ($handle,$allVisits); fclose ($handle); mysql_query ("UPDATE ... SET visits = visits+1 WHERE id = '$id'"); } foreach ($this->direction_paths as $v) { $query = NULL; $query = mysql_query ("SELECT ... FROM ... WHERE id = '$v'"); if (!$query) { die ("Error in SQL-Syntax ".mysql_error ()); } $buffer = mysql_fetch_array ($query); array_push($this->direction_names,$buffer[0]); } } } ?> Thx, Flips |
Re: [PHP] - Von PHP 4 auf 5 -> Code überarbeiten
Wie sieht die Fehlermeldung im Detail aus?
|
Re: [PHP] - Von PHP 4 auf 5 -> Code überarbeiten
Hehe, die Fehlermeldung ist so wie oben, hab nur den Host "zensiert" :-)
Gibt nicht mehr, keine PHP-Fehler |
Re: [PHP] - Von PHP 4 auf 5 -> Code überarbeiten
Schau die mal die Ausgabe des Scriptes an nich das was im img Tag steht
|
Re: [PHP] - Von PHP 4 auf 5 -> Code überarbeiten
dummy ist nicht initalisiert in der klasse.
wenn du dummy nutzen willst, als parameter übergeben oder "global" machen. dieses würde dir aber auch als fehlermeldung angezeigt werden, wenn du die fehlermeldungen anschaltest in der php.ini.
Code:
instanzierst du die klasse irgendwo?
error_reporting = E_ALL
display_errors = On |
Re: [PHP] - Von PHP 4 auf 5 -> Code überarbeiten
Und die in der Logdatei des Php-Interpreters?
|
Re: [PHP] - Von PHP 4 auf 5 -> Code überarbeiten
Hi.
Sry für die späte Antwort, hab jetzt über
Code:
die Fehlerausgabe aktiviert, auch wenn das erste ini_set false zurückgibt. Naja egal, jedenfalls liefert der Aufruf der location.php (Code oben gepostet) im Browser keine Fehlermeldung -> Fehlerfrei.
ini_set('display_errors', 1);
ini_set('error_reporting', E_ALL); In der Bild-erzeugenden Datei, die ich gleich poste, wird diese Datei eingebunden. Ich kann alles was mit der Klasse zusammenhängt ausklammern (wie im Code unten), erst wenn ich die location.php selbst nicht mehr einbinde, wird das Bild dargestellt.
Code:
Der Code hat mit PHP 4 geklappt, nur jetzt wird erst ein Bild angezeigt, wenn die location.php ausgebunden wird (und damit dann keine Variablen fehlen hab ich alles damit verbundene ebenfalls in Kommentarzeilen gesetzt.).
<?php
ini_set('display_errors', 1); ini_set('error_reporting', E_ALL); //Hier stehn alle Variablen drin, die noch benötigt werden include ($CONFIG); /* include ("location.php"); $Location = new Location (); $Location->SetPropertys ($_REQUEST["id"],false); $x = $Location->koordinaten[0]; $y = $Location->koordinaten[1]; */ header ("Content-type: image/png"); //Damit ein Bild kommt $handle = @imagecreatefromPNG ("pics/ug.png"); /* switch ($Location->stockwerk) { case -1 : $handle = @imagecreatefromPNG ("pics/ug.png"); break; case 0 : $handle = @imagecreatefromPNG ("pics/eg.png"); break; case 1 : $handle = @imagecreatefromPNG ("pics/1og.png"); break; case 2 : $handle = @imagecreatefromPNG ("pics/2og.png"); break; } $viewpoint_color = ImageColorAllocate ($handle,$r,$g,$b); $border_color = ImageColorAllocate ($handle,0,0,0); ImageFilledArc ($handle,$x+7,$y+6,14,14,0,360,$viewpoint_color,IMG_ARC_PIE); //IMG_ARC_PIE IMG_ARC_CHORD ImageFilledArc ($handle,$x+7,$y+6,14,14,0,360,$border_color,IMG_ARC_NOFILL); */ ImagePNG ($handle); ?> Wieso will er die location.php nicht einbinden, obwohl sie fehlerfrei ist???? Achso @generic, ja ich instanziere sie doch über $Location = new Location (); |
Re: [PHP] - Von PHP 4 auf 5 -> Code überarbeiten
Du musst dir die Source anzeigen lassen. Einfach das BIld aufrufen
und dann Strg+U beim Firefox drücken. Dann bekommst du die Fehler angezeigt. Alternativ kannst du auch den header()-Aufruf weglassen, mit dem du deinem Browser sagst, es handle sich um ein Bild. Mit freundlichen Grüßen, Valle |
Re: [PHP] - Von PHP 4 auf 5 -> Code überarbeiten
Oder halt die Logdatei anschauen
|
Re: [PHP] - Von PHP 4 auf 5 -> Code überarbeiten
Zitat:
Mit freundlichen Grüßen, Valle |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz