php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 31.10.2006, 23:22  
Erfahrener Benutzer
 
Benutzerbild von SvenLittkowski
 
Registriert seit: 05.09.2004
Beiträge: 578
SvenLittkowski zeigte ein beschämendes Verhalten in der Vergangenheit
Standard Varialen-Zugriff von Klassen

Hallo.

Ich habe eine Variable, die einen Text enthält. Ich kann auch auf diese Variable zugreifen.

Jedoch habe ich auch eine Klasse erstellt:
PHP-Code:
$Ueberschrift="Hallo Welt";

class 
PDF extends FPDF
{
 function 
Test()
 {
  echo(
$Headline);
 }

Ich merke jedoch, daß in dieser FPDF-Klasse der Zugriff auf die außerhalb dieser Klasse definierten Variablen nicht gelingt. Wie ändere ich dies? Kann jemand ein einfaches Beispiel geben?
__________________

Vielen Dank für Eure Zeit, Absicht, Mühe und für Eure Ideen. Grüße,
Sven
SvenLittkowski ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 01.11.2006, 00:09  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

entweder übergibst du der Klasse bzw. ihrem Konstruktor/der Methode die Variable oder du greifst per "global" auf sie zu. PHP ist übrigens kein Übersetzungs-Tool, $Headline wird also nicht automatisch auf $Ueberschrift übertragen.
Zergling-new ist offline  
Alt 01.11.2006, 00:36  
Erfahrener Benutzer
 
Benutzerbild von SvenLittkowski
 
Registriert seit: 05.09.2004
Beiträge: 578
SvenLittkowski zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Ah, ich wollte die Variablennamen verständlicher machen, hatte es aber bei Headline vergessen. beides ist der selbe Name im echten Script.

Variablen-Übergabe oder global - Hast Du ein ganz simples Beispiel? Mit global bekam ich eine Fehlermeldung, daß global nicht dort erwartet wurde (vor der Variablen).
__________________

Vielen Dank für Eure Zeit, Absicht, Mühe und für Eure Ideen. Grüße,
Sven
SvenLittkowski ist offline  
Alt 01.11.2006, 00:57  
Erfahrener Benutzer
 
Registriert seit: 05.07.2004
Beiträge: 1.476
DiBo33
Standard

Am Vernünftigsten übergibst du die Variable.

PHP-Code:
class PDF extends FPDF {
    var 
$headline;
    function 
PDF($orientation 'P'$unit 'mm'$format 'A4' ,$headline='') {
        
$this->FPDF($orientation$unit$format);
        
$this->headline $headline
    
}
// ...
}
$headline 'Was_auch_immer';
$pdf=new PDF('P''mm''A4'$headline); 
DiBo33 ist offline  
Alt 01.11.2006, 01:18  
Erfahrener Benutzer
 
Benutzerbild von SvenLittkowski
 
Registriert seit: 05.09.2004
Beiträge: 578
SvenLittkowski zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Hmm... Ich glaube, ich verstehe. Werde es mal probieren. Danke. Rückmeldung kommt noch.
__________________

Vielen Dank für Eure Zeit, Absicht, Mühe und für Eure Ideen. Grüße,
Sven
SvenLittkowski ist offline  
Alt 01.11.2006, 01:43  
Erfahrener Benutzer
 
Registriert seit: 05.07.2004
Beiträge: 1.476
DiBo33
Standard

Du musst dir halt im Klaren sein, ob du den Wert in der ganzen Klasse benötigst oder eben nur in dieser einen Funktion.

Brauchst du sie nur in der Funktion, dann reicht folgendes:

PHP-Code:
 $Ueberschrift="Hallo Welt";

class 
PDF extends FPDF
{
    function 
Test($Headline)
    {
        echo(
$Headline);
    }

//...
$pdf->Test($Ueberschrift); 
Hoffe völligst verwirrt zu haben
DiBo33 ist offline  
Alt 01.11.2006, 02:19  
Erfahrener Benutzer
 
Benutzerbild von SvenLittkowski
 
Registriert seit: 05.09.2004
Beiträge: 578
SvenLittkowski zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Nein, klappt nicht. Fehlermeldung:
Code:
Warning: Missing argument 1 for PDF::Header(), called in /homepages/2/d15861750/htdocs/North Coast Times/p/PDF/fpdf.php on line 350 and defined in /homepages/2/d15861750/htdocs/North Coast Times/p/PDF.php5 on line 87
Hier mein Sourcecode:
PHP-Code:
 $Befehl="select `IDStory`, `Section`, `Headline`, `Author`, `Summary`, `Story`, ".
         
"`Photo1`, `Caption1`, `Photo2`, `Caption2`, `Photo3`, `Caption3`, `Photo4`, `Caption4`, `Photo5`, `Caption5` ".
         
"from Tabelle ".
         
"where `IDStory`=".$_SESSION["IDStory"];
 
$Anfrage=@mysql_query($Befehl,$Verbindung); 
 
$Datensatz=@mysql_fetch_assoc($Anfrage);
 
// --------------------------------------------------------------------------------- PDF
 
 
require('PDF/fpdf.php');

 class 
PDF extends FPDF
 
{
  var 
$Datensatz;
  var 
$Banners;

  function 
Header($Datensatz)
  {
   
$this->Datensatz=$Datensatz;
   
$this->Image("../v/Deco/LogoPDF.jpg",0,0,215.9);
   
$this->SetTextColor(255,255,255);
   
$this->SetFont("Arial","B",12);
   
$this->Cell(100,10,$Datensatz["Headline"],0,0,"L");
   
$this->Ln(25);
  }
  function 
Footer()
  {
   
$this->SetY(-15);
   
$this->SetTextColor(255);
   
$this->SetFillColor(253,253,250);
   
$this->SetFont("Arial","I",8);
   
$this->Cell(0,0,"Page ".$this->PageNo()."/{nb}",0,0,"C");         
  }
 }

 
$pdf=new PDF("P","mm","Legal",$Datensatz$Banners);
 
$pdf->AliasNbPages();
 
$pdf->AddPage();
 
$pdf->SetFont("Arial","",10);
 
$pdf->Cell(0,10,$MySummary,0,1);
 
$pdf->Output(); 
Hilfe!
__________________

Vielen Dank für Eure Zeit, Absicht, Mühe und für Eure Ideen. Grüße,
Sven
SvenLittkowski ist offline  
Alt 01.11.2006, 03:24  
Erfahrener Benutzer
 
Registriert seit: 05.07.2004
Beiträge: 1.476
DiBo33
Standard

Also doch, erfolgreich völligst verwirrt.

Du musst den Konstruktor überschreiben und dabei den Wert übergeben.

PHP-Code:
 class PDF extends FPDF
{
  var 
$Datensatz
  var 
$Banners;
  
// Hier kommt er, der Konstruktor
  
function PDF($orientation 'P'$unit 'mm'$format 'A4' $Datensatz ''
  {
     
$this->FPDF($orientation$unit$format);
     
$this->Datensatz $Datensatz;
  } 
  
// $Datensatz übergibst du ja nicht der Methode, ergo Variablenzuweisung weg
  
function Header() 
  {
   
// $this->Datensatz=$Datensatz;
   // wech damit

   
$this->Image("../v/Deco/LogoPDF.jpg",0,0,215.9);
   
$this->SetTextColor(255,255,255);
   
$this->SetFont("Arial","B",12);
   
$this->Cell(100,10,$this->Datensatz["Headline"],0,0,"L"); 
   
// die in der Klasse gesetzte Variable nutzen.
   
$this->Ln(25);
  }
  function 
Footer()
  {
   
$this->SetY(-15);
   
$this->SetTextColor(255);
   
$this->SetFillColor(253,253,250);
   
$this->SetFont("Arial","I",8);
   
$this->Cell(0,0,"Page ".$this->PageNo()."/{nb}",0,0,"C");         
  }
}

// Hier war der Fehler, änderst du den Konstruktoraufruf 
// musst du den auch überschreiben
$pdf=new PDF("P","mm","Legal",$Datensatz);
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetFont("Arial","",10);
$pdf->Cell(0,10,$MySummary,0,1);
$pdf->Output(); 
Da musst du dich etwas mehr mit Klassen und Objekten beschäftigen.

http://faq-phpfriend.de/ch/ch-objects.html

p.s
Zitat:
$Anfrage=@mysql_query($Befehl,$Verbindung);
$Datensatz=@mysql_fetch_assoc($Anfrage);
WOW, soviel Selbstvertrauen über den eigenen Quelltext wollte ich auch mal.
DiBo33 ist offline  
Alt 01.11.2006, 05:43  
Erfahrener Benutzer
 
Benutzerbild von SvenLittkowski
 
Registriert seit: 05.09.2004
Beiträge: 578
SvenLittkowski zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Nun, ich bekomme keine Fehlermeldung mehr, doch wird auch die Überschrift nicht gedruckt bzw. die Variable enthält wohl keinerlei Wert (Text). Kann das sein?

Ich sitze schon seit Stunden daran, vieleicht sehe ich den Wald vor lauter Bäumen nicht mehr. Hier ist mein Code:
PHP-Code:
 global $Datensatz;
 
$Befehl="select `IDStory`, `Section`, `Headline`, `Author`, `Summary`, `Story`, ".
         
"`Photo1`, `Caption1`, `Photo2`, `Caption2`, `Photo3`, `Caption3`, `Photo4`, `Caption4`, `Photo5`, `Caption5` ".
         
"from Tabelle_Story ".
         
"where `IDStory`=".$_SESSION["IDStory"]; // echo(mysql_error());  echo($Befehl);
 
$Anfrage=@mysql_query($Befehl,$Verbindung); 
 
$Datensatz=@mysql_fetch_assoc($Anfrage);
 
// --------------------------------------------------------------------------------- Banner Ads

 
$Befehl="select `IDBanner`, `Section`, `Banner`, `Company`, `Link` ".
         
"from Tabelle_Banners ".
         
"where `Section`='AllSections' or `Section`='".$MySection."'";
 
$BannerBig="";
 
$Anfrage=@mysql_query($Befehl,$Verbindung); 
 while(
$Banners=@mysql_fetch_assoc($Anfrage))
 { 
  if(
$Banners["Link"]) 
  {
   
$Banner[]="<a href=\"".$Banners["Link"]."\" target=\"_blank\">".
             
"<img src=\"".$Banners["Banner"]."\" border=\"0\" width=\"120\" ".
             
"alt=\"".$Banners["Company"]."\" title=\"".$Banners["Company"]."\">".
             
"</a>";
  }
  else
  {
   
$Banner[]="<img src=\"".$Banners["Banner"]."\" border=\"0\" width=\"120\" ".
             
"alt=\"".$Banners["Company"]."\" title=\"".$Banners["Company"]."\">";
  }
 }
 if(
$Banner) { shuffle($Banner); }
 
// --------------------------------------------------------------------------------- PDF
 
 
require('PDF/fpdf.php');

 class 
PDF extends FPDF
 
{
  var 
$Datensatz;
  var 
$Banners;

  function 
PDF($orientation="P",$unit="mm",$format="A4",$Datensatz="")
  {
   
$this->FPDF($orientation,$unit,$format);
   
$this->Datensatz=$Datensatz;
  }
  function 
Header()
  {
   
$this->Datensatz=$Datensatz;
   
$this->Image("../v/Deco/LogoPDF.jpg",0,0,215.9);
   
$this->SetTextColor(255,255,255);
   
$this->SetFont("Arial","B",12);
   
$this->Cell(100,10,$Datensatz["Headline"],0,0,"L");
   
$this->Ln(25);
  }
  function 
Footer()
  {
   
$this->SetY(-15);
   
$this->SetTextColor(255);
   
$this->SetFillColor(253,253,250);
   
$this->SetFont("Arial","I",8);
   
$this->Cell(0,0,"Page ".$this->PageNo()."/{nb}",0,0,"C");         
  }
 }

 
$pdf=new PDF("P","mm","Legal",$Datensatz,$Banners);
 
$pdf->AliasNbPages();
 
$pdf->AddPage();
 
$pdf->SetFont("Arial","",10);
 
$pdf->Cell(0,10,$MySummary,0,1);
 
$pdf->Output(); 
Und davon abgesehen, weißt Du, wie ich bei FPDF einen automatischen Zeilenumbruch hinbekomme?
__________________

Vielen Dank für Eure Zeit, Absicht, Mühe und für Eure Ideen. Grüße,
Sven
SvenLittkowski ist offline  
Alt 01.11.2006, 11:38  
Erfahrener Benutzer
 
Registriert seit: 05.07.2004
Beiträge: 1.476
DiBo33
Standard

Zitat:
Nun, ich bekomme keine Fehlermeldung mehr,
Wie auch, wenn du alle unterdrückst.

Zitat:
doch wird auch die Überschrift nicht gedruckt bzw. die Variable enthält wohl keinerlei Wert (Text). Kann das sein?
Sicher dat

Zitat:
Ich sitze schon seit Stunden daran, vieleicht sehe ich den Wald vor lauter Bäumen nicht mehr.
Pause?

Code:
echo(mysql_error());  echo($Befehl);
$Anfrage=@mysql_query($Befehl,$Verbindung);
$Datensatz=@mysql_fetch_assoc($Anfrage);
Äusserst sinnig, vor der Abfrage den Status ausgeben lassen und dann sämtliche Fehlermeldungen zu unterdrücken.

Code:
function PDF($orientation="P",$unit="mm",$format="A4",$Datensatz="") 
$pdf=new PDF("P","mm","Legal",$Datensatz,$Banners);
hier fällt die auch nichts auf?

Code:
function Header()
  {
   $this->Datensatz=$Datensatz;
Und weil wir so schön dabei sind, überschreiben wir die lokale Variable Datensatz einfach mal mit einen unbestimmten Wert

Code:
$this->Cell(100,10,$Datensatz["Headline"],0,0,"L");
Hätte aber auch nichts ausgemacht, da wir hier ja eh das unbekannte Array $Datensatz nutzen.

Zitat:
Und davon abgesehen, weißt Du, wie ich bei FPDF einen automatischen Zeilenumbruch hinbekomme?
Ich dachte du hättest dir zumindest dir Doku angesehen.
(MultiCell)


Versuche erst zu verstehen, wie Klassen funktionieren.
Bastel dir ein Testfile ohne jeglichen MySQL oder anderem, taste dich Stück für Stück ran, sonst wird das nix.
DiBo33 ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Klassen und externe Funktionen ? ssm PHP-Fortgeschrittene 17 18.07.2007 11:59
Zugriff auf Objekte anderer Klassen nieselfriem PHP Tipps 2007 7 14.05.2007 12:48
Klassen sinnvoll nutzen, Grundlegendes nikosch PHP-Fortgeschrittene 1 30.09.2006 22:08
Fragen zu Klassen Kein Genie PHP Tipps 2006 3 08.05.2006 11:25
Sessions an includete Klassen übergeben Dr_Enquinox PHP Tipps 2006 4 29.04.2006 10:25
Zugriff auf postgresql-db mit php PHP Tipps 2006 6 25.01.2006 09:29
mit html klassen definieren und in php ausgeben PHP-Fortgeschrittene 4 16.01.2006 10:31
Klassen Fatal Error PHP Tipps 2005-2 3 19.10.2005 15:31
Klassen und OOP Problem PHP-Fortgeschrittene 3 08.09.2005 10:37
klassen und methoden anderer klassen in methoden.... PHP Tipps 2005 17 25.05.2005 09:46
Klassen PHP Tipps 2005 5 09.04.2005 18:51
Klassen in Klassen verwenden PHP Tipps 2005 5 23.02.2005 14:08
Klassen in PHP PHP Tipps 2004 4 12.08.2004 13:17
Klassen?! PHP Tipps 2004 14 03.06.2004 17:33

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
fpdf es wird nicht alles gedruckt, fpdf footer nicht gedruckt, fpdf missing argument 1 for pdf::footer(), ergo klasse 08.05.2006, fpdf fuss zu hoch, eigene pdf klasse schreiben php, fpdf footer wird nicht gedruckt, fpdf footer einen wert übergeben, fpdf setfillcolor text wird nicht gedruckt

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:26 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.