Drathy: Probleme beim Funktionsaufruf

Hallo zusammen!

Da bin ich auch schon wieder mit einem neuen Problem :( was im Zusammenhang mit meinem Problem vom Ende der letzten Woche steht (manche mögen sich erinnern ;-) ).

Folgendes: Ich habe eine Datei u.a. mit diesem Inhalt:

  
<?PHP  
  
if(isset($_GET['action'])  &&  "download"  === $_GET['action'])  
{  
  include 'fileadmin/scripte/download.php';  
}  
  
echo "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td style=\"width:650px;\">";  
require 'fileadmin/scripte/dl_liste.php';  
echo "</td><td>";  
echo "<img width=\"300\" height=\200\" src=\"fileadmin/scripte/vorschaubild.php\">";  
echo "</td></tr></table>";  
  
if(isset($_GET['action'])  &&  "vorschau"  === $_GET['action'])  
{  
bild();  
}  
?>

Dann habe ich die Dabei vorschaubild.php die so aussieht:
 ~~~php <?php
function bild()
{
$filesize=0;
$fp=false;
$dateiname = 'kommu.jpg';
$verzeichnispfad = '/var/cache/webs/kdxxx/kunde1/projekt/Kommunikation/';
if(isset($_GET['dateiid']))
{
$dateiid = $_GET['dateiid'];

//##### Abfrage Verzeichnis & Datei #####
require 'fileadmin/scripte/db_connect.php';
@$sql_anweisung = "SELECT * FROM kv_dateidaten WHERE dateiid = '$dateiid'; ";
$abfrage = @mysql_query($sql_anweisung);
if (mysql_errno) echo mysql_error ();
$ergebnis = @mysql_fetch_array($abfrage);
$verzeichnisid = $ergebnis['verzeichnisid'];
$dateiname = $ergebnis['dateiname'];
$sql_anweisung = "SELECT * FROM kv_verzeichnisdaten
                  WHERE verzeichnisid = '$verzeichnisid'; ";
$abfrage = mysql_query($sql_anweisung);
$ergebnis = mysql_fetch_array($abfrage);
$verzeichnispfad = $ergebnis["verzeichnispfad"];
}

$filename = $verzeichnispfad.$dateiname;

$fp = fopen ($filename, "rb");
if ($fp)
   {
     $filesize = filesize ($filename);
     header ("Content-Type: image/jpeg");
     header ("Content-Length: ".$filesize);
     header ("Cache-control: private");
     fpassthru($fp);
     fclose($fp);
    }
else
    {
      echo "Datei nicht vorhanden";
    }
}

if(!isset($_GET['dateiid']))
{
bild();
}
?>

  
Die (obere) Datei bewirkt, dass auf der linken Seite eine Liste angezeigt wird, die u.A. einen Download-Link und einen Link "Vorschau" beinhaltet. Im rechten Bereich wird (bzw. soll) ein Vorschaubild angezeigt, wenn auf den Link geklickt wird, der bspw. wie folgt aussieht:  
http://www.meineadresse.de/typo3/index.php?id=3&action=vorschau&dateiid=26  
Mein Gedanke ist dabei, dass mit Aufruf dieses Links eine Dateiid übergeben wird, anhand der ein Verzeichnispfad und ein Dateiname aus der Datenbank gelesen wird und dementsprechend das Vorschaubild angepasst wird.  
Allerdings bekomme ich beim Aufruf des Links die Meldung "Call to undefined function: bild() in", was ich nicht verstehe, denn nach meinem Verständnis wurde die Datei "vorschaubild.php" doch bereits eingebunden... Oder liegt das Problem darin, dass sie im <img>-Tag eingebunden wird? Falls es an dem ist, wie bekomme ich es hin, dass die Datei innerhalb des <img>-Tags auf den Aufruf des Links und die damit verbundene Parameterübergabe reagiert?  
  
Vielen Dank im Voraus!  
  
Gruß,  
Drathy  
  
