Aktualizované 30. apríla 2016
Ukážem vám, ako vytvoriť jednoduché vyhľadávanie pomocou PHP a MySQL. Naučíte sa:
- Ako používať metódy GET a POST
- Pripojte sa k databáze
- Komunikujte s databázou
- Nájdite zodpovedajúce položky databázy s daným slovom alebo frázou
- Zobraziť výsledky
Príprava
Mali by ste mať nainštalované a spustené samozrejme Apache, MySQL a PHP (môžete použiť pre rôzne platformy alebo WAMP pre Windows, MAMP pre mac) alebo webový server / hosting, ktorý podporuje databázy PHP a MySQL.
Vytvorme databázu, tabuľku a naplňte ju niekoľkými položkami, ktoré môžeme použiť na vyhľadávanie:
- Prejdite na stránku phpMyAdmin, ak máte na svojom počítači server, môžete k nemu pristupovať na adrese http: // localhost / phpmyadmin /
- Vytvorte databázu, nazval som moju tutorial_search
- Vytvorenie tabuľky Použil som 3 polia, ktoré som nazval moje články.
- Konfigurácia pre 1. pole. Meno: id, typ: INT, kontrola AUTO_INCREMENT, index: primárny
INT znamená, že je to celé číslo
AUTO_INCREMENT znamená, že nové položky budú mať iné (vyššie) číslo ako predchádzajúce
Index: primárny znamená, že ide o jedinečný kľúč používaný na identifikáciu riadku
- 2. pole: Názov: názov, typ: VARCHAR, dĺžka: 225
VARCHAR znamená reťazec textu, maximálne 225 znakov (je potrebné zadať maximálnu dĺžku), použite ho pre tituly, mená, adresy
dĺžka znamená, že nemôže byť dlhšia ako 225 znakov (ak chcete, môžete ju nastaviť na nižšie číslo)
- 3. pole: Meno: text, typ: TEXT
TEXT znamená, že je to „dlhý reťazec, nie je potrebné zadať dĺžku, použite ho pre dlhý text.
- Vyplňte tabuľku niekoľkými náhodnými článkami (nájdete ich na spravodajských weboch, napr.: CNN, BBC atď.). Kliknite na vložiť v hornom menu a skopírujte text do konkrétnych polí. Pole „id“ nechajte prázdne. Vložte aspoň tri.
Malo by to vyzerať asi takto:
- Vytvorte priečinok v adresári servera a dva súbory: index.php a search.php (v skutočnosti to všetko môžeme urobiť iba s jedným súborom, ale použite dva, bude to jednoduchšie)
- Vyplňte ich predvolenými značkami html, doctype, head atď.
- Vytvorte formulár s vyhľadávacím poľom a tlačidlom Odoslať v index.php, môžete použiť metódu GET alebo POST, akciu nastavte na search.php. Ako názov textového poľa som použil "dotaz".
GET – znamená, že vaše informácie budú uložené na adrese URL (http: //localhost/tutorial_search/search.php? Dopyt = váš dotaz)
POST – znamená, že vaše informácie sa nezobrazia, používajú sa na heslá, súkromné informácie, oveľa bezpečnejšie ako GET
Dobre, začnime s php.
- Otvorte search.php
- Spustite php ()
- Pripojte sa k databáze (prečítajte si komentáre v nasledujúcom kóde)
< to >$ dotaz = mysql_real_escape_string ($ dotaz); // zabezpečí, aby nikto nepoužil injekciu SQL $ raw_results = mysql_query ("SELECT * FROM Articles WHERE (` title` LIKE "%". $ query. "%") ALEBO (`text` LIKE"% ". $ query."% ")") alebo zomrieť (mysql_error ()); // * znamená, že vyberie všetky polia, môžete tiež napísať: `id`,` title`, `text` // články je názov našej tabuľky //"% $ dotaz% "je to, čo hľadáme" ,% znamená čokoľvek, napríklad ak $ dotaz je Ahoj // bude sa zhodovať s "ahoj", "Ahoj človeče", "gogohello", ak chcete presnú zhodu, použite `title` =" $ dotaz "// alebo ak chcete na zhodu iba celého slova, takže „gogohello“ je mimo, použite „% $ dotaz%“ ... ALEBO ... "$ dotaz%" ... ALEBO ... "% $ dotaz" if (mysql_num_rows ($ raw_results)>
". $ výsledky [" názov "]."
". $ výsledky [" text "].""; // uverejňuje výsledky získané z databázy (názov a text) môžete tiež zobraziť id ($ výsledky [" id "]))) inak (// ak neexistujú žiadne zodpovedajúce riadky, urobte nasledujúce echo" Žiadne výsledky ";)) else (// ak je dĺžka dopytu menšia ako minimálna ozvena "Minimálna dĺžka je". $ min_length;)?>Hotový!
Teraz to funguje. Skúšajte rôzne slová, variácie, upravujte kód, experimentujte. "Pridávam úplný kód oboch súborov v prípade, že si myslíte, že ste" niečo vynechali. Neváhajte sa opýtať alebo požiadať o návody.
index.php
search.php
". $ výsledky [" názov "]."
". $ výsledky [" text "].""; // uverejňuje výsledky získané z databázy (názov a text) môžete tiež zobraziť id ($ výsledky [" id "]))) inak (// ak neexistujú žiadne zodpovedajúce riadky, urobte nasledujúce echo" Žiadne výsledky ";)) else (// ak je dĺžka dopytu menšia ako minimálna ozvena "Minimálna dĺžka je". $ min_length;)?>JavaScript je vo vašom prehliadači zablokovaný. Povoľte JavaScript, aby stránka fungovala!
Práca s formulármi
HTML formuláre sa používajú na prenos údajov od používateľa webovej stránky na server. Na prácu s formulármi v PHP existuje množstvo špeciálnych nástrojov.
Preddefinované premenné
PHP má množstvo preddefinovaných premenných, ktoré sa nemenia, keď všetky aplikácie bežia v určitom prostredí. Nazývajú sa tiež premenné prostredia alebo premenné prostredia. Odrážajú nastavenia prostredia webového servera Apache, ako aj informácie o požiadavkách pre daný prehliadač. Je možné získať hodnoty adresy URL, reťazca dopytu a ďalších prvkov požiadavky HTTP.
Všetky preddefinované premenné sú obsiahnuté v asociatívnom poli $ GLOBALS. Okrem premenných prostredia toto pole obsahuje aj globálne premenné definované v programe.
Príklad 1
"; ?>
V dôsledku toho sa na obrazovke zobrazí zoznam všetkých globálnych premenných vrátane premenných prostredia. Tie najčastejšie používané:
Variabilné | Popis | Obsah |
---|---|---|
$ _SERVER ["HTTP_USER_AGENT"] | Meno klienta a verzia | Mozilla / 5.0 (kompatibilný; Googlebot / 2.1; + http: //www.google.com/bot.html) |
$ _SERVER ["REMOTE_ADDR"] | IP adresa | 144.76.78.4 |
getenv ("HTTP_X_FORWARDED_FOR") | Interná IP adresa klienta | |
$ _SERVER ["REQUEST_METHOD"] | Spôsob požiadavky (GET alebo POST) | GET |
$ _SERVER ["QUERY_STRING"] | Pri požiadavke GET sa kódované údaje odovzdajú spolu s adresou URL | |
$ _SERVER ["REQUEST_URL"] | Úplná adresa klienta vrátane reťazca dotazu | |
$ _SERVER ["HTTP_REFERER"] | Adresa stránky, z ktorej bola žiadosť podaná | |
$ _SERVER ["PHP_SELF"] | Cesta k spustiteľnému programu | /index.php |
$ _SERVER ["SERVER_NAME"] | doména | stránky |
$ _SERVER ["REQUEST_URI"] | spôsob | /php/php_form.php |
Spracovanie používateľského vstupu
Program na spracovanie vstupu PHP možno oddeliť od textu HTML obsahujúceho vstupné formuláre alebo ho možno umiestniť na jednu stránku.
Príklad 2
Nie je tu žiadne tlačidlo prenosu dát, pretože jednopoľový formulár sa odošle automaticky po stlačení klávesu
Pri spracovaní položky s výberom s viacerými hodnotami musíte k názvu položky pridať pár hranatých zátvoriek, aby ste získali prístup ku všetkým vybratým hodnotám. Ak chcete vybrať viacero položiek, podržte stlačený kláves Ctrl.
Príklad 3.1
VÝSLEDOK PRÍKLADU 3.1:
Príklad 3.2
- "; foreach (položka $ ako hodnota $) echo"
- $ hodnota "; echo"
Príklad 4. Príjem hodnôt zo začiarkavacích políčok
$ v) (ak ($ v) echo „Poznáte programovací jazyk $ k!"; else echo" Nepoznáte programovací jazyk $ k.
"; } } ?>
VÝSLEDOK PRÍKLADU 4:
Príklad 5
"; ?>Formuláre je možné spracovávať bez obáv o skutočné názvy polí.
Na tento účel môžete použiť (v závislosti od spôsobu prenosu) asociatívne pole $ HTTP_GET_VARS alebo $ HTTP_POST_VARS. Tieto polia obsahujú páry názov / hodnota pre každý prvok odoslaného formulára. Ak je vám to jedno, môžete použiť asociatívne pole $ _REQUEST.
Príklad 6
"; ?>
Príklad 7. Spracovanie kliknutia na tlačidlo pomocou operátora „@“.
Pomocou funkcie hlavičky () odoslaním hlavičky „Umiestnenie“ do prehliadača môžete používateľa presmerovať na novú stránku.
Napríklad:
header("Location: ex2.php"); ?>
Prenos súboru na server. Nahrajte súbor. Nahrať
PHP umožňuje prenášať súbory na server. HTML formulár na odoslanie súboru musí obsahovať argument enctype = "multipart / form-data".
Okrem toho musí byť pred poľom na kopírovanie súboru vo formulári skryté pole s názvom max_file_size. Toto skryté pole by malo obsahovať maximálnu veľkosť prenášaného súboru (zvyčajne nie viac ako 2 MB).
Samotné pole prenosu súboru je bežný prvok INPUT s argumentom type = "file".
Napríklad:
Po nahratí súboru na server je jedinečne pomenovaný a uložený v dočasnom adresári. Úplná cesta k súboru sa zapíše do globálnej premennej, ktorej názov je zhodný s názvom poľa na prenos tohto súboru. Okrem toho PHP ukladá niektoré ďalšie informácie o prenášanom súbore do iných globálnych premenných:
Príklad 8
"; echo" veľkosť: ". $ _ FILES [" užívateľský súbor "] [" veľkosť "]."
"; echo" typ: ". $ _ FILES [" užívateľský súbor "] [" typ "]."
"; } ?>
Príklady nahrávania súborov na server
Ak máte problémy so serverom prekódovaním nahraného súboru, symbol s kódom 0x00 nahradený medzerou (znak s kódom 0x20), pridajte do súboru httpd.conf z adresára Apache (/ usr / local / apache) nasledujúce riadky.
Najlepší spôsob, ako udržať používateľa na stránke, je nechať ho nájsť to, čo hľadá. Ak na to vytvoríte vhodný systém, úroveň preferencií vašich stránok porastie a používateľ sa určite vráti, aby našiel to, čo ho zaujíma.
Ukážem vám, ako vytvoriť jednoduchý, no funkčne efektívny vyhľadávací formulár, ktorý bude slúžiť na vyhľadávanie článkov na stránke. Výsledky sa zobrazia na stránke bez akéhokoľvek opätovného načítania, čo je nepochybne najlepší spôsob prezentácie informácií.
Vytvorím 2 súbory: search.php ktorý bude obsahovať HTML a JavaScript. Druhý súbor, do_search.php, bude obsahovať kód PHP. Začnime vytvárať prvý súbor:
Skúste napísať slovo ajax
V tomto súbore sme vytvorili bežný HTML formulár, ktorý odosiela požiadavku POST na koncový súbor do_search.php.
select_list ($ sql); if (počet ($ riadok)) ($ end_result = ""; foreach ($ riadok ako $ r) ($ výsledok = $ r ["title"]; $ bold = " ". $ slovo.""; $ end_result. ="
PHP kód obsahuje komentáre, pomocou ktorých môžete ľahko pochopiť, ako skript funguje. Ak sa v databáze nachádzajú zhody, zobrazíte ich používateľovi, pričom slová, ktoré používateľ hľadal, zvýrazníte tučným písmom.
Dajme tomu všetkému nejaké CSS:
Telo (rodina písma: Arial, Helvetica, bezpätkové;) * (okraj: 0; výplň: 0;) #container (okraj: 0 auto; šírka: 600px;) a (farba: # DF3D82; dekorácia textu: žiadny) a: hover (farba: # DF3D82; text-decoration: underline;) ul.update (štýl zoznamu: žiadny; veľkosť písma: 1,1 em; okraj-vrchol: 10px) ul.update li (výška: 30px; border-bottom: #dedede solid 1px; text-align: left;) ul.update li: first-child (border-top: #dedede solid 1px; height: 30px; text-align: left;) #flash (margin- top: 20px; text-align: left;) #searchresults (text-align: left; margin-top: 20px; display: none; font-family: Arial, Helvetica, sans-serif; font-size: 16px; color: # 000;) .word (hmotnosť písma: tučné; farba: # 000000;) #search_box (vyplnenie: 4px; orámovanie: plné 1px # 666666; šírka: 300px; výška: 30px; veľkosť písma: 18px; -moz- border-radius: 6px; -webkit-border-radius: 6px;) .search_button (border: # 000000 solid 1px; padding: 6px; color: # 000; font-weight: bold; font-size: 16px; -moz- border-radius: 6px; -webkit-border-radius: 6px;) .found (font-weight: bold ; štýl písma: kurzíva; farba: # ff0000; ) h2 (pravý okraj: 70px;)
Teraz ste sa naučili, ako vytvoriť jednoduchý vyhľadávací formulár, ktorý funguje bez opätovného načítania stránky. Dúfam, že sa vám návod páčil.
11,1 tisJednou z najobľúbenejších a najpotrebnejších funkcií na akejkoľvek stránke je vyhľadávanie implementované pomocou špeciálneho formulára. Táto funkcia umožňuje návštevníkom rýchlo nájsť obsah, ktorý ich na stránke zaujíma.
Dnes vám chceme povedať, ako vykonať vyhľadávanie na stránke pomocou špeciálneho formulára, ktorý bude vyhľadávať databázové tabuľky a zobrazovať informácie o aktuálnych manažéroch na stránke. Naučíte sa vytvárať databázové tabuľky, ktoré budú obsahovať informácie o aktuálnom zamestnaní.
Navrhnite vyhľadávacie formuláre pomocou PHP a tiež sa zoznámte s SQL ( Štruktúrovaný Dopytovací Jazyk) - špeciálny jazyk na zhromažďovanie, zaznamenávanie a úpravu informácií obsiahnutých v databázach. Skôr ako začnete, odporúčame vám stiahnuť súbory projektu.
Čo potrebuješ
- Nástroj na prácu s databázami MySQL.
- Lokálny alebo vzdialený server s podporou PHP.
- Textový editor.
Vytvárame databázu
Ak si nie ste úplne istí, že viete zistiť databázu na svojom hostingu, kontaktujte poskytovateľa hostingu a požiadajte ho o príslušné pokyny alebo pomoc. Po vytvorení databázy ju budete musieť pripojiť, vytvoriť tabuľku a zapísať do nej potrebné údaje.
Najpopulárnejším nástrojom na správu MySQL je PHP My Admin. Tento nástroj bude pre náš dnešný tutoriál stačiť.
Vytvorenie tabuľky
Naša tabuľka by mala byť vytvorená v nasledujúcom formáte:
Názov stĺpca | Dátový typ | Dĺžka | Null or Not Null | Primárny kľúč? | Automatický prírastok |
ID | INT | 1 | Nie je nulový | Áno | Áno |
Krstné meno | Varchar | 50 | Nie je nulový | # | # |
Priezvisko | Varchar | 50 | Nie je nulový | # | # |
Varchar | 50 | Nie je nulový | # | # | |
Telefónne číslo | Varchar | 15 | Nie je nulový | # | # |
Databázová tabuľka sa skladá zo stĺpcov a riadkov, rovnako ako v Exceli. Prvý stĺpec vám umožňuje identifikovať údaje podľa názvu. Ďalej je stĺpec Typy údajov, ktorý nám udáva typ údajov, ktoré stĺpec obsahuje. Pole Dĺžka určuje maximálne množstvo pamäte (úložného priestoru) pre stĺpec tabuľky. Používame premenné, ktoré poskytujú väčšiu flexibilitu. Inými slovami, ak je dĺžka celého mena menšia ako 50 znakov, zaberie sa iba časť prideleného priestoru.
A medzi personálnymi údajmi nemôžu byť žiadne prázdne hodnoty ( null, prázdny). Prvý riadok je zvýraznený žltou farbou, pretože stĺpec ID je náš primárny kľúč. Hlavný kľúč v databáze zabezpečuje, že každý záznam je jedinečný. Tento stĺpec sa tiež automaticky zvyšuje, čo znamená, že každému záznamu v našej databáze bude automaticky pridelené jedinečné číslo.
Do tabuľky zapisujeme zástupcov zamestnancov
Keď pochopíte tabuľku, začnite ju plniť údajmi. Na zafixovanie postupu vo vašej mysli stačí 6 záznamov. Nižšie je môj vlastný príklad:
ID stĺpca | Krstné meno | Priezvisko | Telefónne číslo | |
2 | Ryan | Butler | [e-mail chránený] | 417-854-8547 |
3 | Brent | Callahan | [e-mail chránený] | 417-854-6587 |
Dizajn formulára
Ak chcete vytvoriť formulár na vyhľadávanie na stránkach pomocou Google, otvorte akýkoľvek vhodný textový editor. Odporúčam používať bezplatný PSPad. Môžete použiť ľubovoľný textový editor, ktorý poskytuje zvýraznenie syntaxe. To značne uľahčí proces písania a ladenia PHP kódu. Keď vytvárate stránku pre vyhľadávací formulár, nezabudnite ju uložiť vo formáte .php, inak nebude kód PHP analyzovaný podľa očakávania. Po uložení dokumentu doň skopírujte nasledujúce označenie:
Podrobné vyhľadávanie kontaktov
Môžete vyhľadávať podľa mena alebo priezviska
Ak sa vyznáte v HTML, tak by vám malo byť všetko jasné aspoň po úvodnú značku formulára. Vo vnútri tohto tagu je najdôležitejší prvok celého kódu – atribút action. Ako akciu pre náš formulár sme zadali názov nášho súboru a potom sme použili reťazec dopytu „ ísť”.
Kontrola súladu s kritériom
Keď používateľ zadá meno alebo priezvisko a potom klikne na tlačidlo Odoslať, formulár odovzdá údaje sebe a pridá reťazec dopytu „ ísť“. V tomto bode skontrolujeme prítomnosť reťazca dotazu go. Ak je výsledok pozitívny, zobrazíme výsledky vyhľadávania.
Pred zobrazením požadovaných výsledkov musíme ešte raz skontrolovať: (1) bol formulár odoslaný, (2) obsahoval reťazec dopytu go, (3) bol vyhľadávací dopyt zadaný malými alebo veľkými písmenami? Ak žiadna z kontrol neposkytuje pozitívny výsledok ( pravda), potom nie sme povinní vykonávať žiadne akcie.
Najprv pridajte malý blok kódu PHP na vyhľadávanie na stránkach za uzatváraciu značku.: