Szövegben szavak belinkelése adatbázisból. Hogy oldanád meg?
Üdv! Kicsit hosszú lesz, bocs.
Van két menüpont. Az egyik leírásokat, problémamegoldásokat tartalmaz (hosszabb szakmai szövegeket). A másik menüpont pedig egy fogalomtár ehhez. Azt szeretném, hogy amikor a leírásokat megnyitja valaki és olvassa a szakmai szöveget, akkor ha olyan szó szerepel benne, ami a fogalomtárban van, azt automatikusan linkként jelenítse meg, hogy rákattintva a fogalomtárba ugorva egyből láthassa a felhasználó, hogy az a szó mit jelent.
Ezt hogy oldanátok meg PHP-vel? Ilyet még nem csináltam. Meg tudom oldani, csak kicsit hosszúnak tűnik a kód, ami összeállt a fejembe és bízok benne, hátha van rövidebb megoldás is. Minden adatbázisban van a szakmai szöveg is és a fogalomtár szavai is.
Ja ez lemaradt:
Én úgy gondoltam, hogy egy tömbbe kiolvasom a fogalomtárat, majd beolvasom a szakmai szöveget egy változóba és for ciklussal végigpörgetem str_replace-szel kicserélgetve linkekre. De ez nekem kicsit futásidő igényesnek tűnik. Bár lehet hogy nem az. Érdekelne van-e valakinek ezzel kapcsolatban tapasztalata. Csináljam így, vagy más ötlet?
Én sem csináltam még ilyet, de az öteletedből kiidulva, jobb lenne egy olyan szkripted írnod, ami a leírásokban megkeresi az összes szót, ami benne van a fogalomtárban, majd linkként rakja vissza őket az adatbázisba. Így nem kellene mindig minden szót átnézzen...
Le se kellene fusson, csak új leírás hozzáadásakor (ekkor csak azt a leírást kellene átnézze), és a fogalomtár módosításakor... (Ekkor az összeset át kellene nézze, de ha heti egyszer átnézed, ezt is csak akkor, ha a fogalomtárba új szavak kerültek, vagy régi szót töröltél (ezt letárolhatod az adabázisban, vagy egy fájlban...), akkor gyorsabb lenne... És készíthetsz egy admin felületet, amibe bele foglalsz egy gombot is, ami ezt elvégzi, így manuálisan is elindíthatod...
Vagy pedig letárolsz egy verziószámot a fogalomtárban, és az összes leírásban, és megjelenítéskor frissíted a megjelenített leírást, akkor, ha a verziószám különbözik a mostanitól... Ez még jobb lenne, mivel a fogalomtárad módosítása után nem kellene az összes leírást frissítened, hanem azok csak akkor frissülnének, mikor megjelenítésre kerülnek, így azokat egyáltalán nem is frissítenéd, amiket senki sem olvas...
Lehet, hogy ez sem a legjobb ötlet, de lényegesen kevesebbet terhelné a szerver gépet...
15.03, ez jónak tűnik, lett is egy új gondolatom ebből: Én azzal fejleszteném tovább az ötletedet, hogy akkor futna le ez a szkript, amikor kijelentkeznek az admin felületről, hiszen akkor tuti szerkesztettek valamit, vagy töröltek, vagy új adat került bele stb, és így biztos, hogy mindig a legfrissebb verzió lenne jelen a honlapon.
Már csak arra kell rávenni az ügyfélt, hogy a kijelentkezés gombbal lépjen ki az admin felületről, de ez menni fog. :-) Jó az ötlet köszönöm! Így csinálom!
Többieknek is köszi!
15:03 vagyok, eszembe jutott még valami...
Gyorsabb lenne, ha csak a változásokat tárolnád le egy fájlban vagy adatbázisban, és akkor nem kellene az összes szót átnézni, csak azokat, amik változtak. Onnan kiolvasnád egy vektorba, majd átnéznéd a dolgokat... Utána kitörölhetnéd a változási listából az átdolgozott elemeket... Nem tudom mennyire férsz hozzá a szerverhez, de ha ezt be tudod állítani olyankorra, mikor a szerver pihen, akkor nagyon szépen működne, majd a munkát félbe is hagyhatja, amint a szerverre sokan vannak csatlakoztatva...
pl. fájlba tárolás
linkszó1hozzadtam
<a href='linkszavak.php?szo=linkszó1hozzadtam'>linkszó1hozzadtam</a>
<a href='linkszabak.php?torolok'>torolok</a>
torolok
Ez egy fájlban lenne, és párossával kiolvasva őket, csak a str_replace-t kellene használnod leírásokra...
(jobb, ha adatbázisban vannak, de így talán jobban érthető, amit akarok mondani :D )
Láthatod, hogy az első két sor hozzáad egy linket a "linkszó1hozzadtam" szóhoz, a második két sor pedig töröl egy linkszót, vagyis a "torolok" szót. (Persze, csak ha megvan a hozzá való PHP kód...)
Valamint a verziószámos megoldásomat ajánlanám még egyszer, mivel az egyenként frissítené a leírásokat, így kevesebb ideig lenne terhelt a szerver. (Összesen ugyanannyi ideig lenne terhelve, de nem ugyanakkor, vagyis a felhasználók nem fogják azt tapasztalni, hogy ekkor és ekkor (mikor az adminok dolgoznak, ki-be lépegetnek stb.) lassan működik az oldal, hanem azt, hogy az oldal gyorsan működik, de néha lelassul...) Valamint a sosem olvasott leírásokat nem frissítené, csak ha mégis megnézi őket valami.
A két dolognak a hátránya, hogy együtt elég nehéz megcsinálni őket, mivel ha a verziószámos dolgot csinálnád, akkor ahhoz, hogy a változásos is működjön, az összes változást le kellene tárold, és ezeket nem üríthetnéd ki... így a változási lista nagyon nagyra nőne...
Talán akkor mégis működhetnének együtt, ha kb. egy hónaponta az összes leírást frissítenéd a legújabbra, így ekkor ki is törölhetnéd a régi változási listákat, illetve a verziószámokat is lenullázhatnád...
El kell mondjam megfogott ez a gondod, én is szeretnék majd a jövőben ilyet csinálni, de még nem értek annyira a PHP-hoz... :)
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!