Pfad zu SWF-Datei aus DB auslesen

syntax

Mitglied
Hallo Leute,

ich habe SWF Dateien auf meinem Webserver liegen dessen Pfade in einer DB gespeichert sind.

Tabelle SWF :

id(int5) | pfad (cahr50) | filetype (char50) | beschreibung (char50)
1 | swf/test.swf | application/x-shockwave-flash | test


Script um Datei mit hilfe des Pfades aus der DB wiederzugeben

PHP:
<?php
if($id) {

    // you may have to modify login information for your database server:
    @MYSQL_CONNECT("", "", "");

    @mysql_select_db("");

    $query = "select pfad from swf where id=$id";
    $result = @MYSQL_QUERY($query);

    $data = @MYSQL_RESULT($result,0,"pfad");
    $type = @MYSQL_RESULT($result,0,"filetype");

    Header( "Content-type: $type");
    echo $data;

};
?>

HTML Code:

Code:
<html>
2: <head>
3: <title></title>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
4: </head>
6: <body>
7: <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="550" height="400" title="myFlash">
8:   <param name="movie" value="showswf.php?id=1">
9:   <param name="quality" value="high">
10:   <embed src="showswf.php?id=1" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="550" height="400"></embed>
11: </object>
12: </body>
13: </html>

Mein problem ist das die Flash-Datei nicht angezeigt wird.

Ich hatte die Datei vorher in der BD selber und da hats geklappt, ich denke mir das ich was in meine showswf.php Script flasch gemacht habe.
Finde den Fehler aber nicht. Eine andere Frage ist ob ich wenn ich nur den Pfad in der BD speichere den Contenttyp der Datei mit angeben muss oder ob ich diesen auch weglassen kann.

Danke :-)
 
Zuletzt bearbeitet:
Hi,

ist das hier ein Übertragungsfehler deines PHP-Codes in den Forenbeitrag?

PHP:
<?php
<?php
...


mfg Maik
 
Moin,

also dieses PHP-Skript liest Dateipfad und MIME-Type aus der DB und soll dann anhand des Pfades die betreffende Datei ausgeben?

Falls ja, nützt dir
Code:
 echo $data ;
nichts, denn das gibt nur den Pfad aus, nicht den Dateiinhalt.

Versuche stattdessen:
Code:
readfile($data);exit();

PS: die 2 PHP-Tags am Anfang sind nur ein Kopier-Fehler, nehme ich an, und die Zugangsdaten+DB-Name sind im Original vorhanden?
 
Ja 2mal <?php ist eins zu viel :-)

Das mit readfile hat leider keine Wirkung gezeigt :(

Wenn ich ein JPG Datei statt eine SWF Datei nehme sehe ich ein rotes Kreuz, in den Eigenschaften steht bei
Typ: nicht verfügbar .
Ich denke das ist auch der Grund warum die SWF Datei nicht angezeigt wird.

Warum weiß ich aber nicht.
 
Rufe die betreffende Datei(also das PHP-Skript mit der betreffenden ID als Parameter) mal direkt im Browser auf.

Möglicherweise bekommst du dann von PHP Hinweise auf Fehlerursachen zu Gesicht.
 
Also das hat auch keine Wirkung erzielt,
die Frage ist warum trotz des Content-Typs den ich in der Tabelle definiert habe, in den Eigenschaften kein Typ steht,
und ob ich in der Tabelle mit dem Pfad den absoluten oder den relativen nehme spielt auch keine Rolle.

Ich denke der Fehler liegt daran das er den Content-Typ nicht definieren kann.
 
Zuletzt bearbeitet:
ja klar kann er das nicht
PHP:
    $query = "select pfad from swf where id=$id";
   ...
    $type = @MYSQL_RESULT($result,0,"filetype");
Dein SQL query selektiert nur das Feld "pfad".
Das feld "filetype" ist dann im result natürlich nicht vorhanden weil nicht selektiert....
 
Also habe den filetyp jetzt mit selketiert, aber es steht trotzdem in den Eigenschaften kein Typ.

PHP:
<?php
if(isset($_GET['id'])) {

    // you may have to modify login information for your database server:
    @MYSQL_CONNECT("", "", "")

    @mysql_select_db("");

    $query = "select pfad, filetype from swf where id=$id";
    $result = @MYSQL_QUERY($query);

    $data = @MYSQL_RESULT($result,0,"pfad");
    $type = @MYSQL_RESULT($result,0,"filetype");

    Header( "Content-type: $type");
    readfile($data);exit();

};
?>
 
Zurück