Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Wie Bilder aus mysql-Datenbank in php-Seite anzeigen [gelöst]
#1
Hallo,
ich möchte gerne Bilder aus der epgd-Datenbank in einer Web-Seite anzeigen lassen

actor.php:
Code:
<?php
$actor_id = $_GET[actor_id];
...
echo "<img src='actor_image.php?id=".$actor_id."'>";
...
?>

actor_image.php:
Code:
<?php
    // MySQL-Verbindung herstellen
    require 'db-connect.php';

    // Bild ausgeben
    $id = addslashed($_GET['id']);

    $result = mysql_query("SELECT media_content, media_type FROM movie_media WHERE actor_id='$id'");
    $row = mysql_fetch_object($result);
    header("Content-type: $row->media_type");
    echo $row->media_content;
?>

Geht nicht. Was mach ich denn da falsch?

Gruß
Steevee
VDR-Server: EasyVDR 2.0, TBS 6984, Asus P8H61-M LE, Intel Celeron G540, GT520
VDR-TFT: EasyVDR 2.0, Skystar HD2, Asus M2N-VM HDMI, AMD Athlon 4850e, GT520, Touch-TFT, Atric
VDR-SZ: EasyVDR 2.0, Cine S2 v6.0, Asus M4N78 Pro, AMD Athlon II X2 250, Atric
VDR-Susi: EasyVDR 1.0, TT S2-6400, Atric
VDR-Gabi: EasyVDR 2.0, Cine S2 v5.5, MB Asus, GT520, Atric
sonstige VDR Test-Hardware: Terratec Cinergy 1200 DVB-C, DVB-S2 TeVii S464, div. DVB-S FF, div. DVB-S Budget, IMON-LCD, Fritz-Box, Raspberry PI, USB-IR, div. ser. IR, ...
Zitieren
#2
Mit dem bisschen Code wird s schwierig. Poste mal den kompletten Code und mehr Infos wie die Bilder in welcher Datenbank gespeichert sind.
VDR 1: ASRock mit Atom J1200, NVIDIA GT610, Lüfterlos, TBS 6982 SE mit easyVDR 3.0
Zitieren
#3
Hallo Andi,

Hier noch die db-connect.php
Code:
<?php
$dbhost = "localhost";
$dbuser = "epg2vdr";
$dbpass = "epg";
$dbname = "epg2vdr";

mysql_connect($dbhost,$dbuser,$dbpass) or die ("Keine Verbindung möglich");
mysql_select_db($dbname) or die ("Die Datenbank existiert nicht");
?>

Vielmehr Code ist es nicht, alles andere hat nichts damit zu tun.

Welche Bilder in welcher Datenbank?!
epgd aus EasyVDR-Quelle

OK ausführlicher: mysql Datenbank. Die Bilder werden als BLOB gespeichert. Was willst du noch wissen?

Gruß
Steevee
VDR-Server: EasyVDR 2.0, TBS 6984, Asus P8H61-M LE, Intel Celeron G540, GT520
VDR-TFT: EasyVDR 2.0, Skystar HD2, Asus M2N-VM HDMI, AMD Athlon 4850e, GT520, Touch-TFT, Atric
VDR-SZ: EasyVDR 2.0, Cine S2 v6.0, Asus M4N78 Pro, AMD Athlon II X2 250, Atric
VDR-Susi: EasyVDR 1.0, TT S2-6400, Atric
VDR-Gabi: EasyVDR 2.0, Cine S2 v5.5, MB Asus, GT520, Atric
sonstige VDR Test-Hardware: Terratec Cinergy 1200 DVB-C, DVB-S2 TeVii S464, div. DVB-S FF, div. DVB-S Budget, IMON-LCD, Fritz-Box, Raspberry PI, USB-IR, div. ser. IR, ...
Zitieren
#4
Geht das?

Code:
header("Content-type: $row['media_type']");
    echo $row['media_content'];

Andy
VDR 1: ASRock mit Atom J1200, NVIDIA GT610, Lüfterlos, TBS 6982 SE mit easyVDR 3.0
Zitieren
#5
Hallo,

du meinst, da braucht man eckige Klammern?
Eigentlich nicht.

Text aus der Datenbank kann ich mir ja anzeigen lassen.

Code:
echo $row->media_url;

z.B. die Spalte media_url enthällt normalen Text. Das Funktioniert. Also ist die Verbindung zur Datenbank ok, ich bin in der richtigen Tabelle, und das ansprechen des Feldes muss auch ok sein. Nur Bilder, die in der Datenbank gespeichert sind, weiss ich nicht richtig anzuzeigen.

Bilder zeigt man in HTML (PHP) ja so an:

