HTMLWorld - HTML, CSS, JavaScript, PHP, Java, Flash und vieles mehrHTMLWorld:   Home | Impressum
 

 
 

Anzeige 
 
HTMLWorld » Forum

Thema anzeigen - Beschreibungstext für Bilder auslesen

 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Beschreibungstext für Bilder auslesen

 

Neues Thema eröffnen   Neue Antwort erstellen    HTMLWorld Foren-Übersicht
   MySQL
Vorheriges Thema:
Nächstes Thema:  
Autor Nachricht
dateyourzippo
Forumsteilnehmer


Anmeldungsdatum: 13.07.2009
Beiträge: 5

BeitragVerfasst am: 13.07.2009 22:37:01    Titel: Beschreibungstext fär Bilder auslesen Antworten mit Zitat

Hallo zusammen,

da ich neu bin: Erst einmal ein herzliches Willkommen an alle!

Denn mal gleich zu meinem Problem:
Es ist nicht so, dass ich mich nicht bemühe, seit bestimmt 4 Tagen grase ich das Internet wegen meinem Problem ab, komme aber nicht weiter.
Es geht um eine Datenbank, habe zum 1. mal eine angelegt, und das "geschafft".
Was auch noch klappt, ist, in der entsprechenden .php Datei Verbindung zur Datenbank zu bekommen und die Werte auch auszulesen.

Ich habe mal eine Test Datenbank mit Namen "description" erstellt, mit 2 Spalten, "id" und "beschreibung", anbei ein Bild:



Um was es eigentlich geht:
Ich benutze teilweise "Lightbox", um meine Bilder vergrößert dazustellen.
Hier mal ein Beispiel.

Nun kann man für jedes Bild einen Beschreibungstext eingeben, der im "title" Attibut reingeschrieben werden muß:

<a href="../images/cam_stop/cam_stop_85_96.jpg" rel="lightbox[camstops]" title="Cam stop ca. 1985 - ca. 1996 ...<br><br>" ><img src="../images/cam_stop/cam_stop_85_96_s.jpg" width="72" height="100" border="0" alt="cam stop ca. 1985 - ca. 1996 ..."></a>

Und diesen "title" möchte ich eben von einer Datenbank auslesen lassen, bekomme es aber nicht hin, bin zu dumm und dappisch ...

Das sieht jetzt bei mir so aus:

Code:
<?php
include("verbindung.php");
$sql = "SELECT * FROM `description`";
$datensaetze = mysql_query($sql);

while (list($rubrik, $id, $beschreibung) = mysql_fetch_row($datensaetze)) {
 echo "$id - $beschreibung <br>";
}
?>


Wenn ich das jetzt aufrufe, wird natürlich der gesamte Tabelleninhalt.

Wie bekomme ich es jetz hin, dass:
Der Text aus der Tabelle mit der id "1" im "title" des 1. Bildes angezeigt wird?
Der zugehörige Beschreibungstext von der id "2" soll im "title" des 2. Bildes angezeigt werden ... usw.


Hoffe, habe alles verständlich erklärt und hoffe auch hier auf Hilfe.
Ãœbrigens bin ich bei 1&1 und habe die Tabelle mit phpmyadmin erstellt.

Viele Grüße Schorsch


Zuletzt bearbeitet von dateyourzippo am 14.07.2009 13:27:48, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Frosty
Häufiger Poster


Anmeldungsdatum: 27.10.2008
Beiträge: 221

BeitragVerfasst am: 14.07.2009 07:14:08    Titel: Antworten mit Zitat

Hallo und herzlich willkommen im Forum,
nein du hast dich überhaupt nicht umständlich ausgedrückt. eigentlich ist deine Problembeschreibung recht genau, was wiederum selten ist.

nun zu deinem Problem:
Wenn die Pfade zu deinen Bildern nicht in der Datenbank stehen, dann solltest du die Beschreibung vorher in einem Array speichern.

Ansatzmöglichkeit:
Code:
//Tabelle in array
$i = 0;
while ($row = mysql_fetch_object ( $datensaetze) )
{
   $id[$i] = $row->id;
   $beschreibung[$i] = $row->beschreibung;
   $i++;
}


Jetzt die Ausgabe:

Code:
<!-- Bild 1 -->
<a href="../images/cam_stop/cam_stop_85_96.jpg" rel="lightbox[camstops]" title="<? echo $beschreibung[0];?>" ><img src="../images/cam_stop/cam_stop_85_96_s.jpg" width="72" height="100" border="0" alt="cam stop ca. 1985 - ca. 1996 ..."></a>

<!-- Bild 2 -->
<a href="../images/cam_stop/cam_stop_85_96.jpg" rel="lightbox[camstops]" title="<? echo $beschreibung[1];?>" ><img src="../images/cam_stop/cam_stop_85_96_s.jpg" width="72" height="100" border="0" alt="cam stop ca. 1985 - ca. 1996 ..."></a>

<!-- usw. -->


Nicht getestet.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dateyourzippo
Forumsteilnehmer


Anmeldungsdatum: 13.07.2009
Beiträge: 5

BeitragVerfasst am: 14.07.2009 13:14:45    Titel: Antworten mit Zitat

Hallo,

Frosty hat folgendes geschrieben:
... Nicht getestet ...

Aber ich habe es getestet: UND ES KLAPPT PRIMA !!!

DANKE !!!!!!!!!

Das einzigste, was ich geändert habe: "$i = 0" in "$i = 1"
Dann komme ich weniger mit den id's durcheinander und brauch nicht immer id+1 zu rechnen.

Nochmal danke, hast mir sehr geholfen!

Gruß Schorsch
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Frosty
Häufiger Poster


Anmeldungsdatum: 27.10.2008
Beiträge: 221

BeitragVerfasst am: 14.07.2009 21:04:59    Titel: Antworten mit Zitat

Bitte, bitte. http://www.zippo-fan.net ist übrigens ne hübsche Seite. Hast du gemacht?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dateyourzippo
Forumsteilnehmer


Anmeldungsdatum: 13.07.2009
Beiträge: 5

BeitragVerfasst am: 15.07.2009 13:37:34    Titel: Antworten mit Zitat

Hallo Frosty,

Frosty hat folgendes geschrieben:
Bitte, bitte. http://www.zippo-fan.net ist übrigens ne hübsche Seite. Hast du gemacht?

ja, danke.
Mache aber kaum noch was dran.
Meine 2. Seite "dateyourzippo.com" ist eigentlich mein "Lieblings-Kind".

Aber mal was anderes, habe mit deinem Code oben etwas herumexperimentiert.
Habe nun noch 2 Spalten in die Tabelle eingefügt: "pics_s" und "pics_xl".
Nun werden noch die Bilder über die Datenbank ausgegeben, klappt alles sehr gut.
Ist das richtig, dass man für Bilder in einer Datenbank den Typ "BLOB" benutzen muss???
Oder kann man auch einen anderen Typ einstellen?

Hier mal der abgeänderte code:

Code:
include("verbindung.php");
$sql = "SELECT * FROM `cam stops`";
$datensaetze = mysql_query($sql);

$i = 1;
while ($row = mysql_fetch_object ( $datensaetze) )
{
   $pics_s[$i] = $row->pics_s;
   $pics_xl[$i] = $row->pics_xl;
   $id[$i] = $row->id;
   $beschreibung[$i] = $row->beschreibung;
   $i++;
}


In dem link sieht es jetzt so aus:

<a href="<? echo $pics_xl[2];?>" rel="lightbox[camstops]" title="<? echo $beschreibung[2];?>"><img src="<? echo $pics_s[2];?>" width="112" height="100" border="0" alt="u-shaped cam stop"></a>

Vielleicht kann es ja auch jemand anderes gebrauchen ...

Gruß Schorsch
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Simon
Häufiger Poster


Anmeldungsdatum: 03.05.2005
Beiträge: 195
Wohnort: Schweiz

BeitragVerfasst am: 15.07.2009 15:24:33    Titel: Antworten mit Zitat

Blob ist der korrekte Typ um irgendwelche binären Daten, inklusive Bilder, zu speichern.
Beachte allerdings, dass die Datenbank respektive Entität sehr schnell langsam werden kann.
Lese zum Beispiel nicht mit einem Stern den kompleten Datensatz aus, wenn Du das Bild nicht brauchst, da dies dann jeweils jedesmal geladen werden würde.
Es empfiehlt sich eigentlich, die Bilder auf dem Filesystem abzulegen und nur den Pfad in der DB zu speichern.

Gruss
Simon
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
dateyourzippo
Forumsteilnehmer


Anmeldungsdatum: 13.07.2009
Beiträge: 5

BeitragVerfasst am: 15.07.2009 22:15:51    Titel: Antworten mit Zitat

Hallo,

also, habt bitte ein wenig "Nachsichtigkeit" mit mir und meinem Unwissen.
Beschäftige mich erst seit ein paar Tagen mit dem Thema Datenbank.
Habe auch den halben Tag rumgelesen, jetzt bin ich noch verwirrter ...

@Simon,
danke dir, also wegen dem Thema "Bilder & Datenbank" habe ich so den (fast) durchgängigen Konsens gefunden, wie du auch schreibst, dass es eine Datenbank ineffizient macht, und vielleicht nicht so ratsam ist.

Zitat:
... die Bilder auf dem Filesystem abzulegen und nur den Pfad in der DB zu speichern ...

Zuerst habe ich das nicht so verstanden, aber glaube, du meinst: Die Bilder liegen auf dem Webspace, und in der Datenbank gebe ich nur den Pfad an.
Z.b. als relativen Pfad? z.B. ../images/ordner_blub/bild_bla.jpg ... Also gehen tuts, ist das dann so richtig?

Jetzt habe ich gelesen, dass man nicht nur "Blob" für die Bilder als Spaltentyp verwenden kann, sondern auch z. B. "varchar, char, text".
Habe "text" ausprobiert, es geht auch.

Zitat:
... Lese zum Beispiel nicht mit einem Stern den kompleten Datensatz aus ...

Also, ich will ja mehrere Tabellen machen, zu jedem "Thema" eine extra Tabelle.
Da wird dann jeweils immer der ganze Datensatz benötigt: id, beschreibung, pics_s, pics_xl
Ich will nicht alles in eine einzige Tabelle reintun, wegen der Ãœbersicht.
Und so schließe ich ja auch aus, dass nicht benötigte Daten ausgelesen werden.

Gruß Schorsch
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Simon
Häufiger Poster


Anmeldungsdatum: 03.05.2005
Beiträge: 195
Wohnort: Schweiz

BeitragVerfasst am: 16.07.2009 07:41:55    Titel: Antworten mit Zitat

Das packst Du schon Smile

Was ich mit dem Auslesen meinte.
Angenommen Deine Tabelle sieht so aus: ID | Name | Bild
Du hast nun eine Auflistung mit allen Einträgen, die Bilder zeigst Du aber nicht an, dann lese nicht den kompletten Datensatz mit SELECT * FROM Tabelle aus, da das Bild so auch geladen werden würde.
Lade stattdessen mit SELECT ID, Name FROM Tabelle nur die benötigten Attribute.

Wie Du erwähnt hast kannst Du auch nur den Pfad in der Datenbank speichern. Dies ist sicherlich schneller, aber etwas unhandlicher, da es sich mit Datenbanken einfacher arbeiten lässt.

Schlussendlich kommt es auf das Einsatzgebiet darauf an, welche Methode du wählst.
Viele und vor allem grosse Bilder würde ich nicht in der Datenbank ablegen. Normale (Web-)grössen sollte MySQL eigentlich schon vertragen.

Noch was nebenbei Smile
Unsere Software unterstützt das Versehen einzelner Verkaufsartikeln mit Bildern um zum Beispiel direkt aus der Anwendung einen Katalog zu erstellen. Schon einige Male hatten wir allerdings das Problem, dass Kunden ihre Artikeln mit 5mb-grossen Bilddateien versehen haben und die Datenbank dementsprechend langsam (und gross) wurde, und diese läuft nicht auf einer MySQL-Datenbank Smile
Wenn also "normale" Benutzer die Möglichkeit haben sollen, Bilder hoch zu laden, dann lege sie besser im Filesystem ab Smile

Gruss
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
dateyourzippo
Forumsteilnehmer


Anmeldungsdatum: 13.07.2009
Beiträge: 5

BeitragVerfasst am: 16.07.2009 12:23:47    Titel: Antworten mit Zitat

Hallo Simo,

Simon hat folgendes geschrieben:
... Was ich mit dem Auslesen meinte.
Angenommen Deine Tabelle sieht so aus: ID | Name | Bild
Du hast nun eine Auflistung mit allen Einträgen, die Bilder zeigst Du aber nicht an, dann lese nicht den kompletten Datensatz mit SELECT * FROM Tabelle aus, da das Bild so auch geladen werden würde.
Lade stattdessen mit SELECT ID, Name FROM Tabelle nur die benötigten Attribute ...

Glaube, habe verstanden, was du meinst.
Aber, die Tabelle wird ja mit allen Spalten ausgelesen, deshalb könnte ich statt:

$sql = "SELECT id, beschreibung, pics_s, pics_xl FROM `cam stops`";

auch

$sql = "SELECT * FROM `cam stops`";

schreiben, es wäre dann für mich (denke ich) dasselbe, weil ich eh alles auslese?

Ich experimentiere ja auch erst mal rum, um zu lernen.
Was ich wie mal anwende für die Zukunft, weiß ich auch noch nicht so genau.

Gruß Schorsch
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Simon
Häufiger Poster


Anmeldungsdatum: 03.05.2005
Beiträge: 195
Wohnort: Schweiz

BeitragVerfasst am: 16.07.2009 13:06:50    Titel: Antworten mit Zitat

Wenn Du alles brauchst kannst Du natürlich alles auslesen Smile
Ich denke, für Deine Zwecke mach es durchaus Sinn, die Bilder in der Datenbank abzulegen.

Gruss
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    HTMLWorld Foren-Übersicht
   MySQL
Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.