Végrehajtása keresés a honlapon keresztül php
Ön itt van: Home - PHP - PHP alapjai - Végrehajtási kereső oldal a PHP

Én már többször kérte, hogy írjon egy cikket arról, hogyan hajtsák végre a keresés az oldalon keresztül PHP. A feladat nem könnyű, azt is mondhatjuk, - nagyon nehéz, mert van egy hatalmas mennyiségű árnyalatok és az akadályokat. Ebben a cikkben fogom keresni algoritmus az oldalon.
Tegyük fel, hogy a honlap a különböző anyagok (cikkek, hírek, jegyzetek és egyéb dolgokat). Minden dolog az adatbázisból. És a mi feladatunk -, hogy megvalósítsa a keresés az oldalon. A legegyszerűbb algoritmus a következő:
Sokan azt fogja mondani, hogy nincs semmi bonyolult itt. És ott lesz részben igaza van, azonban lehetővé teszi, folytassa példát keresés: „keresi a szöveget.” Felmerül a kérdés: „Mi, valójában keres?”. Akár keres egy pontos előfordulása szöveg „ez a szöveg keres.” Vagy talán a szöveg keresett, ahol a három szó, de lehet, hogy követni nem egymás után. Vagy talán a szöveg keresett, ahol legalább az egyik ezek a szavak.
És itt a probléma sokkal bonyolultabb. Tudod, hogy egy komplex rendszer szintaxis (például keresők), például, kerestek a pontos bevitellel, ha a kérés kerültek idézőjelbe. És tudod adni a lehetőséget a felhasználóknak, hogy hogyan akarnak végezzen egy keresést (a rádió-gombok). Szóval, nem tudom az oldalon. Ezért, az előző példában adunk még egy pont: az összetétele SQL-lekérdezés. Itt egy példa az SQL-lekérdezést, amikor szükség van, hogy húzza ki az összes felhasznált anyag, amelyben van legalább egy szót a lekérdezés „keresi a szöveg”:
SELECT * FROM cikket, amennyiben ( `text_article` LIKE "% keres% "OR` text_article` LIKE "% ez%" OR` text_article` LIKE" % szöveges%")
Ennek megfelelően a keresési scriptet, meg kell generálni az SQL-szerű lekérdezéseket. Levél egy adatbázis, kap egy választ, és megjeleníti azt. Ez még bonyolultabb, ha megjeleníti rekordok relevanciája, mert nehéz megmondani, hogy egyszerre kell lényegesnek: 3 pontos előfordulását lekérdezés, vagy 10 előfordulása a választ. Saját hely preferencia mindig adott pontos vhozhdeniyai, de ezúttal már elég ellentmondásos. Persze, nehéz, és ha nem az első alkalom, hogy hány órát töltenek pontosan. Remélem, hogy az algoritmus végrehajtása keresés a honlapon keresztül PHP segít.
Michael, mikor adja meg a kérelmet angol nyelven minden munkájában, amint be karaktereket magyar felugró hiba Fatal error: Call to tag funkció fetch_assoc () egy nem-objektum X: \ home \ greatsoftware.ru \ www \ fsearch.php on 21. sor, megpróbáltam „SET NAMES cp1251” nem működik, kérem, mondja meg, hogy mit tehetek.
Újrakódolás összes bemenő adatokat a megfelelő kódot, akkor UTF-8 helyett CP1251.
Michael, hello! Van egy kérdésem. Például, ez a szöveg az adatbázisban (azt szeretné, hogy a szöveget). $ Text = 'jól'; SELECT * FROM cikket, amennyiben text_article LIKE „% $ text%” Ez a lekérdezés visszatér hozzánk, hogy egy sor minden cikket, ahol a szöveg tartalmaz egy „jól”. És hogyan lehet egy pontos egyezés lekérdezés. Azaz, hogy a kérés lenne nekünk semmit vissza.
Távolítsuk el a meta karakterek %% a kérést, akkor lesz pontos egyezés.
így nem talál semmit. Úgy értem, hogy találta volna a szó teljes. Például az adatbázisban található felirat (ez a szöveg azt akarja, hogy), amikor belép egy „jól” nem találtak semmit, és ha hozza a „helyes” megtalálható.
Akkor nézd meg a reguláris kifejezéseket. Próbáld meg ezt a kérést, akkor kell keresni egy adott szót „szó”: SELECT * FROM tábla WHERE szó REGEXP „[[:<:]]word[[:>:]] '
Szia, azonnali, kérem, és hogyan térjen vissza a keresési eredmények között? Például a felhasználó nem haladó keresési 5 paramétert, amelyeket továbbított POST. Ezután számos eredményt kaptunk. A felhasználó például egyikük kinyitotta, olvasni, majd vissza akart menni a többi a nyugtát. Kiderül, hogy szükség van, hogy ismét közvetíteni az 5 paraméterek keresni vagy valamilyen szál ravasz trükk PHP könnyebb? Köszönjük!
Igen, ez nem túl kényelmes dolgozni. De ha átmennek a GET, a felhasználó visszatér ugyanazt az eredményt, minden gond nélkül.
Helló, Michael! Kérem, mondja meg, hogyan kell végrehajtani a keresést több táblák az adatbázisban. Köszönöm előre)
Helló Michael! Kérem, mondja meg, hogyan kell végrehajtani a keresést a téma kapcsolási a legördülő listából. Az oldalon épül a motor a tanulságokat. Például van egy szakasz 1. és 2. Lyrics szakasz megállapítja az összes tárolt adatok az adatbázisban 2 asztal. Előfordul, hogy az első és a második tábla egy és ugyanazt a dalt, csak egy szöveget a többi hang. A hagyományos keresés, ha beírja a nevét, a dal és a keresési eredmények megjelennek az első dalszöveg, majd újra megjeleníti a szöveget, majd az eredmény a jegyzeteket. Ha egy adatbázis tábla jegyzetekkel változtatni a nevét, a dal egy másik, majd a keresési eredmény kiváló. Ezért gondoltam, hogy keresni részén, csak nem tudom, hogyan. Kérem, segítsen, vagy mondja meg, hogyan.
Telepítse a kiválasztása, ahol a felhasználó úgy dönt, egy fórumon, hogy keresni. Alapján a mintavételi kell tenni a megfelelő táblázatban.
Tud írjon egy SQL lekérdezést, hogy lesz hallható az adatbázis alapján a felhasználó kiválaszt keresés rész? A main.tpl tettem ilyet
Csak nem tudom, hogyan kell kötni ezt a választást, hogy az adatbázis, bocs újszülött =)Meg kell írni pontosan ugyanaz, mint a keresett cikket, de az asztal, ahonnan a mintát úgy kell kiválasztani keresztül, ha.
valami, amit nem megy! És ha nem kemény kód (egy mintát az adatbázis, hogy megadta, és megjeleníti az eredményeket a képernyőn)?
Mikhail. Köszönöm szépen a cikket. Én nagyon, nagyon óvatosan, hogy prochol.I tudtam, hogy megpróbálja # 14))) Persze 3 napot töltöttem ebben. Másrészt, a keresés nagyszerű lett. Köszönöm szépen az ilyen egyedi cikket.
Nekem van egy probléma van egy lista a könyvtárakat, hogy meg vannak jelölve az adatbázisban területén, vesszővel elválasztva, és el kell távolítani azokat a rekordokat, ahol jön a szó jelölést Katale minden könyvtárak felírt get kérés, vesszővel elválasztva, mint php azt mutatják, hogy az ilyen teszt és webcímtárba vesszővel elválasztva két különböző szavakat, majd a keresési keres, ahol azt a teszt szó. Itt a forráskód: function search ($ szó) <$words = htmlspecialchars($words); if($words === "") return false; $query_search = ""; $array_words = explode(",",$words); foreach($array_words as $key=>$ Érték)
A kutatás számára, amely le van írva a példát tartalmaz az adatbázis méret: MyISAM vagy InnoDB?