Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP] - Von PHP 4 auf 5 -> Code überarbeiten (https://www.delphipraxis.net/106217-%5Bphp%5D-von-php-4-auf-5-code-ueberarbeiten.html)

Flips 7. Jan 2008 14:53


[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:
Die Grafik ".../plan.php?id=2" kann nicht angezeigt werden, weil sie Fehler enthält.
Ich habe die Ursache auf einen Includedatei begrenzen könne, sie enthällt die Klasse "Location".
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:
<?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]);  
    } 
  }   
}
?>
Was ist an dieser Klasse falsch??? Wie gesagt, unter PHP 4 ging alles reibungslos.

Thx, Flips

mkinzler 7. Jan 2008 15:05

Re: [PHP] - Von PHP 4 auf 5 -> Code überarbeiten
 
Wie sieht die Fehlermeldung im Detail aus?

Flips 7. Jan 2008 15:13

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

arbu man 7. Jan 2008 15:47

Re: [PHP] - Von PHP 4 auf 5 -> Code überarbeiten
 
Schau die mal die Ausgabe des Scriptes an nich das was im img Tag steht

generic 7. Jan 2008 16:01

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:
error_reporting = E_ALL
display_errors = On
instanzierst du die klasse irgendwo?

mkinzler 7. Jan 2008 16:20

Re: [PHP] - Von PHP 4 auf 5 -> Code überarbeiten
 
Und die in der Logdatei des Php-Interpreters?

Flips 8. Jan 2008 18:44

Re: [PHP] - Von PHP 4 auf 5 -> Code überarbeiten
 
Hi.

Sry für die späte Antwort, hab jetzt über
Code:
ini_set('display_errors', 1);
ini_set('error_reporting', E_ALL);
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.
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:
<?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);
?>
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.).

Wieso will er die location.php nicht einbinden, obwohl sie fehlerfrei ist????

Achso @generic, ja ich instanziere sie doch über $Location = new Location ();

Valle 8. Jan 2008 18:57

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

mkinzler 8. Jan 2008 19:00

Re: [PHP] - Von PHP 4 auf 5 -> Code überarbeiten
 
Oder halt die Logdatei anschauen

Valle 8. Jan 2008 19:42

Re: [PHP] - Von PHP 4 auf 5 -> Code überarbeiten
 
Zitat:

Zitat von mkinzler
Oder halt die Logdatei anschauen

PHP loggt Script-Fehler mit? :gruebel:

Mit freundlichen Grüßen,

Valle


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:15 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz