Bilder in MySQL-Datenbank einbinden?

Alles, was PHP betrifft, kann hier besprochen werden.

Bilder in MySQL-Datenbank einbinden?

Postby Carnygel » 01. April 2007 16:10

Hallo,
Habe inzwischen herausbekommen, wie ich in einer MySQL-Datenbank 5.0.21 eine Tabelle erstelle und Daten eingebe. Wie kann ich aber Bilder in eine Tabelle einfügen? Kann mir Anfänger dabei jemand helfen?
Carnygel
 
Posts: 21
Joined: 25. November 2005 00:05

Postby Mätes » 02. April 2007 08:27

würde dir raten, keine bilder in der tabelle direkt zu speichern.
dadurch wird die db nur ärsch langsam.
speicher lieber nur den Pfad und/oder den Dateinamen ab, nutze eventuell
die primary-ID als Teil des Dateinamens (bild00001.jpg).

so kannst du nachträglich auch einfacher durch die bilder browsen.
musst bei der DB-sicherung zwar auch einen Dateipfad mitspeichern
(was bei einer sicherung von einem internetauftritt aber eigentlich immer der Fall ist),
aber das sollte es dir wert sein.

habe einmal erlebt, wie gut große dateien in tabellen eine db ausbremsen können, daher habe ich persönlich es bei mir noch nicht verwendet.
aber wenn du es wirklich ausprobieren willst, dürfte mit blob-feldern gehen.

siehe auch:
http://www.php-faq.de/q/q-mysql-blob.html

gruß ma
User avatar
Mätes
 
Posts: 142
Joined: 13. April 2006 09:34
Location: kölle

Postby Carnygel » 02. April 2007 11:34

Denk, du hast recht! Nur, wie kann ich den Pfad in der Tabelle abspeichern? - In der Tabelle eine Spalte mit Pfad anlegen - oder? Wie kann ich dann dieses Bild aufrufen? Wie ich einen Text aus einer Tabelle herausbekommen, das habe ich schon herausbekommen. Wie sieht es aber aus, wenn ein Bild entsprechend einem Pfad dargestellt werden soll?
Carnygel
 
Posts: 21
Joined: 25. November 2005 00:05

Postby KingCrunch » 02. April 2007 11:46

Du speicherst den Pfad einfach als Text und ziehst ihn dann wieder heraus. Und wie man in html nen Bild einbindet, sollte eigentlich bekannt sein ^^
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby Carnygel » 02. April 2007 12:07

in die Tabelle der Datenbank schreibe ich dann z. B. "bilder/musterbild.jpg".

In die php-Anweisung schreibe ich:
<img src="
<?php
$abfrage = "SELECT Beschreibung, Dateiname, Foto, Size FROM bilder" where Dateiname == musterbild;
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
echo $row->Foto;
}
?>
">

Habe ich das so richtig verstanden?
Carnygel
 
Posts: 21
Joined: 25. November 2005 00:05

Postby Mätes » 02. April 2007 12:47

so würde ich es dir ans Herz legen, wobei hier natürlich
auch die meinungen sehr verschieden sein können.

wahrscheinlicht gehört das bild zu irgendwas, z.B. zu einem User?
dann user-(fremd) ID anlegen, und sql bilden:
select ... where userid = 123

aus weiterbildungszwecken ist's natürlich auch nicht falsch,
mal das speichern von bildern einfach so zu testen.
meine wenigkeit hatte dafür jedoch bisher keine zeit.

gruß ma
User avatar
Mätes
 
Posts: 142
Joined: 13. April 2006 09:34
Location: kölle

Postby Carnygel » 02. April 2007 12:56

Wäre zu schön gewesen, wenn es so einfach ginge. ;-( Also mein Quellcode stimmt so nicht.
Carnygel
 
Posts: 21
Joined: 25. November 2005 00:05

Postby KingCrunch » 02. April 2007 13:35

Was genau machst du da?!? D weiß aber schon, wie Bilder in html eingebunden werden? ;) Und wieso gibst du das Foto-Feld aus (was auch immer für ein Feld das sein mag), wenn du eigentlich den Dateinamen willst?

Die ganze Query ist schonmal syntaktisch falsch (wieso hat dein Editor da nicht Alarm geschlagen?). Wieso machst du eine Datenbankabfrage, wenn du den Dateinamen schon hast ;)
Code: Select all
Dateiname == musterbild
.

Es wäre jetzt schön gewesen, wenn man wüsste, was du vorhast.
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby Carnygel » 02. April 2007 13:41

Eigentlich wollte ich den Pfad, den ich unter der Datenbank-Tabellenpalte "Foto" abgespeichert habe, in <td>...</td>einfügen. Da ich aber nicht jedes Bild dieser Tabelle haben will, sondern nur das mit dem Dateinamen "musterbild", habe ich "where Dateiname == musterbild" eingesetzt..
Carnygel
 