Code:
echo "<img src='bildname.jpg'>";

Nur hab ich ja keine Datei zum anzeigen, sondern ein Datenbankeintrag.
Deshalb die extra Datei actor_image.php wo ich erst den Header für jpg reinschreiben will und dann den Bildinhalt, dass ich diese dann wie ein normales Bild mit <img src=...> anzeigen kann.

Irgendwo hab ich noch ein Denkfehler.

Hier nochmal ein Bildschirmausdruck von der Datenbank, um zu sehen, dass die Bilder wirklich da sind, die ich mir anzeigen lassen will.


Angehängte Dateien
.jpg   phpmyadmin.jpg (Größe: 315,58 KB / Downloads: 53)
VDR-Server: EasyVDR 2.0, TBS 6984, Asus P8H61-M LE, Intel Celeron G540, GT520
VDR-TFT: EasyVDR 2.0, Skystar HD2, Asus M2N-VM HDMI, AMD Athlon 4850e, GT520, Touch-TFT, Atric
VDR-SZ: EasyVDR 2.0, Cine S2 v6.0, Asus M4N78 Pro, AMD Athlon II X2 250, Atric
VDR-Susi: EasyVDR 1.0, TT S2-6400, Atric
VDR-Gabi: EasyVDR 2.0, Cine S2 v5.5, MB Asus, GT520, Atric
sonstige VDR Test-Hardware: Terratec Cinergy 1200 DVB-C, DVB-S2 TeVii S464, div. DVB-S FF, div. DVB-S Budget, IMON-LCD, Fritz-Box, Raspberry PI, USB-IR, div. ser. IR, ...
Zitieren
#6
Also in $row->media_type steht ne 4 für die Bilder in der Datenbank. Deshalb mal der Test, den fest als jpg reinzuhauen.

Code:
header("Content-type: image/jpeg");

bringt auch nichts.
Also es kommt immer noch dieses Zeichen für fehlendes Bild.

Jetzt hab ich gelesen, dass man evtl. auch so direkt ein Bild anzeigen kann:

Code:
echo "<img src='data:image/jpeg;base64,".$row->media_content."'>";

Da wird der Quellcode des Bildes angezeigt, aber nicht das Bild selbst. Keine Ahnung, ob base64 überhaupt richtig ist?!
VDR-Server: EasyVDR 2.0, TBS 6984, Asus P8H61-M LE, Intel Celeron G540, GT520
VDR-TFT: EasyVDR 2.0, Skystar HD2, Asus M2N-VM HDMI, AMD Athlon 4850e, GT520, Touch-TFT, Atric
VDR-SZ: EasyVDR 2.0, Cine S2 v6.0, Asus M4N78 Pro, AMD Athlon II X2 250, Atric
VDR-Susi: EasyVDR 1.0, TT S2-6400, Atric
VDR-Gabi: EasyVDR 2.0, Cine S2 v5.5, MB Asus, GT520, Atric
sonstige VDR Test-Hardware: Terratec Cinergy 1200 DVB-C, DVB-S2 TeVii S464, div. DVB-S FF, div. DVB-S Budget, IMON-LCD, Fritz-Box, Raspberry PI, USB-IR, div. ser. IR, ...
Zitieren
#7
Funktioniert !!!!!

addslashes war unnötig und das require  hat er auch nicht richtig gemacht, was ich durch include ersetzt habe:

Code:
<?php
    $id = $_GET['id'];

    // MySQL-Verbindung herstellen
    include("db-connect.php");

    // Bild ausgeben
    $result = mysql_query("SELECT media_content, media_type FROM movie_media WHERE actor_id='$id'");
    $row = mysql_fetch_object($result);
    header("Content-type: $row->media_type");
    echo $row->media_content;
?>


Angehängte Dateien
.jpg   sandler.jpg (Größe: 175,96 KB / Downloads: 48)
VDR-Server: EasyVDR 2.0, TBS 6984, Asus P8H61-M LE, Intel Celeron G540, GT520
VDR-TFT: EasyVDR 2.0, Skystar HD2, Asus M2N-VM HDMI, AMD Athlon 4850e, GT520, Touch-TFT, Atric
VDR-SZ: EasyVDR 2.0, Cine S2 v6.0, Asus M4N78 Pro, AMD Athlon II X2 250, Atric
VDR-Susi: EasyVDR 1.0, TT S2-6400, Atric
VDR-Gabi: EasyVDR 2.0, Cine S2 v5.5, MB Asus, GT520, Atric
sonstige VDR Test-Hardware: Terratec Cinergy 1200 DVB-C, DVB-S2 TeVii S464, div. DVB-S FF, div. DVB-S Budget, IMON-LCD, Fritz-Box, Raspberry PI, USB-IR, div. ser. IR, ...
Zitieren
#8
Hallo,

