Antworten auf deine Fragen:
Neues Thema erstellen

einzelne zeilen aus db-Feld ausgeben

strichcode

Nicht mehr ganz neu hier

Hallo @ all,
ich stehe auf den Schläuchen und bitte Euch um Hilfe.

Ich habe eine große Datenbank zur Verfügung aus der ich die Inhalte auslesen kann.
Mit viel Geschrei ist es mir auch soweit gelungen, die Felder in mein html-Template zu bekommen - so weit ist es dann auch mit meinen php-Kenntnissen...

Jetzt stehe ich vor folgendem Problem:

Das Datenbankfeld KAT01_50 sieht so aus:
HTML:
http://www.absoluterpfadzumeinembild.jpg
http://www.absoluterpfadzumeinembild.jpg
Meine Abfrage:
HTML:
<?php 
$abfrage = "SELECT * FROM db-Name WHERE HAUS_NR_INTERN = '123' ";
$ergebnis = mysql_query($abfrage);

while ($daten = mysql_fetch_array( $ergebnis, MYSQL_ASSOC)) {
   
echo '
<img src="'.$daten['KAT01_50'][0].'" /><img src="'.$daten['KAT01_50'][1].'" />
';
}?>
und das hier bekomme ich als ergebnis:
HTML:
<img src="h" /><img src="t" />
Er gibt mir offensichtlich den ersten und zweiten Buchstaben zurück, nicht den ganzen Pfad.

Ich hab ja oben schon geschrieben mit meinem php ist es nicht weit her.
Habt Ihr Ideen, Ansätze oder was zum googlen für mich?

Ich denke, ich muß eine Anweisung geben nach einem \n oder ähnlichem zu Trennen,
ich habe aber keine Ahnung wie, bzw. wie man sowas schreibt.

Über ein bischen Hilfe von Euch wäre ich sehr dankbar.

LG
Heike
 

Robbyn-

PHP / Flex Programmierer

AW: einzelne zeilen aus db-Feld ausgeben

Hy,

deine Abfrage ist schon soweit richtig, nur sollte sie wie folgt aussehen:

PHP:
$abfrage = "SELECT `KAT01_50` FROM db-Name WHERE HAUS_NR_INTERN = '123' ";
$ergebnis = mysql_query($abfrage);

while ($daten = mysql_fetch_assoc( $ergebnis)) {
   
echo '
<img src="'.$daten['KAT01_50'].'" /><img src="'.$daten['KAT01_50'].'" />
';

Dadurch das du immer ein [0] hinten rangehangen hast, sagtest du die Anwendung das du den 0(1) Buchstaben haben wolltest.
 

SineTempore

Nicht mehr ganz neu hier

AW: einzelne zeilen aus db-Feld ausgeben

PHP:
<?php 
$abfrage = "SELECT * FROM db-Name WHERE HAUS_NR_INTERN = '123' ";
$ergebnis = mysql_query($abfrage);

while ($daten = mysql_fetch_array( $ergebnis, MYSQL_ASSOC)) {
   
echo '
<img src="'.$daten['KAT01_50'].'" />
';
}?>

sowas vielleicht?

-.- Robbyn war schneller ;)
 

Robbyn-

PHP / Flex Programmierer

AW: einzelne zeilen aus db-Feld ausgeben

Wobei auch dein Beispiel, zuviel Datensätze mitliefert und du auch noch das FETCH_ARRAY verfahren nutzt, was auch wieder zuviel infos enthällt ;)
 

strichcode

Nicht mehr ganz neu hier

AW: einzelne zeilen aus db-Feld ausgeben

Hallo und vielen Dank für Eure schnelle Antworten.
Entweder stelle ich mich noch blöder an, als befürchtet ;-)
aber
die Version von Robbyn liefert mir das:
HTML:
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean  given in C:\xampp\htdocs\haueser\navigation\w2d\test3.php on line 241
die Version von Sine Tempore ergibt den folgenden Quelltext:
HTML:
<img src="http://pfadzumeinembild1.jpg
http://pfadzumeinembild2.jpg
" /><img src="http://www.pfadzumeinembild1.jpg
http://www.pfadzumeinembild2.jpg
" />
Also zwei Pfade in einem img-Tag. Mir fehlt doch immer noch sowas wie eine Trennung, oder?

@Robbyn: FETCH_ARRAY steht auf meiner Liste zum Nachlesen

Nachtrag: Wenn man es richtig schreibt, gibt es auch keine Fehlermeldung...
aber der img-Tag ist immer noch nicht richtig.
 
Zuletzt bearbeitet:

Robbyn-

PHP / Flex Programmierer

AW: einzelne zeilen aus db-Feld ausgeben

Hmmm komisch, mache mal das Leerzeichen swischen mysql_fetch:assoc und $ergebnis raus, aber eigentlich kommt solch ein Fehler nur wenn eine Query einen fehler auswirft.

Versuche bitte mal bevor du mysql_fetch_assoc anwendest folgenden code vor die while Schleife zu schreiben:

