php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 31.05.2005, 21:10  
Erfahrener Benutzer
 
Registriert seit: 23.02.2005
Beiträge: 211
TheIfrit
Standard Links im Text in extra Spalte?

Ich habe 4 Tabellen, mit denen ich das getestet habe und es funktioniert, aber in einer Spalte habe ich ...naja... mehrere Datensaetze.
Code:
id | name | text | linkworte

Fleisch
0 | Rindfleisch | Rindfleisch schmeckt gut zu vielem, unter anderem Erbsen und Kartoffeln | Erbsen Kartoffeln
1 | Schweinefleisch | Schweinefleisch schmeckt gut zu vielem, unter anderem Erbsen und Kartoffeln | Erbsen Kartoffeln

Gemuese
0 | Kartoffeln | Kartoffeln kann man gebraten oder mit Gemüse und Fleisch essen. Gut geeignet sind Erbsen, Rindfleisch und Schweinefleisch. | Erbsen Rindfleisch Schweinefleisch
1 | Erbsen | Erbsen schmecken sehr gut mit Kartoffeln und Rindfleisch oder Schweinefleisch. | Kartoffeln Rindfleisch Schweinefleisch
Code:
id|wort|zieltabelle|zieleintrag

linkworte
0 | Kartoffeln      | 0 | 0
1 | Erbsen          | 0 | 1
2 | Rindfleisch     | 1 | 0
3 | Schweinefleisch | 1 | 1
Code:
id|name

tabellenliste
0 | Gemuese
1 | Fleisch
aus diesen Daten wird ein Text erzeugt, in welchem die Linkworte eben zu den entsprechenden anderen Texten verlinken. Das funktioniert einwandfrei. Ich uebermittle das Linkwort, frage in der Linkworttabelle die zieltabelle und die ID ab. Dann wird in der tabellenliste die entsprechende Tabelle rausgesucht und aus dieser dann der Eintrag mit der entsprechenden ID genommen und ausgegeben... eben wieder mit den Linkworten. So zeigt jedes "Kartoffeln" im Text(ausser im Kartoffeltext) auf den Kartoffeltext usw.
Die Linkworte muessen ja irgendwie am text dranstehen und es sind immer unterschiedlich viele, deshalb habe ich die alle in eine Spalte gepackt.

Jetzt meine Frage:
Kann man das noch anders machen?

MfG
Ifrit
TheIfrit ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 01.06.2005, 10:05  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Dein DB-Design ist wohl nicht das Gelbe vom Ei. Du solltest dich mal etwas mit Normalisierung befassen, z.B. hier: http://ffm.junetz.de/members/reeg/DS...00000000000000. Was du brauchst sind nicht vier, sondern in diesem Fall zwei Tabellen: eine mit den Zutaten (ob Gemüse oder Fleisch ist ja egal, vieleicht kommt auch mal Getreide dazu) und eine mit den dazugehörigen Links. Diese besteht wiederum nur aus ID's der ersten Tabelle. Also etwa so:
zutaten:
Code:
id | name | text 
1 | Rindfleisch | Rindfleisch schmeckt gut zu vielem, unter anderem Erbsen und Kartoffeln.
4 | Schweinefleisch | Schweinefleisch schmeckt gut zu vielem, unter anderem Erbsen und Kartoffeln.
5 | Kartoffeln | Kartoffeln kann man gebraten oder mit Gemüse und Fleisch essen. Gut geeignet sind Erbsen, Rindfleisch und Schweinefleisch. 
7 | Erbsen | Erbsen schmecken sehr gut mit Kartoffeln und Rindfleisch oder Schweinefleisch.
links:
Code:
zutat_id | link_id
1 | 7
1 | 5
4 | 7
4 | 5
5 | 1
5 | 4
5 | 7
7 | 1
7 | 4
7 | 5
Und für die Abfrage brauchst du dann zwei JOINS:
PHP-Code:
<?php
$sql 
"SELECT z1.name, z1.text, z2.name
           FROM zutaten z1
           INNER JOIN links l ON z1.id = l.zutat_id
           INNER JOIN zutaten z2 ON l.link_id = z2.id"
;
?>
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Alt 01.06.2005, 12:49  
Erfahrener Benutzer
 
Registriert seit: 23.02.2005
Beiträge: 211
TheIfrit
Standard

Vielen Dank erstmal lazydog damit hast du natürlich recht und entschuldige das sehr schlecht gewählte Beispiel

Es kommen nämlich mindestens 2 unterschiedliche tabellen mit unterschiedlichen Daten in Frage. da muss ich dann doch noch irgendwie die Tabellen mit reinbringen, sonst weiss ja die Linktabelle nicht, aus welcher anderen tabelle ds ganze kommt.
Code:
Nahrung
id | name | text 
1 | Rindfleisch | Rindfleisch schmeckt gut zu vielem, unter anderem Erbsen und Kartoffeln. Rindfleisch wird aus Kühen hergestellt.
4 | Schweinefleisch | Schweinefleisch schmeckt gut zu vielem, unter anderem Erbsen und Kartoffeln. Schweinefleisch wird aus Schweinen hergestellt.
5 | Kartoffeln | Kartoffeln kann man gebraten oder mit Gemüse und Fleisch essen. Gut geeignet sind Erbsen, Rindfleisch und Schweinefleisch. 
7 | Erbsen | Erbsen schmecken sehr gut mit Kartoffeln und Rindfleisch oder Schweinefleisch. Erbsen kommen aus Erbsenschoten.

Herkunft
id | name | text | bild
1 | Kuh | eine Kuh ist ein Wiederkäuer und frisst bevorzugt Grass. |BildeinerKuh
2 | Schwein | Ein Schwein frisst nahezu alles, was es kriegt |BildeinesSchweins
3 | Erbsenschote|die Erbsenschote waechst an einer Ebsenpflanze|BildeinerErbsenschote
4 | Erbsenpflanze | An Erbsenpflanzen wachsen Erbsenschoten aus denen man Erbsen bekommt. | BildeinerErbsenpflanze
und nun?
jetzt passt ds Wort im text (Kühen - Kuh und Schweinen - Schwein) nicht mehr zu den Namen und das kann bei normalen Sätzen ja oefter passieren. Das muss ich ja abfangen mit einer entsprechenden Liste:
Kuh -> Kühe Kühen
Schwein -> Schweine Schweinen
Erbsenschote -> Erbsenschoten
Erbsenpflanze ->Erbsenpflanzen

Ich wuerde jetzt wegen der unterschiedlichen tabellen entweder die tabellennamen in die linktabelle mit reinschreiben oder wieder eine tabellenliste machen und nur die IDs in die Linktabelle setzen, was dann doch wieder auf mind. 3 tabellen hinauslaufen wuerde.

also zusätzlich zu den X Datentabellen
die Linktabelle mit zutaten_id und link_id und tabellename
oder
die Linktabelle mit daten_id und link_id und tabellen_id und tabellenliste mit tabellin_id und Datentabellennamen.
TheIfrit ist offline   Mit Zitat antworten
Alt 01.06.2005, 15:06  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Genau darum sollst du ja nicht mit Worten arbeiten, sondern mit nummerischen Fremdschlüsseln. Dann ist es auch egal, ob das Wort in Ein- oder Mehrzahl vorkommt.
Aber ehrlich gesagt, ich verstehe auch niocht mehr ganz, was du erreichen willst. Wenn du auch noch die Herkunft eines Lebensmittel haben willst, brauchst du halt noch einen Fremdschlüssel auf die entsprechende Tabelle, und eventuell in der Tabelle Herkunft noch einen Verweis auf sich selber. Also z.B.
Nahrung
Code:
id | name | text | herkunft_id
7 | Erbsen | Bla ..... | 3
Herkunft
Code:
id | name | text | herkunft_id
3 | Erbsenschote | blublu ... | 4
4 | Erbsenplanze | blibli ... | NULL
Hab jetzt das Beispiel genommen, da ich eben im Garten die Erbsen angebunden habe
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Alt 01.06.2005, 19:27  
Erfahrener Benutzer
 
Registriert seit: 23.02.2005
Beiträge: 211
TheIfrit
Standard

Danke nochmal fuer deine Hilfe, aber du nimmst das Beispiel zu woertlich... um gemuese oder Fleisch gehts im eigentlichen überhaupt nicht.
das war nur ein testprogramm mit testdaten, da mir grad nix dümmeres einfiel, um die Link-im-Text-Funktion, die mir vorschwebte zu testen.

es geht darum, dass ich texte aus unterschiedlichen tabellen über die in den texten vorkommenden Worte verknuepfen will. Und die im text vorkommenden Worte unterscheiden sich gelegentlich von den Namen der Eintraege... wie eben Kuh und Kühen.

wenn ich die eigentlichen Daten hier angebe, sprengt das den Rahmen im heftigsten Maße.

Die numerischen fremdschlüssel sind mir eigentlich klar, aber woher weiss mein Programm dann, dass er zutat_id X, "Kuh" benutzen soll, wenn im text nur "Kühen" steht, welches als Link fungieren soll, wenn es nur "Kuh" als Wort zum pruefen hat?
Das Programm kann ohne entsprechende Daten "Kühen" doch gar nicht als entsprechung identifitzieren.
TheIfrit ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Text mit Links (HTML)-formatiert ausgeben asyoulikeit Datenbanken 6 02.06.2008 08:49
JavaScript/PHP: qooxdoo 0.7.1 - Teil 1 : Eine Einführung Zergling-new Tutorials 6 25.01.2008 10:41
CSS - Bild im div container überlappt andere container Buschdieb HTML, Usability und Barrierefreiheit 13 19.07.2007 23:17
Links im Text GELight PHP Tipps 2006 3 13.10.2006 17:35
spalte rechts ausrichten, text aber trotzdem linksbündig Crypi HTML, Usability und Barrierefreiheit 5 14.09.2006 11:35
CSS - Design (clear - Problem) HTML, Usability und Barrierefreiheit 7 21.12.2005 14:55
Text aus der DB verteilen PHP Tipps 2007 17 16.11.2005 12:04
Links aus Datenbank überprüfen und wen defekt spalte updaten PHP Tipps 2005-2 2 05.09.2005 11:34
[Erledigt] Link PHP Tipps 2005-2 10 20.07.2005 21:28
[Erledigt] Reguläre Ausdrücke ersetzt Links im Text nicht Richtig PHP-Fortgeschrittene 6 06.06.2005 23:42
Links mit verschiedenen Inhalten und extra Fenster HTML, Usability und Barrierefreiheit 6 27.04.2005 22:23
[Erledigt] DIV´s wollen nicht wie ich das will :-) HTML, Usability und Barrierefreiheit 22 28.03.2005 18:36
Funktion schreibt Text links oben hin... PHP Tipps 2004 5 29.09.2004 14:09
txt-Datei erstellen d-81 PHP Tipps 2004 12 11.08.2004 20:31
CMS - Links in text dynamisch einfügen PHP-Fortgeschrittene 1 23.07.2004 17:37

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
texte über kühe, kartoffeltexte, links im text, www.kartoffeltext.de, text über kühe, html code spalte mit links, ebsenplanze, schweinefleisch spälte, linkwörter, linkwörter liste, html verweise links in extra spalte, php tabelle linke spalte text, html extra link spalte, spalte php lnik, verlink im text oder extra, linktext eine spalte, kartoffeltext, erbsenpflanzen, linkworter deutsch, schweine texte

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:10 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.