Webmaster Forum Logo Part 1 Webmaster Forum Logo Part 2
Webmaster Forum Logo Part 3
     
 
  :: Anmeldung

Benutzername:

Registrierung...

Passwort:

Passwort vergessen?

angemeldet bleiben


  
  :: Umfrage
Welche sozialen Netzwerke benutzt du regelmäßig?

 Facebook
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 73%
 keines
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 22%
 Google+
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 19%
 Twitter
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 11%
 Xing
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 schülerVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 meinVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 studiVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 MySpace
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%
 LinkedIn
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%

 ges. 393 Stimmen
 
  :: Buttons

Valid XHTML 1.0 Transitional

Mediatec

Foren As

Dabei seit: 23.02.2011

Beiträge: 97

 

1 Zum Seitenanfang

Dienstag, 1. November 2011, 16:29

Passendes Bild zu DB Eintrag zeigen?!

In meiner MySQL Tabelle stehen Felder für, Automarke, Automodell, Baujahr usw.

In einem image Ordner liegen die passenden Grafiken zu den einzelnen Bezeichnungen. Nun möchte ich gern das Image auf der Site zeigen wenn in der DB das entsprechende Feld ausgefüllt wurde. Zurzeit wird lediglich der Textinhalt des Feldes aus der DB ausgelesen.

PHP-Quelltext

1
echo '.$zeile['Mercedes'].'


Nun hatte ich folgendes versucht:

PHP-Quelltext

1
echo <img src="imges/symbole/mercedes.png" />'.$zeile['Mercedes'].'


Leider klappt das aber nicht :(

Wie kann ich das passende Image zum Feldeintrag anzeigen lassen?

Natürlich stehen mehrere img src Tags untereinander. Es sollen aber immer nur die Images gezeigt werden, bei denen ein Eintrag in der DB steht!
 

Josephine

Haudegen

Dabei seit: 30.04.2009

Beiträge: 624

 

2 Zum Seitenanfang

Dienstag, 1. November 2011, 20:08

Wie wärs wenn du den link für das image auch in der db speicherst und ihn dann mitausgibst?
Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.
 

Moee

Routinier

Dabei seit: 25.01.2009

Beiträge: 341

 

3 Zum Seitenanfang

Dienstag, 1. November 2011, 23:25

Zitat


In meiner MySQL Tabelle stehen Felder für, Automarke, Automodell, Baujahr usw.


Vielleicht habe ich das ja falsch verstanden aber wenn das alles in einer Tabelle steht verstößt das gegen Grundsätze der Datenbankentwicklung. Du speicherst die Automarke(Hersteller) bei dem Auto ab, es wäre aber schöner und auch leichter Auto und Marke zu trennen, das heißt du hast die Autos in einer Tabelle und die Hersteller in einer Tabelle.
Nun kannst du dir aussuchen, entweder gibst du die Hersteller als ID beim Auto an (als FK) oder du bastelst eine Verbindungstabelle,wo jeder Auto_ID eine HERSTELLER_ID zugeordnet ist. das erspart dir bei Änderungen am Hersteller eine Menge Anpassungsaufwand, außerdem kannst du das Modell und den Hersteller immer wieder von dort Nutzen ohne jedesmal eien unnötige Zusatzinformation in deiner Auto-Tabelle zu speichern.

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
TB_AUTO:
AUTO_ID int(7auto_increment PK,
AUTO_NAME varchar(32NOT NULL,
...
...

TB_HERSTELLER:
HERTSELLER_ID int(7,0auto_increment PK,
HERSTELLER_NAME varchar(32NOT NULL,
...

TB_MODELL:
MODELL_ID int(7,0auto_increment PK,
MODELL_NAME varchar(32NOT NULL,
...
...

TB_VERBINDUNG:
A_ID int(7,0NOT NULL,
H_ID int(7,0NOT NULL,
M_ID int(7,0NOT NULL,
PRIMARY KEY(A_IDH_IDM_ID),
FOREIGN KEY(a_ID TB_AUTO.AUTO_IDM_ID TB_MODELL.MODELL_IDH_ID TB_HERSTELLER.HERSTELLER_ID)


Entschuldigt wenn das ein bisschen ungenau ist, aber das war so das einzige was mir zu später stunde noch einfiel außerdem habe ich wenig mit MySQL am Hut ich bin eher Oracle PL/SQL'er.

Zu deinem Problem: Wie Josephine schon geschrieben hat, speichere die Bildlinks mit in der Datenbank oder du benennst die Bilder wie die Autos selber und fügst immer folgends ein:

PHP-Quelltext

1
echo <img src="imges/symbole/"'.$zeile['autoname'].'".jpg" />'.$zeile['Mercedes'].'


Wobei die Methode von Josephine wahrscheinlich Fehler eher ausschließen würde.

Sollte etwas unklar sein kannst du dich gerne bei mir melden.

VG,
Moee
Mfg
Moee
 

Mediatec

Foren As

Dabei seit: 23.02.2011

Beiträge: 97

 

4 Zum Seitenanfang

Donnerstag, 3. November 2011, 12:52

Vielen Dank für eure Tipps.

Ich habe es nun erst mal so gelöst:

PHP-Quelltext

1
echo <img src="imges/symbole/"'.$zeile['Mercedes'].'".jpg" />'.$zeile['Mercedes'].'

Das fuinktioniert auch wunderbar!

Das Problem an der Sache ist aber, das ich, wenn ich einen neuen DB Eintrag erstelle, auch jedes mal in die Zelle "Mercedes" das Wort Mercedes eintragen muss.

Ich hatte mir nun folgendes überlegt:

Ich erstelle eine neue Zeile mit: Spaltenname:Mercedes, Typ:int(1), Null:ja, Standart:0

Dann müsste ich beim erstellen einer neuen Zeile nur noch den Hacken bei "Mercedes" (wenn gewünscht) reinmachen und es würde in der PHP Datei mit ausgegeben.

Jetzt aber mein neues Problem; wie mach ich das?

Wie lese ich in PHP den Spaltennamen aus und gebe die entsprechende Information aus (also den Spaltennamen als Text) wenn bei "Null" der Hacken drin ist?

Versteht ihr was ich meine?
 

litoca

Tripel-As

Dabei seit: 15.01.2009

Beiträge: 221

 

5 Zum Seitenanfang

Donnerstag, 3. November 2011, 14:07

Hi
Ich fände es wirklich sinnvoll, wenn du deinen Sourcecode mal Posten würdest.
Ich glaube dann können wir dir besser helfen.

litoca
think positive!

litoca
 

cccpmik

Foren Gott

Dabei seit: 04.09.2007

Beiträge: 2 999

 

6 Zum Seitenanfang

Donnerstag, 3. November 2011, 14:59

ich würde sagen es ist ein falsches DB Design, wenn du spalten wie Mercedes, Audi, BWM usw hast. ich würde das eher so machen wie Moee also eine Tabelle mit Marken und Autos

so dass du dann sowas machen kannst

PHP-Quelltext

1
echo '<img src="imges/symbole/"'.$zeile['marke'].'".jpg" />'.$zeile['marke'];


damit dann als ergebnis dann das erscheint

HTML

1
2
3
<img src="imges/symbole/vw.jpg" />vw
<img src="imges/symbole/Mercedes.jpg" />Mercedes
<img src="imges/symbole/audi.jpg" />Audi
Mein kleines Projekt
-Cruel Online-
 

Moee

Routinier

Dabei seit: 25.01.2009

Beiträge: 341

 

7 Zum Seitenanfang

Donnerstag, 3. November 2011, 23:29

Informiere dich mal im Allgemeinen zu den Themen Datenbankmodellierung und Normalformen, dann bist du eigentlich auf dem richtigen Wege eine fachlich und technisch Korrekte Datenbank zu erstellen.

Eine Datenbank versuch immer so viele Fälle wie möglich abzudecken ohne mit einer Erweiterung auskommen zu müssen.


Link:
http://reeg.junetz.de/DSP/node7.html

Es ist nicht nur eine Frage der Schönheit, sondern auch eine Frage der Performance und der Wartbarkeit.
Eine Korrekt erstellte Datenbank (Alle Normalformen bzw. min die ersten 3) lässt sich im nachhinein besser überarbeiten und erweitern.
Mfg
Moee
 

Mediatec

Foren As

Dabei seit: 23.02.2011

Beiträge: 97

 

8 Zum Seitenanfang

Freitag, 4. November 2011, 16:30

Also, zur Zeit lese ich die Daten aus der DB erfolgreich so aus:

PHP-Quelltext

1
2
3
4
echo'
<img src="images/car/'.$zeile['Mercedes'].'.png" /></td><td>'.$zeile['Mercedes'].'
<img src="images/car/'.$zeile['Audi'].'.png" /></td><td>'.$zeile['Audi'].'
';

Und so stehen die Daten in der DB:



Ich möchte aber, das man beim Eintragen in die DB nur noch einen Hacken im entsprechendem Feld macht, damit das gleiche Ergebnis wie mit der oberen Methode erziehlt wird. Man also nicht jedes mal "Mercedes", "Audi" usw. eintippen muss wenn man einen neuen Eintrag in die DB macht.

So wie auf diesem Bild habe ich mir das vorgestellt:

Wenn der Hacken an ist, wird das Bild und der Text auf der Site angezeigt. Wenn der Hacken nicht gesetzt ist, wird nichts angezeigt!
Das heißt, der Spaltenname ist gleichzeitig auch der Image Name und der "Text" der auf der Site angegeben wird.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Mediatec« (4. November 2011, 16:30)

 

Moee

Routinier

Dabei seit: 25.01.2009

Beiträge: 341

 

9 Zum Seitenanfang

Freitag, 4. November 2011, 21:35

Okay sauberer wäre es,wenn du eine Tabelle hast wo der Angehakte Wert eingeträgen wir von mir aus TB_Auto_ZU_HERSTELLER, dann hast du eine Tabelle mit allen Herstellern TB_HERSTELLER, in der TB_HERSTELLER speichert du alle Hersteller (Mercedes, Audi) und in das Held für den Hersteller in TB_HERSTELLER_ZU_AUTO trägst du je nachdem was ausgewählt wurde die ID des Herstellers ein.
Sollte eine Benutzer mehr als ein Wert angehakt haben, dann speicherst du in TB_AUTO_ZU_HERSTELLER mehrere Werte für den Benutzer, d.h. du hast in TB_AUTO_ZU_HERSTELLER immer einen Wert zum Benutzer(oder an wem du das fest machst) und immer einen Wert für den Hersteller, für den nächsten Haken auch wieder das gleiche.

So wie du das machen willst... kann man es machen, ist aber nicht sehr ratsam, da es total unperformant ist. SQL-Datenbank sind auf Fremdschlüssel-Beziehungen ausgelegt und verwalten demnach intern Tabellen die über einen Fremdschlüssel miteinander verbunden sind, oftmals geht das Abfragen der Daten über ein Fremdschlüssel-Konstrukt schneller als wenn sich das ganze in einer Tabelle befindet.

EDIT:

So in der Art mein ich das:

  Spoiler Spoiler


MySQL-Abfrage(n)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
CREATE TABLE TB_HERSTELLER (

  HID int(7) NOT NULL auto_increment,
  H_Bezeichnung varchar(32) NOT NULL,
  PRIMARY KEY(HID)
  
);

CREATE TABLE TB_AUTO_ZU_HERSTELLER
(
   BENUTZER_ID     int(7) NOT NULL,
   HERSTELLER_ID   int(7) NOT NULL,
   PRIMARY KEY(BENUTZER_ID, HERSTELLER_ID),
   FOREIGN KEY(HERSTELLER_ID) REFERENCES TB_HERSTELLER(HID)
);

INSERT INTO TB_HERSTELLER(H_Bezeichnung)
VALUES ('Audi');

INSERT INTO TB_HERSTELLER(H_Bezeichnung)
VALUES ('Mercedes');

INSERT INTO TB_HERSTELLER(H_Bezeichnung)
VALUES ('BMW');

INSERT INTO TB_AUTO_ZU_HERSTELLER(BENUTZER_ID, HERSTELLER_ID)
VALUES (11, 3);

INSERT INTO TB_AUTO_ZU_HERSTELLER(BENUTZER_ID, HERSTELLER_ID)
VALUES (11, 2);

INSERT INTO TB_AUTO_ZU_HERSTELLER(BENUTZER_ID, HERSTELLER_ID)
VALUES (11, 1);


SELECT a.BENUTZER_ID, b.H_Bezeichnung
FROM TB_AUTO_ZU_HERSTELLER a, TB_HERSTELLER b
WHERE a.HERSTELLER_ID = b.HID



Habs getestet, funktioniert alles.
Mfg
Moee

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Moee« (4. November 2011, 21:35)

 

cccpmik

Foren Gott

Dabei seit: 04.09.2007

Beiträge: 2 999

 

10 Zum Seitenanfang

Freitag, 4. November 2011, 23:00

du brauchst auto von hersteller nicht zu trennen, da ein Auto nur von einem hersteller gemacht wird;) es ist also eine 1:n beziehung
Mein kleines Projekt
-Cruel Online-
 

Moee

Routinier

Dabei seit: 25.01.2009

Beiträge: 341

 

11 Zum Seitenanfang

Samstag, 5. November 2011, 17:36

Genau genommen ist es sinnvoller, Auto von Hersteller zu Trenne, da beides unterschiedliche Informationen sind, die in einem anderen Kontext evtl einzelnd gebraucht werden, daher ist es sinnvoll (wenn auch nicht ganz korrekt) Auto von Hersteller zu trennen.
Mfg
Moee
 

Mediatec

Foren As

Dabei seit: 23.02.2011

Beiträge: 97

 

12 Zum Seitenanfang

Samstag, 5. November 2011, 22:04

Das ist mir alles noch zu hoch. So weit bin ich in der Datenbankprogrammierung noch nicht.

Das Auto von Hersteller getrennt werden sollte leuchtet mir ein. Doch zuerst will ich erstmal nur klickbare Felder in der Datenbank haben und diese per PHP auslesen. Wenn also Feld "Null" ist, zeige nichts an und wenn Feld "not Null" ist, dann zeige es an. so wie ich oben beschrieben habe.
 

MagellanMedia

Doppel-As

Dabei seit: 04.11.2011

Beiträge: 134

 

13 Zum Seitenanfang

Samstag, 5. November 2011, 22:16

Leeres Feld prüfen

Also, wenn ich das soweit richtig verstanden habe, willst du im Grund erstmal nur prüfen ob ein Feld leer ist oder nicht?

Dann mach doch folgendes:

if(!empty($zeile['WERT']))
echo "<BILD EINBINDEN>";

Wichtig dbaei ist das ! vor empty, das bedeutet folgendes:
Wenn(nicht leer($zeile['WERT']))
echo "<img ....>";


Oder hab ich das jetzt missverstanden?
----------
Webdesign und Webprogrammierung
http://www.magellan-media.de
 

Mediatec

Foren As

Dabei seit: 23.02.2011

Beiträge: 97

 

14 Zum Seitenanfang

Donnerstag, 10. November 2011, 10:42

Vielen Dank für eure Hilfe. Ich habe eine Möglichkeit mit den Set Befehl in MySQL gefunden. Darüber kann ich alle Einträge, die erscheinen sollen, einfach anklicken. Einmal vordefeniert und dann nur noch auswählen.
 

Ähnliche Themen