PHP:
echo mysql_error();

und sag mal was da raus kommt.
 

strichcode

Nicht mehr ganz neu hier

AW: einzelne zeilen aus db-Feld ausgeben

Wir haben uns gerade überschnitten.
Ich hatte die Fehlermeldung durch einen Schreibfehler fabriziert.
Und das über die Korrekturfunktion noch meinem letzten Beitrag angehangen,
da warst Du schneller.

Jetzt gibt es mit
echo mysql_error();
keine Fehlermeldung, aber der img-Tag besteht aus zuviel Text.

In der DB steht in dem Feld:
Bild1.jpg
Bild2.jpg

und ich möchte als ausgabe haben:
<img scr="Bild1.jpg> <img scr="Bild2.jpg>

zu dem Thema fetch_assoc statt fetch_array habe ich auf die Schnelle das hier
gefunden: http://board.*****.com/thread/910276-unterschiede-mysql-fetch-/
Es soll keinen merklichen Unterschied in der Performance geben und ich bin
in meiner php-unwissenheit froh wenn etwas was ich mache überhaupt funktioniert.
*lach* Du kannst Dir nicht vorstellen wie lange ich gebraucht habe, bis ich überhaupt mein Template gefüllt bekommen habe.
 

Robbyn-

PHP / Flex Programmierer

AW: einzelne zeilen aus db-Feld ausgeben

Das glaube ich dir gerne, PHP ist eben für Einsteiger nicht so leicht, aber dafür gibt es genug Tutorials und Übungen dafür und ist so schnell zu erlernen.

Der Unterschied von fetch_assoc und fetch_arary ist, das fetch_array die doppelte Anzahl an Werte zurück sendet. Wenn man sich z.b. das Resultat von fetch_array anschauen würde, würde dies wie folgt aussehen.

PHP:
Array(
 'name' = "bild.jpg",
 '0' = "bild.jpg"
)

bei fetch_assoc würde das wie folgt aussehen:

PHP:
Array(
 'name' = "bild.jpg"
)

Du siehst, du bekommst da schon etwas saubere Resultate zurück und da es somit auch weniger resultate sind, ist deine Anwendung auch schneller.



Aber nun zu deinen Problem, ich weiß nicht ganz genau, wie deine Werte strukturiert integriert worden sind. Stehen bild1.jpg und bild2.jpg in dem selben Datensatz oder voneinander getrennt?
 

strichcode

Nicht mehr ganz neu hier

AW: einzelne zeilen aus db-Feld ausgeben

Haha, "schnell zu erlernen" - ich jedenfalls tu mich recht schwer.
Das schlimmste ist, wenn man gar keine Ahnung hat, hat man auch kaum Stichworte
fürs googlen... von nützlichen englischkenntnissen ganz zu Schweigen...

Der Eintrag in dem Datenbankfeld ist:

www.pfadzubild1.jpg
www.pfadzubild2.jpg

Die Pfade stehen untereinander weg. Manchmal ist es nur ein Bild, manchmal sind es auch 5 oder 6. Immer stehen sie untereinander.

Ich lese gerade über strtok() nach.
Damit soll man Zeichenketten zerlegen können.
Wahrscheinlich ist in dem Datenbankfeld sowas wie ein unsichtbares \r oder so...

Irgendwie muß es gehen.
 

Robbyn-

PHP / Flex Programmierer

AW: einzelne zeilen aus db-Feld ausgeben

Du sagst du hast sie alle untereinander stehen, dann kannst du sie mit explode aufteilen.

Das sieht wie folgt aus:

PHP:
$abfrage = "SELECT `KAT01_50` FROM db-Name WHERE HAUS_NR_INTERN = '123' ";
$ergebnis = mysql_query($abfrage);

while ($daten = mysql_fetch_assoc($ergebnis)) {
   $images = explode("<br />",nl2br($daten['KAT01_50']));

  foreach($images as $key)
  {
   echo '
   <img src="$key" />
   ';
  }
}
 

strichcode

Nicht mehr ganz neu hier

AW: einzelne zeilen aus db-Feld ausgeben

Hui! Bist Du schnell.

aber es klappt nicht ganz:

Wenn ich das mache, bekomme ich folgenden Quelltext geschrieben:
HTML:
<img src="$key" />        <img src="$key" />        <img src="$key" />        <img src="$key" />
 

Robbyn-

PHP / Flex Programmierer

AW: einzelne zeilen aus db-Feld ausgeben

Uppps mein Fehler, hier nochmal der richtige Code:

PHP:
$ergebnis = mysql_query($abfrage);

while ($daten = mysql_fetch_assoc($ergebnis)) {
   $images = explode("<br />",nl2br($daten['KAT01_50']));

  foreach($images as $key)
  {
   echo "
   <img src='$key' />
   ";
  }
}

P.S. Arbeite beruflich mit PHP, deshalb schon Routine ;)
 

strichcode

Nicht mehr ganz neu hier

AW: einzelne zeilen aus db-Feld ausgeben

YES!!!
Super und vielen Dank.

Jetzt hängt er an den letzten img-Tag einen leeren Tag dran:
HTML:
<img src='bild1.jpg' />        <img src=' bild2.jpg' />        <img src=' bild3.jpg' />        <img src=' ' />
Ich hab nachgesehen, in diesem speziellen DB-Feld befinden sich nur 3 Pfadangaben.

<img src=' ' /> am Ende ist also einmal zuviel.
Aber mit so einem Fehler könnte ich glatt leben.
Ich danke Dir noch mal sehr.
 

Robbyn-

PHP / Flex Programmierer

AW: einzelne zeilen aus db-Feld ausgeben

Hier noch der verbesserte Code, damit sowas wie ein leeres Bild nicht kommt:

PHP:
$ergebnis = mysql_query($abfrage);

while ($daten = mysql_fetch_assoc($ergebnis)) {
   $images = explode("<br />",nl2br($daten['KAT01_50']));

  foreach($images as $key)
  {
    if(empty($key))
   {
      continue;
   }
   echo "
   <img src='$key' />
   ";
  }
}
 

jaderbass

Noch nicht viel geschrieben

AW: einzelne zeilen aus db-Feld ausgeben

Uups, jetzt war ja doch einer schneller ;)

Aber ich habe noch was:
Um evtl. Leerzeichen am Anfang und Ende der Datenbankeinträge zu entfernen schreibst du:
PHP:
$ergebnis = mysql_query($abfrage);

while ($daten = mysql_fetch_assoc($ergebnis)) {
   $images = explode("<br />",nl2br($daten['KAT01_50']));

  foreach($images as $key)
  {
    if(empty($key))
   {
      continue;
   }
   trim($key);
   echo "
   <img src='$key' />
   ";
  }
}

Gruß
Jörg
 
Zuletzt bearbeitet:

strichcode

Nicht mehr ganz neu hier

AW: einzelne zeilen aus db-Feld ausgeben

Ich bin echt begeistert, welche Mühe Du Dir mit mir machst.
Leider habe ich immer noch einen leeren Tag am Ende.

unverändert:
HTML:
<img src='bild1.jpg' />        <img src=' bild2.jpg' />        <img src=' bild3.jpg' />        <img src=' ' />

Aber ich muß unser Gespräch für heute leider beenden, die Familie kräht nach Abendessen(). ;-)
Ich schaue mir morgen die Sache nochmal in Ruhe an und melde mich ggf. nochmal.

Auf jedem Fall hast Du mir schon riesig weiter geholfen.
Danke und einen schönen Abend noch.
LG
Heike
 

Robbyn-

PHP / Flex Programmierer

AW: einzelne zeilen aus db-Feld ausgeben

Hallo Jörg, danke für die Ergänzung, aber ich denke das die Datensätze schon bevor sie in die Datenbank geschrieben werden kontrolliert werden, dass Sie nicht ein Leerzeichen am Anfang oder Ende enthalten. Aber kann er sich trotzdem aufschreiben :D
 

strichcode

Nicht mehr ganz neu hier

AW: einzelne zeilen aus db-Feld ausgeben

SIE! (der TO ist eine Sie) kann es sich trotzdem aufschreiben ;-)

Hallo Jörg, vielen Dank auch für Deine Antwort,
wir sind hier so wild unterwegs, das sich all unsere Antworten überschreiben.

Aber wie gesagt, für heute ist für mich hier Feierabend, morgen sehe ich mir in Ruhe an, was genau nun hilft und werde Euch berichten.

Bis dahin vielen Dank für Eure Hilfe und einen schönen Abend.
LG
Heike
 

Robbyn-

PHP / Flex Programmierer

AW: einzelne zeilen aus db-Feld ausgeben

Uiii, verzeihe mir, war keine Absicht, bin nach deinem Benutzernamen gegangen DER strichcode ^_^
 

strichcode

Nicht mehr ganz neu hier

AW: einzelne zeilen aus db-Feld ausgeben

Guten Morgen!
Nachdem ich trotz
HTML:
trim($key);
immernoch einen leeren IMG-Tag hatte,
habe ich einfach in meinem nicht mehr jugendlichen Leichtsinn
eine "-1" angefügt.
HTML:
$images = explode("<br />",nl2br($daten['KAT01_50']), -1);
Ich habe es mit verschiedenen Mengen ausprobiert, wenn ich nur einen
Pfad im DB-Feld habe, oder wenn ich mehrere Pfade dort stehen habe,
funktioniert es so.

Also herzlichen Dank nochmal an alle, die mir geholfen haben, ich bin ein
großes Stück weiter gekommen und gelernt habe ich auch was.

LG
Heike /die sich hinter DEM strichcode versteckt ;-)
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
118.635
Beiträge
1.538.449
Mitglieder
67.556
Neuestes Mitglied
Ggirl
Oben