Toon posts:

[php] automatisch links zoeken/maken

Pagina: 1
Acties:
  • 36 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik heb een vraag, kweet niet of het mogelijk is namelijk.

Ik heb een database waarin veel texten staan, het is een begrippenlijst. Titel = 1 woord en dan staat er een uitleg bij. Nu wil ik, als het mogelijk is:

Dat als er bijvoorbeeld in de tekst staat "bla bla blaat LAN bla bla" en LAN staat ook in de database als titel, dat hij automatisch een link maarkt naar de pagina waar LAN staat uitgelegd.

Hoop dat ik het duidelijk genoeg heb uitgelegd. Is dit mogelijk? Zoja, hoe?

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:33
Ik snap niet direct de bedoeling....

Je hebt een databank met teksten in... 1 veld in een tabel is een woord (bv LAN) en daarbij heb je dan nog een ander veld 'Omschrijving' ofzo?

Wat wil je dan doen? Alle begrippen op 1 pagina zetten en daar een link van maken naar een andere pagina op uw site waar je de uitleg over vind?

Gewoon alle 'woorden' op een pagina zetten, met tags rond en ervoor zorgen dat de PK ofzo ook per woord opgeslagen wordt. Als er dan op die link geklikt wordt ga je naar een andere pagina (en stuur je de pk mee).
Op die pagina haal je dan de omschrijving op van het record dat de doorgestuurde pk heeft oid.

https://fgheysels.github.io/


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

queryen met where text="%LAN%"

dan krijg je een record trug met die tekst
vrij basic
overigens: http://gathering.tweakers.net/forum/find/poster/59546 snie goed......

Doet iets met Cloud (MS/IBM)


  • Postman
  • Registratie: Februari 2000
  • Laatst online: 15-08 20:11
Ik denk dat hij bedoelt dat hij een stuk tekst heeft waarin woorden kunnen staan die ook weer in zijn database zitten. Als zo'n woord dus in de tekst zit moet er een link komen.
Mijn idee hoe het zou moeten is dus per woord van de tekst kijken of het in de database zit. Zo ja, maak link (eenmaal is genoeg); zo nee, doe niks.
just my 2 cents

Verwijderd

Topicstarter
FlamerX schreef op 19 september 2002 @ 11:57:
Ik denk dat hij bedoelt dat hij een stuk tekst heeft waarin woorden kunnen staan die ook weer in zijn database zitten. Als zo'n woord dus in de tekst zit moet er een link komen.
Mijn idee hoe het zou moeten is dus per woord van de tekst kijken of het in de database zit. Zo ja, maak link (eenmaal is genoeg); zo nee, doe niks.
just my 2 cents
Ja precies dat wil ik. Maar hoe doe ik dat? Is het niet enorm zwaar voor de databaseserver?

  • kroeske
  • Registratie: Mei 2000
  • Laatst online: 25-03 11:35
Verwijderd schreef op 19 september 2002 @ 12:02:
[...]
Ja precies dat wil ik. Maar hoe doe ik dat? Is het niet enorm zwaar voor de databaseserver?
ik zou als ik jou was 1x een query doen waarmee je alle woorden uit je db haalt en vervolgens je text door een loopje halen waarmee je die worden probeerd te matchen en op die manier er links van te maken..

  • killercow
  • Registratie: Maart 2000
  • Laatst online: 07-08 19:18

killercow

eth0

ik heb een script wat precies dat doet, ik zal even kijken of je er iets mee kan.
edit:

hmm nee toch niet helemaal, mijn script zou ontzettend zwaar worden angezien je een enorme overhead krijgt. omdat het voor iets anders was ontwikkeld.

openkat.nl al gezien?


Verwijderd

Topicstarter
killercow schreef op 19 september 2002 @ 12:16:
ik heb een script wat precies dat doet, ik zal even kijken of je er iets mee kan.
Als je dat zou kunnen posten zou dat super zijn! Ik pas het zelf dan wel zo aan dat het werkt met mijn script.

  • killercow
  • Registratie: Maart 2000
  • Laatst online: 07-08 19:18

killercow

eth0

je wilt neem ik aan automatish help links maken naar bepaalde pagina's?
je kunt dan bijvoorbeeld met een str_replace en een array uit een dbase alle woorden stuk voor stuk replacen met een link.

openkat.nl al gezien?


Verwijderd

Topicstarter
Ja dat wil ik idd. Thx 4 the tip.

  • killercow
  • Registratie: Maart 2000
  • Laatst online: 07-08 19:18

killercow

eth0

kijk eens :P
hij checkt tevens of het woord omringt is door spaties en of hij niet in een tag staat zodat je tags heel blijven. ik moet alleen nog een check inbouwen zodat hij woorden die in een <a href></a> staan niet replaced want dan krijg je <a href=url><a href=help.php?word=text>text</a></a> en dat kan niet goed zijn :P
als jij zoiets zou kunnen maken (of iemand anders) zou dat geweldig zijn

deze laat btw hoofdletters enzo ook intact.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
   $words=mysql_query("select word, id from helpwords");
    // get array of words
    function link($word,$id){
            return "<a href=\"help.php?word=$word&id=$id\" target=_new>$word</a>";
    }

    if(mysql_num_rows($words)>0){
            while(list($word, $id)=mysql_fetch_array($words)){
            $string=preg_replace("|(\b$word\b)(?![^<]*>)|ie","link($1,$id)",$string);
        }
        
    } 
echo $string;

openkat.nl al gezien?


Verwijderd

Topicstarter
function link($word,$id){

$word is het woord waar opgezocht wordt in de database toch?

Verwijderd

Topicstarter
Zou iemand mij even kunnen helpen met mijn bestaande script?
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?
include"header.php";
if($page=="begrippen") {
$query = mysql_query("SELECT * FROM begrippen WHERE letter='$letter' order by titel ASC"); 
    while ($r = mysql_fetch_array($query)) 

        { 
        $id  = $r["id"];  
        $letter  = $r["letter"]; 
    $titel  = stripslashes(make_clickable(ubb($r["titel"]))); 
    $info  = stripslashes(make_clickable(ubb($r["info"]))); 
echo"<tr><td width='80%' class='main'><a name=\"#$id\"><b>$titel</b></a></td>";
echo"<tr><td colspan='2' width='100%' class='main' bgColor='#E7EEF5'>$info</td></tr>";
} 
}
?>


Hiermee krijg ik dus alle begrippen (titel+uitleg) te zien die met een bepaalde letter beginnen. Nu is het dus de bedoeling dat als er in de _uitleg_ een woord voorkomt dat ergens als _titel_ in de database staat. Dat hij daar automatisch een link naar maakt.

Verwijderd

1) Doe een select op alle begrippen
2) Splits bij het displayen van 'uitleg' de tekst in allemaal losse woorden, en doe die in een array.
3) Loop door de array met woorden uit de tekst.
4) Loop daarbinnen door alle begrippen
5) Is er een match? Maak een link!

Klaar!

Overigens is dit redelijk intensief ... een betere oplossing is om 2 versies van de uitleg in de database op te slaan:
a) oorspronkelijke tekst
b) tekst met links voor begrippen

Als je een nieuwe uitleg plaatst moet voor ieder begrip b opnieuw gegenereerd worden. Als een uitleg wijzigt moet alleen b van het gewijzigde begrip opnieuw gegenereerd worden. Voor iedere view hoef je dan alleen b te laten zien.

Enjoy :)

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

zie MrX: en wij gaan je script echt niet herschrijven voor je

Doet iets met Cloud (MS/IBM)

Pagina: 1

Dit topic is gesloten.