ich hab ja "damals" eine Web-Seite programmiert, die die epg-Datenbank abfragt, dass man nach Schauspielern suchen kann, oder sich alle Folgen einer Serie auflisten kann etc. (Hat nur bis jetzt keinen Interressiert).

Funktioniert ja auch alles soweit.

Da ich ja jetzt an dem EasyPortal dran bin, hab ich mir überlegt, die Seiten mit ins Easyportal zu integrieren, wenn festgestellt wird, dass epgd konfiguriert ist.

So. Momentan hab ich die epgd auf meinem Server und die Webseite läuft auch auf meinem Server.
Jetzt will ich die Webseite vom Server auf den vdr bringen, also zum Easyportal dazu.

Aber der Zugang zur Datenbank funktioniert nicht.

Der Login zur Datenbank sieht ja so aus:

Code:
<?php
$dbhost = "localhost";
$dbuser = "epg2vdr";
$dbpass = "epg";
$dbname = "epg2vdr";

mysql_connect($dbhost,$dbuser,$dbpass) or die ("Keine Verbindung möglich");
mysql_select_db($dbname) or die ("Die Datenbank existiert nicht");
?>

Also hab ich jetzt die Daten nicht mehr fest drin, sondern hol mir die Zugangsdaten von der Datenbank aus der Konfiguration vom epg2vdr-Plugin.

Code:
$dbhost = "192.168.1.23";
$dbuser = "epg2vdr";
$dbpass = "epg";
$dbname = "epg2vdr";

Zugang funktioniert aber nicht.
Muss ich da den Port mit angeben?

Code:
$dbhost = "192.168.1.23:3306";
Funktioniert aber auch nicht.

Warum funktioniert das nicht? Die Datenbank und der Datenbankuser müsste doch richtig konfiguriert sein, dass auch "fremde" Clients zugang haben, denn sonst würde ja auch das epg2vdr-Plugin nicht funktionieren, oder?

In der /etc/mysql/my.conf steht.

Code:
bind-adress = 0.0.0.0
Damit müsste doch die Datenbank fremde Clients zulassen, oder?

Der User epg2vdr hat auch alle Rechte (siehe Bild).

Wo ist mein Fehler? Leider bekomme ich auch keinerlei Fehlermeldungen angezeigt.

Gruß
Steevee


Angehängte Dateien
.jpg   phpmyadmin.jpg (Größe: 151,78 KB / Downloads: 35)
VDR-Server: EasyVDR 2.0, TBS 6984, Asus P8H61-M LE, Intel Celeron G540, GT520
VDR-TFT: EasyVDR 2.0, Skystar HD2, Asus M2N-VM HDMI, AMD Athlon 4850e, GT520, Touch-TFT, Atric
VDR-SZ: EasyVDR 2.0, Cine S2 v6.0, Asus M4N78 Pro, AMD Athlon II X2 250, Atric
VDR-Susi: EasyVDR 1.0, TT S2-6400, Atric
VDR-Gabi: EasyVDR 2.0, Cine S2 v5.5, MB Asus, GT520, Atric
sonstige VDR Test-Hardware: Terratec Cinergy 1200 DVB-C, DVB-S2 TeVii S464, div. DVB-S FF, div. DVB-S Budget, IMON-LCD, Fritz-Box, Raspberry PI, USB-IR, div. ser. IR, ...
Zitieren
#9
OK hab mein Fehler eingegrenzt.

Mit

Code:
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1); 
?>

am Anfang der Webseite bekommt man Fehler angezeigt

Code:
Fatal error:  Call to undefined function mysql_connect() in /var/www/epgd/inc/inc_head.php on line 18

Also der Fehler liegt darin, dass die mysql-Funktionen im php von EasyVDR nicht installiert oder aktiviert sind.
Fehler also ganz wo anders.

VDR-Server: EasyVDR 2.0, TBS 6984, Asus P8H61-M LE, Intel Celeron G540, GT520
VDR-TFT: EasyVDR 2.0, Skystar HD2, Asus M2N-VM HDMI, AMD Athlon 4850e, GT520, Touch-TFT, Atric
VDR-SZ: EasyVDR 2.0, Cine S2 v6.0, Asus M4N78 Pro, AMD Athlon II X2 250, Atric
VDR-Susi: EasyVDR 1.0, TT S2-6400, Atric
VDR-Gabi: EasyVDR 2.0, Cine S2 v5.5, MB Asus, GT520, Atric
sonstige VDR Test-Hardware: Terratec Cinergy 1200 DVB-C, DVB-S2 TeVii S464, div. DVB-S FF, div. DVB-S Budget, IMON-LCD, Fritz-Box, Raspberry PI, USB-IR, div. ser. IR, ...
Zitieren
#10
Lösung:

