Jak vytvořit vyhledávací algoritmus pro několik slov v PHP z databáze. Jak vytvořit víceslovný vyhledávací algoritmus v PHP z databáze What man search php author id
V tomto článku se dozvíte, jak vytvořit vyhledávání obsahu databáze pro váš web. Tento algoritmus podporuje vyhledávání více klíčových slov. Algoritmus vybere řádky databázové tabulky, které obsahují všechna zadaná klíčová slova.
Tady je stůl zprávy, který obsahuje následující pole: id, titul A obsah:
Je vyžadováno vyhledávání v terénu obsah v naší databázi, která se skládá z následujících sloupců, viz příklad na obrázku výše. Pojďme k implementaci. Nejprve si vytvoříme stránku, na které otestujeme práci. Bude obsahovat formulář se vstupním polem pro klíčové slovo a tlačítkem „hledat“:
Výpis html kódu:
V atributech formuláře zadáváme cestu k handleru obsahujícímu algoritmus a metodu post.
K předání pole vybraných prvků používáme relaci.
session_start(); ?>
Za tímto účelem jej spustíme na samém začátku stránky.
Pro výstup použijeme funkci print_r().
print_r($_SESSION["id"]); ?>
Aby se výsledek po opětovném načtení stránky nezobrazil podruhé, použijte odstaveno zabijeme relaci.
unset($_SESSION["id"]); ?>
Vytvoříme handler hledat.php. Nejprve spusťte relaci a připojte se k databázi:
session_start(); $params = array ("host" =>"localhost", "dbname" => "ggwp", "user" => "ggwp", "password" => "123456",); $dsn = "mysql:host=($params["host"]);dbname=($params["dbname"])"; $db = nové PDO($dsn, $params["uživatel"], $params["heslo"]); $db->exec("názvy sad utf8"); ?>
Další informace o připojení k databázi prostřednictvím CHOP viz tento článek.
Činnost algoritmu je znázorněna na obrázku:
Rozeberme si výběr podle prvního slova, jako příklad použijeme vyhledávací dotaz „jak udělat web“:
$str = $_POST["string"]; $mass = explode(" ", $str); $count = count($mass); $sql = "SELECT id, content FROM news WHERE content LIKE "%".$mass."%""; $result = $db->dotaz($sql); $result->setFetchMode(PDO:: FETCH_ASSOC); $id_mass = pole(); $i=1; while ($row=$result->fetch()) ( $id_mass[$i] = $row["id"]; $i++; ) $id_count = count($id_mass); ?>
První ke změně $str získat řetězec z formuláře POŠTA. Tento řádek pomocí funkce rozdělíme na slova oddělená mezerou exodovat a spočítat počet slov. Provedeme dotaz, ve kterém zkontrolujeme přítomnost prvního slova ve sloupci obsah. Vytvoříme prázdné pole a zapíšeme do něj hodnoty získané jako výsledek výběru dotazu. Zapisujeme se $id_count počet přijatých položek.
for ($i=1; $i<=$count-1; $i++) { for ($j=1; $j<=$id_count; $j++) { $sql = "SELECT id, content FROM news WHERE id=".$id_mass[$j]." AND content LIKE "%".$mass[$i]."%""; $result = $db->dotaz($sql); $result->setFetchMode(PDO:: FETCH_ASSOC); $vysledek->execute(); $id_mass2 = pole(); $row=$result->fetch(); $temp = $řádek["id"]; if($temp!=$id_mass[$j]) ( $id_mass[$j] = -1; ) ) ?>
Tato část algoritmu funguje na principu „siftingu“. Řekněme, že v databázi je deset článků. Po vzorkování podle prvního slova dostaneme idčlánků, ve kterých je slovo "jak", takových článků bylo šest. Dále hledáme druhé slovo mezi těmito šesti články, čímž zužujeme rozsah hledání. Tato iterace ponechává čtyři články, které obsahují slova „jak“ a „dělat“. V poslední iteraci mezi zbývajícími čtyřmi články hledáme slovo „site“. Po tomto průchodu dostáváme id jeden jediný článek, který obsahuje všechna klíčová slova.
Počet iterací se rovná počtu slov ve vyhledávacím dotazu. Konečná přijatá částka id může být cokoliv, v závislosti na dotazu a obsahu databázové tabulky.
Pokud v důsledku provedení dotazu ve smyčce dostaneme id(proměnná tepl) rovný jedné z id předchozí ukázka ( id_mass), pak toto id necháme beze změny. V opačném případě prvek přiřadíme id_mass[j] hodnotu -1, čímž se vyloučí ze zpracování.
Po dokončení smyček získáme pole z id, ve kterém byla nalezena klíčová slova a -1. Dát uživateli jen to potřebné id, používáme cyklus, který kontroluje, aby byly vyřazeny všechny prvky rovné -1. Zbývající prvky předáme do pole relace:
$l=1; for($i=1; $i<$id_count+1; $i++) { if ($id_mass[$i] == -1) continue; else { $_SESSION["id"][$l] = $id_mass[$i]; $l++; } } header("Location: /index.php"); ?>
Funkce záhlaví slouží k přesměrování klienta na stránku vyhledávání.
V důsledku provedených akcí jsme obdrželi vyhledávací funkci pro tabulku databáze. S menšími úpravami lze tento algoritmus použít k načtení a prohledání libovolného pole v jakékoli databázi.
Viz také další články o MVC
Jednou z nejoblíbenějších a nezbytných funkcí na jakémkoli webu je vyhledávání, implementované pomocí speciálního formuláře. Tato funkce umožňuje návštěvníkům rychle najít na webu obsah, který je zajímá.
Dnes vám chceme říci, jak vyhledávat na webu pomocí speciálního formuláře, který bude dotazovat databázové tabulky a zobrazovat informace o aktuálních manažerech na webu. Dozvíte se, jak vytvořit databázovou tabulku, která bude obsahovat informace o aktuálním kádru.
Vyvíjejte vyhledávací formuláře pomocí PHP a seznamte se s SQL ( strukturovaný dotazovací jazyk) je speciální jazyk pro shromažďování, záznam a úpravu informací obsažených v databázích. Než začnete, doporučujeme vám stáhnout soubory projektu.
Co budete potřebovat
- Databázový nástroj MySQL.
- Lokální nebo vzdálený server s podporou PHP.
- Textový editor.
Vytvoření databáze
Pokud si nejste zcela jisti, že si s databází na svém hostingu poradíte, kontaktujte hostitele s žádostí o pokyny nebo pomoc. Po vytvoření databáze ji budete muset připojit, vytvořit tabulku a zapsat do ní potřebná data.
Nejoblíbenějším nástrojem pro správu MySQL je PHP My Admin , tento nástroj bude pro našeho dnešního průvodce stačit.
Vytvořte tabulku
Naše tabulka by měla být vytvořena v následujícím formátu:
název sloupce | datový typ | Délka | Null or Not Null | primární klíč? | Automatické zvýšení |
ID | INT | 1 | Nenulový | Ano | Ano |
Jméno | Varchar | 50 | Nenulový | Ne | Ne |
příjmení | Varchar | 50 | Nenulový | Ne | Ne |
E-mailem | Varchar | 50 | Nenulový | Ne | Ne |
Telefonní číslo | Varchar | 15 | Nenulový | Ne | Ne |
Databázová tabulka se skládá ze sloupců a řádků, stejně jako v Excelu. První sloupec umožňuje identifikovat data podle názvu. Dále následuje sloupec Datové typy (datový typ), který nám udává typ dat obsažených ve sloupci. V poli Délka (Length) udává maximální velikost paměti (úložiště) pro sloupec tabulky. Používáme proměnné, které poskytují větší flexibilitu. Jinými slovy, pokud je délka celého jména menší než 50 znaků, bude obsazena pouze část přiděleného prostoru.
A mezi personálními údaji nemohou být prázdné hodnoty ( null, prázdný). První řádek je zvýrazněn žlutě, protože sloupec ID je naším hlavním klíčem. Primární klíč v databázi zaručuje, že každý záznam bude jedinečný. Tento sloupec je také automaticky inkrementován, což znamená, že každému záznamu v naší databázi bude automaticky přiděleno jedinečné číslo.
Do tabulky zapisujeme zástupce zaměstnanců
Jakmile pochopíte tabulku, začněte ji plnit daty. 6 záznamů stačí k tomu, aby se postup zafixoval v mysli. Zde je můj vlastní příklad:
ID sloupce | Jméno | příjmení | E-mailem | Telefonní číslo |
2 | Ryane | komorník | [e-mail chráněný] | 417-854-8547 |
3 | Brent | Callahan | [e-mail chráněný] | 417-854-6587 |
Vývoj formy
Chcete-li vytvořit formulář pro vyhledávání na webu přes Google, otevřete jakýkoli vhodný textový editor. Doporučuji používat bezplatný PSPad. Můžete použít jakýkoli textový editor, který má zvýraznění syntaxe. To značně usnadní proces psaní a ladění PHP kódu. Když vytváříte stránku pro vyhledávací formulář, nezapomeňte ji uložit ve formátu .php, jinak nebude kód PHP správně analyzován. Jakmile dokument uložíte, zkopírujte do něj následující označení:
Podrobné vyhledávání kontaktů
Můžete vyhledávat podle jména nebo příjmení
Pokud se vyznáte v jazyce HTML, pak by vám mělo být vše jasné alespoň po úvodní značku formuláře. Uvnitř tohoto tagu je nejdůležitější prvek celého kódu – atribut action. Jako akci našeho formuláře jsme zadali název našeho souboru a poté použili řetězec dotazu „ jít”.
Kontrola kritérií
Když uživatel zadá jméno nebo příjmení a poté klikne na tlačítko Odeslat, formulář odešle data sám sobě a připojí řetězec dotazu „ jít". V tomto okamžiku kontrolujeme přítomnost řetězce dotazu go. Pokud je výsledek kladný, zobrazíme výsledky vyhledávání.
Před zobrazením požadovaných výsledků musíme znovu zkontrolovat: (1) byl formulář odeslán, (2) obsahoval řetězec dotazu hodnotu go, (3) byl hledaný výraz zadán malými nebo velkými písmeny? Pokud žádná z kontrol nedává pozitivní výsledek ( skutečný), nejsme povinni podnikat žádné kroky.
Nejprve přidáme za uzavírací značku malý blok PHP kódu pro vyhledávání na webu.: