Lexikon Wörter erkennung |
andy1983
Otto-Normal-Poster Threadstarter
Beiträge: 62 |
Hi, habe ein relative simples Lexikon, DB mit id, begriff, beschreibung.
nun will ich beim ausgeben einer beschreibung prüfen on ein Wort in der beschreibung als Begriff existiert, wenn ja einen link zur erklärung dieses Begriffes erzeugen.
Beispiel:
Begriff: Ulm
Beschreibung: Ulm liebt bei Stuttgart
Wenn nun der BEgriff Stuttgart als Begriff in der Tabelle hinterlegt ist sollte ein Link zu Stuttgart kommen. Ein Link zu Ulm sollte aber net kommen, wäre ja sinnlos.
Hoffe ihr könnt mir helfen.
MfG
andy
|
 Profil
Editieren
Zitieren
|
Can
Halbgott
Beiträge: 1324 |
Dann würd ich in der Tabelle schreiben (hab jetzt mal aus liebt liegt gemacht ):
Beschreibung: Ulm liegt bei #Stuttgart#
Und bei der Ausgabe schaust du, ob es 2 # gibt. Wenn ja: Wort extrahieren und in der DB suchen.
Can
---
" S-púrlawits'chkâ A-ngáse gûrewüdíx" - Zaphrot Bibelprox
|
 Profil
E-Mail
Editieren
Zitieren
|
andy1983
Otto-Normal-Poster Threadstarter
Beiträge: 62 |
naja aber dann muss ich (das sind 10 Leute die sich net auskennen) beim eintragen immer alles von Hand machen. und wenn später mal Begriffe hinzukommen, müssen die anderen eventuell bearbeitet werden.
|
 Profil
Editieren
Zitieren
|
Can
Halbgott
Beiträge: 1324 |
Hm...dann musst du halt jedes drin vorkommende Wort in der DB suchen.
---
"S-púrlawits'chkâ A-ngáse gûrewüdíx" - Zaphrot Bibelprox
|
 Profil
E-Mail
Editieren
Zitieren
|
andy1983
Otto-Normal-Poster Threadstarter
Beiträge: 62 |
Die IDee mit dem Zeichen ist an sich ganz gut, nur von Hand einbauen geht scheif, da wette ich was drauf.
Was wenn bei jedem neuen Begriff in seiner BEschreibung die Zeichen Automatisch gesetzt werden, und dann noch in den anderen Beschereibungen, in denen der Begriff vorkommt??? Löschen werden wir Begriffe net denke ich.
das ist zwar ein großer Rechen aufwand, aber wird ja nur beim einragen einmal gemacht.
Meinst sowas lässt sich machen ?
|
 Profil
Editieren
Zitieren
|
Can
Halbgott
Beiträge: 1324 |
Ist doch einfacher, wenn das bei der Anzeige durchsucht wird; geht ja blitzschnell.
---
"S-púrlawits'chkâ A-ngáse gûrewüdíx" - Zaphrot Bibelprox
|
 Profil
E-Mail
Editieren
Zitieren
|
Andreas S
Otto-Normal-Poster
Beiträge: 81 |
Ich bin mir nicht 100% sicher ob ich deine Frage richtig verstanden habe, aber versuchs mal so:
1:
2:
3:
4:
5:
6:
7:
8:
9: |
function lexikon($text){
$result = mysql_query("SELECT id, begriff FROM tabelle");
while ($row = mysql_fetch_assoc($result)) {
$text = preg_replace('#'.preg_quote($row['begriff']).'#is', "" . $row['begriff'] . "", $text);
}
return ($text);
}
|
1. Der gesamte Inhalt der Tabelle wird mit while() und mysql_fetch_assoc() durchlaufen.
2. In der Schleife selbst wird dein text ($text) mit preg_replace() durchsucht ob eines der zu suchenden Wörter vorhanden ist. Ist das der Fall, wird eben dieses Wort mit der id verlinkt.
3. return() gibt deinen Text dann wieder zurück.
Diese Nachricht wurde geändert von: Andreas S |
 Profil
Editieren
Zitieren
|
andy1983
Otto-Normal-Poster Threadstarter
Beiträge: 62 |
das mit den "#" Zeichen fällt da ja dann weg oder? und die beschreibung musst du auch abfragen, denke ich zumindest
scheint aber der richtige Ansatzt zu sein Thx
|
 Profil
Editieren
Zitieren
|
Andreas S
Otto-Normal-Poster
Beiträge: 81 |
Die Beschreibung brauchst du noch gar nicht (erst bei der Anzeige der Beschreibung und des Begriffes -- wenn ich das bis jetzt richtig verstanden habe), also brauchen wir dieses Feld noch nicht selektieren.
das mit den "#" Zeichen fällt da ja dann weg oder? |
Ja.
Diese Nachricht wurde geändert von: Andreas S |
 Profil
Editieren
Zitieren
|
andy1983
Otto-Normal-Poster Threadstarter
Beiträge: 62 |
irgend wie versteh ich langsam nimmer was dein script machen soll, sorry kann auch an der Uhrzeit liegen
|
 Profil
Editieren
Zitieren
|
andy1983
Otto-Normal-Poster Threadstarter
Beiträge: 62 |
irgend wie versteh ich langsam nimmer was dein script machen soll, sorry kann auch an der Uhrzeit liegen
|
 Profil
Editieren
Zitieren
|
Andreas S
Otto-Normal-Poster
Beiträge: 81 |
Wie ich schon oben gesagt habe, ich bin mir nicht 100% sicher ob ich deine Frage richtig verstehe. Aber Ich hab mir deine Beschreibung noch einmal durchgelesen und das Skript umgeschrieben und komplettiert;
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: | '".addslashes($_GET['id'])."'");
while ($row2 = mysql_fetch_assoc($query)) {
$beschreibung = preg_replace('#'.preg_quote($row2['begriff']).'#is', "" . $row2['begriff'] . "", $row['beschreibung']);
}
echo "Begriff: " . $row['begriff'] . " \n";
echo "Beschreibung: " . nl2br($beschreibung);
}
while ($row = mysql_fetch_assoc($query));
} else {
echo "Dieser Eintrag existiert nicht!";
exit;
}
?> |
Speicher den Code als index.php ab.
Der gewünschte Begriff und dieBeschreibung wird anhand der ID abgerufen, also, z.b: "index.php?id=1", aber ich denke das weisst du schon selbst.
1. Verbindung zu Mysql und selektierung deiner DB.
2. Abfrage des gewünschten Eintrages anhand der ID. Wenn kein Eintrag existiert; Fehlermeldung ausgeben.
3. Abfrage aller Einträge ausser der aktuellen ID.
4. Mit while() und mysql_fetch_assoc() wird das Ergebnis durchlaufen.
5. In der Schleife selbst wird die Beschreibung mit preg_replace() durchsucht ob eines der zu suchenden Begriffe vorhanden ist. Ist das der Fall, wird eben dieser Begriff mit der id verlinkt.
6. Ausgabe von Begriff und Beschreibung.
So, Ich hoffe, dass das eher deinen Wünschen entspricht, wenn nicht, einfach nochmal nachfragen.
Diese Nachricht wurde geändert von: Andreas S |
 Profil
Editieren
Zitieren
|
Bitburki
Pixelschubser
Beiträge: 2 |
Das # Zeichen ist immer noch drin... das braucht man dann doch gar nicht mehr, oder doch?
Ich versteh auch nicht warum die ID per $_GET['id'] in Zeile 14 und 17 geholt wird. Woher soll die kommen?
Er soll doch über alle Einträge im lexikon drüberschaun.
Hab's schon mit ein paar Anpassungen versucht, aber ich kriegs einfach nicht auf die Reihe.
Hab ebenfalls eine Tabelle mit "ID, Begriff, Definition" und will in der Definition die Wörter mit begriff zum jeweiligen Begriff verlinken, die ich schon in der Datenbank erfasst habe
---
Das Leben ist ein scheiß Spiel - aber die Grafik is verdammt geil!!!
|
 Profil
Website
Editieren
Zitieren
|
bastir
Mausakrobat
Beiträge: 150 |
Ich würde das dann so machen, daß ich erst alle Begriffe (und deren ID's) aus der Datenbank hole:
1:
2:
3:
4:
5:
6:
7:
8: | $qSQL = "SELECT id, begriff FROM lexikon";
$rSQL = MYSQL_QUERY($qSQL);
while ($line=MYSQL_FETCH_ARRAY($rSQL))
{
$search[]="/$line[begriff] /";
$replace[]='$line[begriff] ';
}
|
Nun hast du halt ein array mit den Begriffen ($search[0-x]) und den dazugehörigen links ($replace[0-x])
Nun kannst du bei der Ausgabe einer Beschreibung (bei mir jetzt mal $expl genannt) doch
einfach mit preg_replace() die Begriffe ersetzen lassen:
$expl = preg_replace($search, $replace, $expl);
damit sollten dann die gesuchten Begriffe durch einen Link ersetzt sein!
---
Man kann nicht alles wissen, man muß nur wissen wo es steht!
Diese Nachricht wurde geändert von: bastir |
 Profil
Website
Editieren
Zitieren
|
Bitburki
Pixelschubser
Beiträge: 2 |
vielen Dank, das wars ... Problem gelöst ))
---
Das Leben ist ein scheiß Spiel - aber die Grafik is verdammt geil!!!
|
 Profil
Website
Editieren
Zitieren
|