Code:
apt-get install php5-mysql

und in /etc/php5/cgi/php.ini

Code:
extension_dir = "/usr/lib/php5/20121212"
extension = mysql.so

Gruß
Steevee




VDR-Server: EasyVDR 2.0, TBS 6984, Asus P8H61-M LE, Intel Celeron G540, GT520
VDR-TFT: EasyVDR 2.0, Skystar HD2, Asus M2N-VM HDMI, AMD Athlon 4850e, GT520, Touch-TFT, Atric
VDR-SZ: EasyVDR 2.0, Cine S2 v6.0, Asus M4N78 Pro, AMD Athlon II X2 250, Atric
VDR-Susi: EasyVDR 1.0, TT S2-6400, Atric
VDR-Gabi: EasyVDR 2.0, Cine S2 v5.5, MB Asus, GT520, Atric
sonstige VDR Test-Hardware: Terratec Cinergy 1200 DVB-C, DVB-S2 TeVii S464, div. DVB-S FF, div. DVB-S Budget, IMON-LCD, Fritz-Box, Raspberry PI, USB-IR, div. ser. IR, ...
Zitieren
#11
Teil 1 ist eine Kleinigkeit (depend in einem vorhandenen Paket; würde sagen im easyportal)

Teil 2 hoffe ich mal ist unnötig. Das Paket sollte sich doch bestimmt selbst aktivieren. (?)
Grüße
Martin
-----------------------------------------------------------------------------------------------------------
Du brauchst Hilfe? Wir brauchen Daten! English-Version: Don't eat yellow snow!
Meine VDRs (Spoiler klicken) 

Zitieren
#12
Die Standardeinstellung ist

Code:
extension_dir = "./"

Keine Ahnung wo das ist, aber auf jeden Fall nicht da, wo die mysql.po ist.
Und die Extension

Code:
extension = mysql.so
hab ich auch per Hand einfügen müssen.
Ich teste das aber auch nochmal an einem unverbastelten easyvdr.

Gruß
Steevee

VDR-Server: EasyVDR 2.0, TBS 6984, Asus P8H61-M LE, Intel Celeron G540, GT520
VDR-TFT: EasyVDR 2.0, Skystar HD2, Asus M2N-VM HDMI, AMD Athlon 4850e, GT520, Touch-TFT, Atric
VDR-SZ: EasyVDR 2.0, Cine S2 v6.0, Asus M4N78 Pro, AMD Athlon II X2 250, Atric
VDR-Susi: EasyVDR 1.0, TT S2-6400, Atric
VDR-Gabi: EasyVDR 2.0, Cine S2 v5.5, MB Asus, GT520, Atric
sonstige VDR Test-Hardware: Terratec Cinergy 1200 DVB-C, DVB-S2 TeVii S464, div. DVB-S FF, div. DVB-S Budget, IMON-LCD, Fritz-Box, Raspberry PI, USB-IR, div. ser. IR, ...
Zitieren
#13
Ich hätte an der Stelle mal eine Frage. Kann man das Script übertragen und im eigenen Editor einbauen? Habe mich mit dem Webspace kaufen auf http://hosting.1und1.de/webspace beschäftigt und ein entsprechendes Angebot gefunden, das meinen Vorstellungen entspricht. Ebenfalls habe ich Bilder in der epgd-Datenbank und mich auch bereits gefragt, wie diese auf der Webseite anzuzeigen sind. Also kann es übernommen werden oder muss es individuell angepasst werden?
Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral.
Zitieren
#14
Was willst du machen?
VDR-Server: EasyVDR 2.0, TBS 6984, Asus P8H61-M LE, Intel Celeron G540, GT520
VDR-TFT: EasyVDR 2.0, Skystar HD2, Asus M2N-VM HDMI, AMD Athlon 4850e, GT520, Touch-TFT, Atric
VDR-SZ: EasyVDR 2.0, Cine S2 v6.0, Asus M4N78 Pro, AMD Athlon II X2 250, Atric
VDR-Susi: EasyVDR 1.0, TT S2-6400, Atric
VDR-Gabi: EasyVDR 2.0, Cine S2 v5.5, MB Asus, GT520, Atric
sonstige VDR Test-Hardware: Terratec Cinergy 1200 DVB-C, DVB-S2 TeVii S464, div. DVB-S FF, div. DVB-S Budget, IMON-LCD, Fritz-Box, Raspberry PI, USB-IR, div. ser. IR, ...
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste