Array Frage
Joschi
- php
Guten Morgen,
Problem:
In einer mySQL Datenbank werden in zwei Pfade zu Bildern und einmal die dazugeörigen Beschreibungen gespeichert.
Die Daten sind durch "**" als Trennzeichen voneinander getrennt.
Nun sollten diese in ein 2 dim Array gespeichert werden.
So wie es mmentan ist scheint es nicht zu klappen.
Die Smarty Template gibt immer nur "Array" aus.
function returnGallery()
{
$this->db->select("d_gallerie, d_gallerietxt", "produktkuerzel", "(d_produktname = '".$this->productName."')", "","","","");
$row = $this->db->fetch_array();
$bilder['pic'][] = explode("**", $row['d_gallerie']);
$bilder['txt'][] = explode("**", $row['d_gallerietxt']);
if ($bilder['pic'][0] != NULL)
return $bilder;
else
return NULL;
}
Befindet sich ein syntaktischer Fehler in diesem Code?
Vielen Dank
hi,
In einer mySQL Datenbank werden in zwei Pfade zu Bildern und einmal die dazugeörigen Beschreibungen gespeichert.
Die Daten sind durch "**" als Trennzeichen voneinander getrennt.
warum das denn? das ist ziemlich, sorry, idiotisch.
diese daten gehören in _zwei_ spalten, eine für den pfad, eine für die beschreibung.
Nun sollten diese in ein 2 dim Array gespeichert werden.
So wie es mmentan ist scheint es nicht zu klappen.
voraus schliesst du das?
Die Smarty Template gibt immer nur "Array" aus.
vielleicht deshalb, weil sie _einen_ textstring an der stelle erwartet, wo du ihr ein _array_element aus mehreren (zwei) strings übergibst?
$this->db->select("d_gallerie, d_gallerietxt", "produktkuerzel", "(d_produktname = '".$this->productName."')", "","","","");
$row = $this->db->fetch_array();
$bilder['pic'][] = explode("**", $row['d_gallerie']);
$bilder['txt'][] = explode("**", $row['d_gallerietxt']);
ach, da hatte ich dich wohl oben falsch verstanden ...
du hast also offenbar schon zwei spalten für pfad und beschreibung, aber in diesen jeweils mehrere werte abgelegt?
halte ich immer noch für unfug - normalisiere zunächst mal anständig.
Befindet sich ein syntaktischer Fehler in diesem Code?
dann würde sich php wohl idR. mit einem parse error beschweren.
gruss,
wahsaga
Hallo,
du hast also offenbar schon zwei spalten für pfad und beschreibung, aber in diesen jeweils mehrere werte abgelegt?
Ja.
halte ich immer noch für unfug - normalisiere zunächst mal anständig.
Das Problem ist ich habe zu einem Produkt mehrere Bilder. Und die Bilder sind bei mehreren Produkten gleich.
dann würde sich php wohl idR. mit einem parse error beschweren.
Stimmt auch wieder. ;)
Wie macht man das denn nun am besten?
Danke
hallo,
Das Problem ist ich habe zu einem Produkt mehrere Bilder. Und die Bilder sind bei mehreren Produkten gleich.
ist ja kein problem?
bau dir 2 tabellen, die erste die die bilder und eventuell den text beinhaltet,
und eine 2, in der du die prdukte 1 zu n mit den jeweiligen bildern verknüpfst.
viel spass,
hoagie
Hallo,
bau dir 2 tabellen, die erste die die bilder und eventuell den text beinhaltet,
und eine 2, in der du die prdukte 1 zu n mit den jeweiligen bildern verknüpfst.
Also, bin noch allzu firm im Datenbankdesign.
Die Tabellen sind schon zig mal verändert worden.
Um nicht mit dieser Tradition fortzufahren also nochmals nachgefagt.
Es existiert bereits eine Tabelle in der Artikelnummern den Produktnamen zugeordnet sind.
Also nochmals:
Ein Produkt hat mehrere Artikelnummern. Eine Artikelnummer soll mehrere Bilder haben können.
Wie wäre es also hiermit:
Tabelle 1:
----------
id|dateiname|beschreibung
Tabelle 2:
-----------
id|artikelnummer|dateiname
Wäre das richtig?
Nun habe ich erst vor kurzem den Tabellen eine id Spalte zugefügt, da ich vorher den Sinn und Zweck nicht verstanden hatte.
Wie kann ich diese beiden Tabellen den nun verknüpfen? Fehlt da noch etwas? Vielen Dank.
Joschi
hallo,
Wie wäre es also hiermit:
Tabelle 1:
id|dateiname|beschreibung
sehr schön :)
Tabelle 2:
id|artikelnummer|dateiname
passt auch, solange du nicht als dateinamen den des bildes eintragen willst.
dann würde meines erachtens noch eine table fehlen, und zwar so:
Tabelle 3:
----------
artikelnummer|bildid
in die du einfach für jede artikelnummer ein oder mehrere bild id's einträgst. du kannst allerdings auch als 1 spalte noch eine id hinzufügen, bzw. als artikelnummer die artikelid nehmen, wie du möchtest.
lg
hoagie
Hallo
Tabelle 1:
----------
id|dateiname|beschreibung
Tabelle 2:
-----------
id|artikelnummer|dateiname
Tabelle 3:
----------
artikelnummer|bildid
passt auch, solange du nicht als dateinamen den des bildes eintragen willst.
??? Ja was denn sonst?
in die du einfach für jede artikelnummer ein oder mehrere bild id's einträgst. du kannst allerdings auch als 1 spalte noch eine id hinzufügen, bzw. als artikelnummer die artikelid nehmen, wie du möchtest.
Oh Mann. Nun bin ich wieder verwirrt. Meinst du mehrere Bild IDs in eine spalte? Dann müsste ich diese ja wiede mit einem Trennezeichen trennen und wäre wieder da wovon mir wasaga abgeraten hat.
Tut mir Leid, wenn ich mich blöd anstelle.
Könntest Du mir vielleicht mal ein Beispiel mit fiktionalen Produkten geben bei dem ein Artikel 2 bilder besitzt? Dann verstehe ich es sofort. Eventuell mit nur 2 Tabellen, wennmöglich. habe schon so viele.
Danke
Hallo
Tabelle 1:
id|dateiname|beschreibung
Tabelle 2:
id|artikelnummer|dateiname
Tabelle 3:
artikelnummer|bildid
??? Ja was denn sonst?
keine ahnung, was du sonst noch alles speichern willst. ernn du nix hast, brauchst du die spalte auch nicht
Könntest Du mir vielleicht mal ein Beispiel mit fiktionalen Produkten geben bei dem ein Artikel 2 bilder besitzt?
sicher,
z.b:
deine erste tabelle sieht so aus:
Tabelle 1:
----------
1 | bild1.jpg | beschreibung zu bild 1
2 | bild2.jpg | beschreibung zu bild 2
3 | bild3.jpg | beschreibung zu bild 3
4 | bild4.jpg | beschreibung zu bild 4
die zweite so:
Tabelle 2:
----------
1 | 1234
2 | 4567
3 | 8901
und die dritte, in der du alles verknüpfst sieht dann z.b so aus:
Tabelle 3:
----------
1 | 1 // artikel 1 mit bild 1
1 | 3 // artikel 1 mit bild 3
2 | 1 // artikel 2 mit bild 1
4 | 2 // artikel 4 mit bild 2
allerdings darf dann in dem fall keine der spalten ein primärschlüssel oder unique sein...
hier verknüpfst du
habe schon so viele.
das is der sinn von relationalen datenbanken.
hier kannst du ein wenig drüber nachlesen:
http://download.pearsoned.de/leseecke/SQL_21Tg/data/start.htm
hoffe nun ist alles klar
lg
hoagie
Hallo,
super Danke.
Jetzt habe ich es verstanden. Danke auch für das Link.
Noch eine Frage:
Darf man denn die IDs dazu benutzen, die Tabellen zu verknüpfen?
Macht man das wirklich so?
Was ist wenn meine Firma entscheidet, dass sie ein Produkt nicht mehr anbietet?
Wenn ich das aus der 2. Tabelle lösche dann kommt in der 3. ja alles durcheinander, bzw. ich haben eine Mordsarbeit die Sätze aus Tabelle 3 Zu löschen die auf ein nicht mehr vorhandenes Produkt verweisen.
Oder erzähl ich nun Blödsinn?
Danke
hi,
Darf man denn die IDs dazu benutzen, die Tabellen zu verknüpfen?
wer solls dir verbieten ? :)
Macht man das wirklich so?
ja.
Was ist wenn meine Firma entscheidet, dass sie ein Produkt nicht mehr anbietet?
da musst du eben aufpassen und alles so basteln. das wenn du ein produkt löscht, auch die verknüpfungen aus der tabelle löscht
da wirst nicht rundherum kommen, aber das ist genau 1 sql aufruf pro gelöschtem artikel mehr der da auf dich zukommt....
cu
hoagie