Tabellen Aufbau

Tabellen Aufbau

am 14.11.2006 14:39:01 von Bernhard Schimanski

Hallo NG,

in einer Tabelle möchte ich Werte zum übersetzten anzeigen in folgender
form:

Deutsch Englisch

Welt world
Stuhl chair
Auto car
Wort word

usw.

In der DB werden die Werte folgender Maßen gespeichert:
ID - die laufende ID
SpracheID - die ID der Sprache zu der der Wert zugewiesen ist
Beschreibung - der Wert, der in der Tabelle angezeigt wird, wie:
"Welt" usw.

Bsp.
ID SpracheID Beschreibunt
1 1 Welt
2 1 Stuhl
3 2 world
4 2 chair
5 1 auto
6 2 car

Beim lesen der Daten aus der DB bekommen ich die Werte nur Zeilenweise
etwa so:
[ID] => 1
[SpracheID] => 1
[Beschreibung] => Welt

Meine Frage an dieser Stelle, wie kann ich die Werte Spaltenweise
richtig anzeigen, bis jetzt habe ich das leider nicht hin bekommen :-(

Falls jemand Vorschlag hat wie man die Werte in der DB anders speichert,
bitte posten.

Grüße Bernhard

Re: Tabellen Aufbau

am 14.11.2006 15:18:17 von Claudius Hubig

Bernhard Schimanski wrote:
>Hallo NG,
>
>in einer Tabelle möchte ich Werte zum übersetzten anzeigen in fo=
lgender=20
>form:
>
>Deutsch Englisch
>
>Welt world
>Stuhl chair
>Auto car
>Wort word
>
>usw.
>
>In der DB werden die Werte folgender Maßen gespeichert:
>ID - die laufende ID
>SpracheID - die ID der Sprache zu der der Wert zugewiesen ist
>Beschreibung - der Wert, der in der Tabelle angezeigt wird, wie:
>"Welt" usw.
>
>Bsp.
>ID SpracheID Beschreibunt
>1 1 Welt
>2 1 Stuhl
>3 2 world
>4 2 chair
>5 1 auto
>6 2 car
>
>Beim lesen der Daten aus der DB bekommen ich die Werte nur Zeilenweise=20
>etwa so:
>[ID] =3D> 1
>[SpracheID] =3D> 1
>[Beschreibung] =3D> Welt
>
>Meine Frage an dieser Stelle, wie kann ich die Werte Spaltenweise=20
>richtig anzeigen, bis jetzt habe ich das leider nicht hin bekommen :-(

Nun, wie soll denn die Zuordnung stattfinden?

>Falls jemand Vorschlag hat wie man die Werte in der DB anders speichert,=20
>bitte posten.

Ich würde es folgendermaßen machen:

ID SpracheID WortID Beschreibung
1 1 1 Stuhl
2 2 1 chair
3 1 2 Welt
4 2 2 world
5 3 2 monde
6 1 3 Auto
7 4 3 coche

Allerdings bin ich auch kein Datenbankexperte...

Rausholen kannst du dass dann, in dem du in "Beschreibung" suchst, dann
die passende WortID abfragst und danach alle anderen WortIDs
herausholst.

Gruss,

Claudius
--=20
E-Mail gültig, wird aber nicht gelesen, Post an:
*remove*claudiushubig-entfernen-at+expulser+gmxDOTnet
ICQ: 224491597 Jabber: X2017@jabber.ccc.de =20
MSN: claudiushubig@passport.com HTTP: x2017.homelinux.org

Re: Tabellen Aufbau

am 14.11.2006 15:38:57 von Stefan Dreyer

Claudius Hubig wrote:
> Bernhard Schimanski wrote:
>
>>Hallo NG,
>>
>>in einer Tabelle möchte ich Werte zum übersetzten anzeigen in folgender
>>form:
>>
>>Deutsch Englisch
>>
>>Welt world
>>Stuhl chair
>>Auto car
>>Wort word
>>
>>usw.
>>
>>In der DB werden die Werte folgender Maßen gespeichert:
>>ID - die laufende ID
>>SpracheID - die ID der Sprache zu der der Wert zugewiesen ist
>>Beschreibung - der Wert, der in der Tabelle angezeigt wird, wie:
>>"Welt" usw.
>>
>>Bsp.
>>ID SpracheID Beschreibunt
>>1 1 Welt
>>2 1 Stuhl
>>3 2 world
>>4 2 chair
>>5 1 auto
>>6 2 car
>>
>>Beim lesen der Daten aus der DB bekommen ich die Werte nur Zeilenweise
>>etwa so:
>>[ID] => 1
>>[SpracheID] => 1
>>[Beschreibung] => Welt
>>
>>Meine Frage an dieser Stelle, wie kann ich die Werte Spaltenweise
>>richtig anzeigen, bis jetzt habe ich das leider nicht hin bekommen :-(
>
>
> Nun, wie soll denn die Zuordnung stattfinden?
>
>
>>Falls jemand Vorschlag hat wie man die Werte in der DB anders speichert,
>>bitte posten.
>
>
> Ich würde es folgendermaßen machen:
>
> ID SpracheID WortID Beschreibung
> 1 1 1 Stuhl
> 2 2 1 chair
> 3 1 2 Welt
> 4 2 2 world
> 5 3 2 monde
> 6 1 3 Auto
> 7 4 3 coche
>
> Allerdings bin ich auch kein Datenbankexperte...
>
> Rausholen kannst du dass dann, in dem du in "Beschreibung" suchst, dann
> die passende WortID abfragst und danach alle anderen WortIDs
> herausholst.
Das geht in einer SQL-Abfrage:
select de.Beschreibung as wort_de,en.Beschreibung as wort_en
from worte de
inner join worte en
on en.WortID=de.WortID and en.SpracheID=2
where de.SpracheID=1

Alternativ kannst Du auch einen left join benutzen, dann bekommst
Du auch die deutschen Begriffe, zu denen es keine Übersetzung gibt.

Re: Tabellen Aufbau

am 14.11.2006 17:14:01 von Bernhard Schimanski

Hallo NG,

Stop, bitte nicht weiter, ich habe mich falsch ausgedrückt, ich war
schon so damit beschäftigt, das ich es fast für selbst verständlich hilt
meine Beschreibung, tschuldigung.

Im meinem erstem Beitrag habe ich geschrieben:

>Meine Frage an dieser Stelle, wie kann ich die Werte Spaltenweise
>richtig anzeigen,

Der Schwerpunkt ist die Grafische Anzeige, also die Daten werde aus der
DB in einem Array ausgegeben:

$tmp = array([ID] => 1, [SpracheID] => 1, [Beschreibung] => Welt );

In dieser Form kann man die Werte gut Zeilenweise ausgebe aber ich
möchte sie Spalteweise, dh. alle deutschen Werte in einer Spalte, alle
englischen Werte in der ander Spalte, etwa so:

Deutsch Englisch

Welt world
Stuhl chair
Auto car
Wort word

Wie kann ich das umsetzen?

Grüße Bernhard

Re: Tabellen Aufbau

am 14.11.2006 19:05:58 von Stefan Dreyer

Bernhard Schimanski wrote:
> Hallo NG,
>=20
> Stop, bitte nicht weiter, ich habe mich falsch ausgedrückt, ich war=20
> schon so damit beschäftigt, das ich es fast für selbst verständli=
ch hilt=20
> meine Beschreibung, tschuldigung.
>=20
> Im meinem erstem Beitrag habe ich geschrieben:
>=20
> >Meine Frage an dieser Stelle, wie kann ich die Werte Spaltenweise
> >richtig anzeigen,
>=20
> Der Schwerpunkt ist die Grafische Anzeige, also die Daten werde aus der=
=20
> DB in einem Array ausgegeben:
>=20
> $tmp =3D array([ID] =3D> 1, [SpracheID] =3D> 1, [Beschreibung] =3D> Wel=
t );
>=20
> In dieser Form kann man die Werte gut Zeilenweise ausgebe aber ich=20
> möchte sie Spalteweise, dh. alle deutschen Werte in einer Spalte, all=
e=20
> englischen Werte in der ander Spalte, etwa so:
>=20
> Deutsch Englisch
>=20
> Welt world
> Stuhl chair
> Auto car
> Wort word
>=20
> Wie kann ich das umsetzen?
Dazu benötigst Du in HTML eine zeilenweise Ausgabe, genau das tut
der obige SQL-Befehl. Du hast dann ein array=20
([wort_de]=3D>'Welt','wort_en'=3D>'world'). Warum willst Du die Zuordnung=

nicht über die DB machen?
in Deinem $tmp-Beispiel fehlt ganz einfach die Zuordnung vom englischen
zum deutschen Wort.
Falls Die Daten zufällig in der richtigen Reihenfolge reinpurlzen,=20
kannst Du das über ein assoziatives Array machen. Das sieht dann z.b. s=
o=20
aus:

while ($tmp=3Dsql_fetch_assoc()) {
$wort[$tmp['SpracheID']][$index[$tmp['SpracheID']]]=3D
$tmp['Beschreibung'];
$index[$tmp['SpracheID']]++;
}

for ($i=3D0 ; $i< $index[1] ; $i++) {
echo ''.$wort[1][$i].''.$wort[2][$i].'';
}

Aber das ist alles andere als schön und ich würde mir mal Gedanken um=

meine Datenstrukturen machen.

Re: Tabellen Aufbau

am 14.11.2006 21:24:39 von Oliver Block

Bernhard Schimanski wrote:

> Hallo NG,
>
> in einer Tabelle möchte ich Werte zum übersetzten anzeigen in folgender
> form:


Kleiner Tip. Anstelle von numerischen Werten für SpracheID würde ich IS0-639
Abkürzungen wählen, z.B. en, de, usw.

Siehe



> Bsp.
> ID SpracheID Beschreibunt
> 1 1 Welt
> 2 1 Stuhl
> 3 2 world
> 4 2 chair
> 5 1 auto
> 6 2 car
>
> Beim lesen der Daten aus der DB bekommen ich die Werte nur Zeilenweise
> etwa so:
> [ID] => 1
> [SpracheID] => 1
> [Beschreibung] => Welt

Weil Du eine Tabelle zeilenweise abfragst.

> Meine Frage an dieser Stelle, wie kann ich die Werte Spaltenweise
> richtig anzeigen, bis jetzt habe ich das leider nicht hin bekommen :-(

Du durchläufst Zeile für Zeile.

Gruß,

Oliver


--
Leben ist mehr als ...

Re: Tabellen Aufbau

am 15.11.2006 09:12:09 von Bernhard Schimanski

Hallo,

>> Der Schwerpunkt ist die Grafische Anzeige, also die Daten werde aus
>> der DB in einem Array ausgegeben:
leider habe ich mich zu sehr auf die Html Seite fixiert :-(

> Dazu benötigst Du in HTML eine zeilenweise Ausgabe, genau das tut
> der obige SQL-Befehl. Du hast dann ein array
> ([wort_de]=>'Welt','wort_en'=>'world'). Warum willst Du die Zuordnung
> nicht über die DB machen?
> in Deinem $tmp-Beispiel fehlt ganz einfach die Zuordnung vom englischen
> zum deutschen Wort.
> Falls Die Daten zufällig in der richtigen Reihenfolge reinpurlzen,
> kannst Du das über ein assoziatives Array machen. Das sieht dann z.b. so
> aus:
>
> while ($tmp=sql_fetch_assoc()) {
> $wort[$tmp['SpracheID']][$index[$tmp['SpracheID']]]=
> $tmp['Beschreibung'];
> $index[$tmp['SpracheID']]++;
> }
>
> for ($i=0 ; $i< $index[1] ; $i++) {
> echo ''.$wort[1][$i].''.$wort[2][$i].'';
> }
>
> Aber das ist alles andere als schön und ich würde mir mal Gedanken um
> meine Datenstrukturen machen.
Stimmt, die Lösung ist in der SQL-Abfrage, ich habe es umgesetzt und ein
dritte Sprache hinzugefügt:

SELECT de.Beschreibung AS DE, en.Beschreibung AS EN, fr.Beschreibung
AS FR
FROM Translation_import AS de INNER JOIN
Translation_import AS en ON en.WortID = de.WortID
INNER JOIN
Translation_import AS fr ON en.WortID = fr.WortID
AND fr.SpracheID = 2 AND en.SpracheID = 1 AND de.SpracheID = 3
Danke für die Hilfe.

Grüße Bernhard