P.S.: Wenn das denn mal funktioniert, wollte ich versuchen, das Anzeigen des Vorschaubildes mittels Javascrips in Abhängigkeit eines Rollover-Effektes zu realisieren...wollte das hier mal erwähnen, da es ja ggf. wichtig sein könnte...
  1. Mist, mir wird grad bewusst, dass die Datei ja doch nicht wirklich aufgerufen bzw. eingebunden wird...

    Da stellt sich dann die Frage: Wie kann ich mein Problem lösen? Also wie kann ich die Ausgabe der Datei vorschaubild.php über den Linkaufruf mit der Parameterübergabe steuern?

  2. Hallo Drathy!

    Folgendes: Ich habe eine Datei u.a. mit diesem Inhalt:

    <?PHP

    ...

    bild();
    }
    ?>

      
    
    > Dann habe ich die Dabei vorschaubild.php die so aussieht:  
    >  ~~~php
    
    <?php  
    
    > function bild()  
    > {  
    
    ...  
    
    > bild();  
    > }  
    > ?>
    
    

    Ich kenne PHP nicht, aber ich frage mich, wie php in der ersten Datei erkennen soll, dass es die Funktion bild() aus der zweiten Datei verwenden soll.

    Allerdings bekomme ich beim Aufruf des Links die Meldung "Call to undefined function: bild() in", was ich nicht verstehe, denn nach meinem Verständnis wurde die Datei "vorschaubild.php" doch bereits eingebunden...

    Wie funktioniert das Einbinden anderer Dateien oder das Aufrufen von Funktionen aus anderen Dateien in PHP?

    Viele Grüße

    H-P Ortner

    1. Ich kenne PHP nicht, aber ich frage mich, wie php in der ersten Datei erkennen soll, dass es die Funktion bild() aus der zweiten Datei verwenden soll.

      Wie in meinem 2. Post beschrieben, habe ich bereits gemerkt, dass meine 2. Datei ja nicht wirklich eingebunden wird. Normalerweise geschieht das ja über "require" oder "include".

      Daher stellt sich mir nun die Frage, wie ich mein Problem lösen kann...

      Mein nächste Ansatz wäre, in der ersten Datei einfach die 2. Datei generell per "require" einzubinden und als Ausgabe der 2. Datei dann irgendwas wie
      echo "<img src="">";
      Nur leider scheitere ich grad daran, das ich nicht weiß, wie bzw. ich src="" befüllen muss...

      1. Hallo Drathy!

        Ich denke in der ersten Datei machst du die eigentliche HTML-Seite.
        In diese Seite möchstest du verschiedene Bilder einbinden.

        Die Bilder sollen nicht mit
         <img src="bild.jpg" alt="...
        eingebunden sondern werden dynamisch mit
         <img src="vorschaubild.php?dateiid=42" alt="...
        eingebunden werden.

        Das jeweilige Bild soll dann die Datei vorschaubild.php liefern.

        Oder habe ich da noch etwas falsch verstanden?

        Viele Grüße

        H-P Ortner

        1. Hallo H-P!

          Das Problem an der ganzen Sache ist, dass die Bilder nicht per einfachem Link aufrufbar sind, da sie in einem Ordner liegen, auf den nur PHP Zugriff hat.

          Mit der Datei "vorschaubild.php" werden diese daher per PHP aus dem Verzeichnis gelesen und ausgegeben. Leider klappt das momentan nur mit einem fest definierten Pfad und mein Ziel ist es nun, diesen Pfad je nach dem auf welchen Link ich klicke, entsprechend anzupassen, so dass die entsprechende Vorschau geladen wird...

          Das Ganze sollte dann über den Parameter "dateiid" laufen, da ich anhand diesem aus meiner Datenbank die entsprechenden Pfader herausholen kann...

          Hoffe das ist verständlich...

          Gruß,
          Drathy

          1. Hallo Drathy!

            Wie ich schon geschreiben habe, bau dir die Seite, die das HTML erzeugt so, dass sie für sich funktioniert und im <img src="vorschaubild.php?dateiid=42" alt="Bild 42"> statt 42 die id des jeweiligen Bildes verwendet.

            Mit der Datei "vorschaubild.php" werden diese daher per PHP aus dem Verzeichnis gelesen und ausgegeben. Leider klappt das momentan nur mit einem fest definierten Pfad und mein Ziel ist es nun, diesen Pfad je nach dem auf welchen Link ich klicke, entsprechend anzupassen, so dass die entsprechende Vorschau geladen wird...

            Ja genau das soll sie tun. Die Datei vorschaubild.php kannst du ja testen, indem du sie im Browser direkt aufrufst
             http://#pfad#/vorschaubild.php?dateiid=42
            Statt 42 und Pfad musst du natürlich die Daten verwenden, die bei dir funktionieren.

            Welche Fehlermeldungen kommen?

            Viele Grüße

            H-P Ortner

            1. Hallo H-P!

              Hmm....also als wir es bei meinem Problem mit dem Anzeigen des Bildes per PHP Ende letzter Woche so versucht hatten, wurde das Bild nicht angezeigt, sobald ein Parameter übergeben wurde.

              Ein kurzer Test eben ging aber anders aus - nun wird auch dann inklusive Parameterübergabe das Bild angezeigt...das ist ja komisch...

              Ich werde dann mal daran weiterarbeiten in der Hoffnung, dass alles klappt. Dein Ansatz war übrigens auch meine Grundidee in der letzten Woche gewesen, allerdings hatte es da ja wie erwähnt nicht funktioniert...

              Falls ich noch Probleme bekomme, melde ich mich noch mal...

              Erst mal vielen Dank, dass Du mich nochmal zum "Überprüfen" meines ursprünglichen Ansatzes gebracht hast! ;-)

              Gruß,
              Drathy