Posts: 21
Joined: 25. November 2005 00:05

Postby Wiedmann » 02. April 2007 13:55

Carnygel wrote:Habe ich das so richtig verstanden?

Von der Theorie her ja.

Praktisch musst du jetzt nur noch einfachstes Debugging deines Scriptes machen.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby KingCrunch » 02. April 2007 13:56

Nagut, dann kommen wir ja schonmal näher.

Also erstmal wäre es gut, wenn du die WHERE-Klausel auch wirklich eingesetzt und nicht nur angehängt hättest. In dieser Form dürfte dein Script ein bitterbösen Syntax-Fehler von sich geben.
Wo ich nicht ganz hinterherkomme: Was ist denn bei dir jetzt Dateiname und was ist Foto? Ist Foto ein Dateiname?

Carnygel wrote:Eigentlich wollte ich den Pfad, den ich unter der Datenbank-Tabellenpalte "Foto" abgespeichert habe, in <td>...</td>einfügen.
-.- Bilder fügt man in img-Tags ein. Das darf dann zwar auch in Tabellezellen stehen, aber ohne den Tag kriegste nur den Dateinamen ausgegeben ;)

Und schalte mal bitte dein error_reporting hoch, dass du auch Fehler gemeldet bekommst ^^
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby Carnygel » 02. April 2007 14:04

Also diese Where-Klausel funktioniert bei den anderen Abfragen dieser Seite einwandfrei. Dateiname: Ich habe dem Bild einen Namen gegeben, z. B. Fenster. Unter Foto steht der Pfad inkl. tatsächlichen Dateinamen, z. B. "bilder/2007-04-02_001-300.jpg" - Der Tag in der Tabellenspalte (td) wäre doch normalerweise <img src="bilder/2007-04-02_001-300.jpg">. Für meine "Lernzwecke" (um besser hinter php und mysql steigen zu können!) habe ich das etwas umständlicher gemacht, nämlich mit php und der where-Klausel. Setze ich dann statt bilder...jpg <?php...?> ein, funktioniert das nicht.
Carnygel
 
Posts: 21
Joined: 25. November 2005 00:05

Postby KingCrunch » 02. April 2007 14:45

Carnygel wrote:Also diese Where-Klausel funktioniert bei den anderen Abfragen dieser Seite einwandfrei.
Bezweifel ich sehr stark, weil (wie gesagt) das ist kein PHP sondern ... irgendwas anderes ^^ Nur diese Zeile:
Code: Select all
 $abfrage = "SELECT Beschreibung, Dateiname, Foto, Size FROM bilder" where Dateiname == musterbild;
Führt bei mir in Eclipse zu einer knackig roten Kringellinie und im Browser zu folgender Meldung:
Code: Select all
Parse error: syntax error, unexpected T_STRING in
C:\path\to\index.php on line 2

Carnygel wrote:Dateiname: Ich habe dem Bild einen Namen gegeben, z. B. Fenster. Unter Foto steht der Pfad inkl. tatsächlichen Dateinamen, z. B. "bilder/2007-04-02_001-300.jpg"
Öhm ... ooookay ^^ Wieso du nun für die Foto-ID den Namen "Dateiname" und für den Dateinamen den Namen "Foto" wählst, ist ... ungewöhnlich. Hauptsache du kommst da nicht mal durcheinander.
Carnygel wrote:Setze ich dann statt bilder...jpg <?php...?> ein, funktioniert das nicht.
Versteh ich net ^^

Also beherzige erstmal Wiedmanns Tipp.
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby Carnygel » 02. April 2007 17:11

Dieses "Where" ist nachzulesen in der Dokumentation von XAMPP, (php), Kapitel "Wir wollen nur bestimmte Daten..." - "Praktisch musst du jetzt nur noch einfachstes Debugging deines Scriptes machen" --> muss mal erst schauen wie das funktioniert. Wie gesagt, bin Anfänger und möchte mehr dazu lernen. ;-)
Carnygel
 
Posts: 21
Joined: 25. November 2005 00:05

Postby Wiedmann » 02. April 2007 17:19

"Praktisch musst du jetzt nur noch einfachstes Debugging deines Scriptes machen" --> muss mal erst schauen wie das funktioniert.

Wenn dich das wirklich interessiert...

Als erste Zeile in dein Script kommt:
Code: Select all
error_reporting(E_ALL);


Als nächtes brauchen wir ein copy 'n paste deines Scriptes um zu sehen wie es exact jetzt ist (um Typos auszuschliessen un um eine gemeinsame Basis zu haben)

Und dann was das Script jetzt mit diesem error_reporting ausgibt.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Next

Return to PHP

Who is online

Users browsing this forum: No registered users and 28 guests