Turvallinen ja kätevä haku mySQL:ssä. Turvallinen ja kätevä haku MySQL Manissa on haku php-näkymässä

Paras tapa pitää käyttäjä sivustolla on antaa hänen löytää etsimänsä. Jos luot tähän tarkoitukseen sopivan järjestelmän, sivustosi mieltymystaso kasvaa ja käyttäjä palaa varmasti takaisin etsimään häntä kiinnostavaa.

Näytän sinulle, kuinka voit luoda yksinkertaisen, mutta toiminnallisesti tehokkaan hakulomakkeen, jota käytetään artikkeleiden etsimiseen sivustolta. Tulokset näkyvät sivulla ilman uudelleenlatauksia, mikä on epäilemättä paras tapa esittää tietoa.

Luon 2 tiedostoa: search.php, jotka sisältävät HTML:n ja JavaScriptin. Toinen tiedosto, do_search.php, sisältää PHP-koodin. Aloitetaan ensimmäisen tiedoston luominen:

PHP, jQuery hakudemo $(function() ( $(.search_button").click(function() ( // saa käyttäjän kirjoittaman var searchString = $("#search_box").val(); // muoto kyselymerkkijono var data = "search="+ searchString; // jos hakumerkkijono ei ole tyhjä if(searchString) ( // tee ajax-pyyntö $.ajax(( type: "POST", url: "do_search.php", data: data, beforeSend: function(html) ( // suoritetaan ennen kuin pyyntöä kutsutaan $("#results").html(""); $("#searchresults").show(); $(". sana").html (searchString); ), success: function(html)( // suoritetaan tulosten vastaanottamisen jälkeen $("#results").show(); $("#tulokset").append(html) ; ) ) return false )); Yritä kirjoittaa sana ajax
Tulokset

Tähän tiedostoon olemme luoneet tavallisen HTML-lomakkeen, joka lähettää POST-pyynnön taustaan ​​- do_search.php-tiedostoon.

PHP-koodi sisältää kommentteja, jotta voit helposti ymmärtää, miten komentosarja toimii. Jos tietokannassa on osumia, näytät ne käyttäjällesi ja korostat lihavoidulla sanat, joita käyttäjä etsi.

Annetaan kaikelle hieman CSS:ää:

Body( font-family:Arial, Helvetica, sans-serif; ) *( margin:0;padding:0; ) #container ( margin: 0 auto; leveys: 600px; ) a ( väri:#DF3D82; tekstin koristelu: none ) a:hover ( color:#DF3D82; text-decoration:underline; ) ul.update ( list-style:none;font-size:1.1em; margin-top:10px ) ul.update li( korkeus: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; #000; ) .word ( font-weight:bold; color:#000000; ) #search_box ( padding:4px; border:solid 1px #666666; width:300px; height:30px; font-size: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; kirjasintyyli: kursivoitu; väri: #ff0000; ) h2 ( marginaali oikea: 70 kuvapistettä; )

Joten olet oppinut luomaan yksinkertaisen hakulomakkeen, joka toimii lataamatta sivua uudelleen. Toivottavasti pidit oppitunnista.

JavaScript on estetty selaimessasi. Ota JavaScript käyttöön, jotta sivusto toimii!

Hae sivustoa ottaen huomioon venäjän kielen morfologia PHP:llä + sivustokartta

Kun luot verkkosivustoasi, mietit lopulta tarvetta tehdä siitä kätevä yleishaku. Yksinkertainen ratkaisu on heti: lisää haku hakukoneista, esimerkiksi: hae Yandexista tai hae Googlesta. Tämän ratkaisun yleinen haittapuoli on, että hakuhakemisto sisältää vain ne sivut, jotka hakukone haluaa lisätä sinne. Toisin sanoen osaa sivustostasi ei "haeta".

Surullista, etsimme muuta ratkaisua. Kyllä, tässä se on: Yandex.Server on tuote sivustosi etsimiseen ottaen huomioon venäjän kielen morfologia. Ladataan . Unix-ympäristössä Yandex.Server toimii demonina ja MS Windows -alustalla palveluna. Nuo. voi toimia vain pääkäyttäjän oikeuksilla palvelimeen. Se ei sovellu, kun sivusto toimii jaetussa hosting-tilassa. :-(Toinen haittapuoli on, että ei ole asetuksia. Vain yksi "Start/Stop"-painike.

Alamme "kaivaa" Internetiä. No miten se voi olla? Jokainen tekee hakuja verkkosivuillaan. Jotenkin ihmiset tekevät sen. Esimerkiksi on olemassa yksi frontaalinen ratkaisu, jonka kuvailin kauan sitten: kontekstuaalinen haku verkkosivustolla, joka ei ota huomioon sanojen taivutusmuotoa eikä indeksoi sanoja sivuilla. Mutta mitä enemmän syvennät ongelmaan, sitä enemmän ymmärrät, että tehtävä on täysin ei-triviaali.

Ensin sinun on skannattava koko sivusto ja valittava siitä kaikki sanat. No, tiedän jo, kuinka tämä tehdään - sivustokartan luontiohjelma on onnistunut selviytymään tästä tehtävästä pitkään.

Toiseksi sinun on saatava kaikkien sanojen alkuperäinen muoto. Tässä on useita vaihtoehtoja, esimerkiksi voit käyttää streameria, joka katkaisee sanojen etuliitteen, päätteen ja päätteen. Tai monimutkaisempi järjestelmä sanakirjoja käyttäen.

Kolmanneksi kaikki tämä on ladattava tietokantaan ja indeksoitava, jotta haku vie mahdollisimman vähän aikaa.

Kun olin käyttänyt kaksi viikkoa aikaani ja kokeilin monia erilaisia ​​vaihtoehtoja ja algoritmeja, päädyin seuraavaan:
1. Käytän skannaukseen yksinkertaistettua jäsentäjää, joka säännöllisen lausekkeen avulla leikkaa sivulta kaikki href:t:

// Hanki ainutlaatuiset linkit sivulta $html=file_get_contents($url); if(preg_match("|(.*?)|sei", $html, $arr))( $body=trim($arr); if(preg_match_all("~ ~si",$body, $arr)) $links=array_unique($arr); )

Nyt sinun on erotettava ulkoiset linkit sisäisistä ja otettava rekursiivisesti yhteyttä jäsentäjään sisäisen linkin osoitteella. Tästä alkaa "rake"... Sisäiset linkit voidaan määrittää ulkoisiksi linkeiksi, joissa on http://domain/address, ne voivat olla suhteessa nykyiseen sivuun, ne voivat olla suhteessa perustunnisteeseen. Seuraavaksi sinun on tarkistettava, onko tämän sivun indeksointi kielletty robots.txt-tiedostossa ja onko tämä sivu jo indeksoitu. Tarkistaaksesi voit käyttää robots.txt-jäsennysesimerkkiä ja SQL-hakuesimerkkiä

$sanat=preg_split("/[^a-zA-Zа-яА-Я0-9]+/", $body, -1, PREG_SPLIT_NO_EMPTY);

poistamme kaikki lyhyet sanat, muunnamme kaikki sanat yhdeksi kirjaimeksi ja valitsemme sanan kantapään (juuren). Sanan juuren korostamiseksi on parasta käyttää PHP-luokkaa, jonka avulla voit korostaa sanojen juuret ottaen huomioon venäjän, englannin, ukrainan, viron tai saksan kielten morfologian. Kunkin kielen sanakirjat vievät 10-15 Mt. Tässä tapauksessa palvelimelle ei tarvitse asentaa lisäohjelmistoja, ja kaikki toimii yleisimmissä isännöissä. Haittana on alhainen juuren vapautumisnopeus. Kirjaston yhdistäminen tapahtuu seuraavasti:

$morphy=$polku."phpmorphy/"; vaatia_once($morphy."src/common.php"); $opts = array("tallennus" => PHPMORPHY_STORAGE_FILE, "predict_by_suffix" => true, "predict_by_db" => true, "graminfo_as_text" => true,); $morphy = uusi phpMorphy($morphy."dicts", "ru_RU", $opts);

phpMorphy-objektilla on kolme parametria:
ensimmäinen on polku sanakirjakansioon;
toinen - koodisivu "ru_RU" - venäjä utf-8:ssa, "rus" - venäjä windows-1251:ssä;
kolmas - vaihtoehdot.

Vaihtoehdot käyttävät tärkeää tallennusparametria, sillä se voi olla yksi kolmesta arvosta:

  • PHPMORPHY_STORAGE_FILE (älä lataa kokonaisia ​​sanakirjatiedostoja muistiin, tämä on hitain vaihtoehto, mutta edullisin palvelinresurssien käytön kannalta),
  • PHPMORPHY_STORAGE_SHM (lataa koko sanakirjatiedosto jaettuun muistiin, vaatii PHP shmop -laajennuksen) tai
  • PHPMORPHY_STORAGE_MEM (lataa myös koko tiedosto muistiin, jos shmoppia ei käytetä, toiminnan nopeus ei eroa edellisestä).

Jaetussa isännöinnissä joudut todennäköisesti käyttämään ensimmäistä vaihtoehtoa, mutta omistetussa palvelimessa suuremman nopeuden saavuttamiseksi on parempi käyttää muistipohjaisia ​​vaihtoehtoja. Valitse vaihtoehto tehtävillesi, jos aiot käyttää moduulia usein, on tietysti parempi käyttää vaihtoehtoa jaetun muistin kanssa.

On esimerkki siitä, kuinka phpmorphy-kirjasto toimii.

3. Nyt meidän on tehtävä tietokantataulukot, joihin tallennamme kaikki skannaus- ja jäsennystulokset:

// luettelo sivuston sivuista linkin, otsikon ja ilmoituksen muodossa // (sivun ensimmäiset 300 merkkiä näkyvät hakutuloksissa). LUO TAULUKON PAIKKA, JOS EI OLE OLEMASSA -sivu (`id` int UNsignED NOT NULL PRIMARY KEY auto_increment, `url` varchar(255) not null oletus "" UNIQUE, `title` varchar(128) not null oletus "", `description` teksti ei null oletusarvo "") // kaikki sivuston sanat. // sana on se, mikä jää varren jälkeen (mitä kutsuimme "juureksi") // ääni on tulosta tietyn sanan soundex-funktiosta. LUO TAULUKO, JOS EI OLE OLEMASSA sana (`id` INT ALLEKIRJOITTAmaton EI NULL ENSISIJAINEN AVAIN auto_increment, `word` varchar(30) ei null, `ääni` char(4) not null oletus "A000") LUO INDEKSI idx_word_word PÄÄLLÄ ".$search -> sana." (sana(8)) LUO INDEKSI idx_word_sound ".$search->word." (ääni(4)) // Jokainen rivi on sana "sana", joka löytyy sivulta "sivu" "cnt"-time CREATE TABLE IF NOT EXISTS hakemisto (`sivu` int UNSIIGNEDETTI ei null, `word` int UNSIIGNEET ei null , `cnt` PIENI ALLEKIRJOITTAmaton EI NULL, AINUTLAATUINEN (sivu,sana))

Nyt sinun on tehtävä hakulausekepyyntölomake. Hakukyselyn yksinkertaisin muoto näyttää tältä:

sen koodi on tällainen:

Hae:

Lataa sivuston hakuskripti

Tämän esimerkin luominen kesti hyvin kauan, joten haluan muuntaa sen rahaksi. Jos haluat toistaa saavutukseni, onnea. Jos arvostat aikaasi, vaihdan mielelläni ajan rahaksi. Vain 2 900 ruplaa (~ 46 dollaria) hintaan saat täydellisen avoimen, yksityiskohtaisen hakuskriptin, jossa on sivustokarttageneraattori.

Arkiston sisältö:
  • phpmorphy/ - kirjasto sanojen juurien purkamiseen
  • stemmer/ - sanan varren korostaminen nopealla algoritmilla
  • config.php - tietokannan asetukset ja yleiset toiminnot, joita saatat jo käyttää ja korvata ne omillasi
  • index.php - hakulomake + hakutulokset
  • install.php - MySQL-tietokantataulukoiden luominen hakua varten
  • link_bar.php - sivunavigointi
  • search.php - luokka haun kanssa työskentelemiseen. Sisältää menetelmiä:
    • sound_ex($string) – venäläinen soundex sanan äänen saamiseksi
    • päivitys($url, $scan=0) - skannaa rekursiivisesti kaikki sivuston sivut, korosta sivun otsikko, tekstiosa, kuvaus.
    • ParsingWord($url, $words) - jäsentää sanoja ja lisää ne hakutietokantaan
    • GetWords($words) - korvaa kaikki välitetyn taulukon sanat juurillaan
    • url_short($url,$base="",$ext=0) - jäsentää linkkejä, erottaa ulkoiset sisäiset
    • is_robots($url) - tarkistaa, onko robots.txt-tiedostossa linkki
    • ReadUrl($site) - sivuston sivun lukeminen Curlin avulla, käsittely - uudelleenohjaukset
  • sitemap.php - sivustokartan luominen sitemap.xml
  • spider_http.php - sivuston skanneri, joka perustuu sivujen lukemiseen ja jäsentämiseen
  • spider_sitemap.php - sivuston tarkistus, joka perustuu sitemap.xml-jäsennykseen

Asennusohjeet:

  • Pura search.zip-arkiston sisältö hakukansioon. Salli kirjoittaa siihen skripteistä - aseta oikeudet arvoon 777.
  • Muokkaa tietokannan käyttöasetuksia config.php-tiedostossa Suorita install.php - tarvittavat tietokannat luodaan
  • Suorita "/search/spider_http.php", skanneri täyttää tietokantataulukot:
    taulukko kaikista sivuston sivuista, se sisältää otsikon, avainsanat ja kuvauksen.
    sanataulukko, se sisältää sivuilta löytyneiden sanojen juuret
    On mahdollista luoda tietokanta olemassa olevan sivustokartan perusteella käyttämällä "/search/spider_sitemap.php";
  • Aseta hakukyselysi sivuille. Hakulomake: Haku:
  • Muokkaa haku.php-sivun tulosten näyttömuotoa
  • suorita include_once "updater.php"; päivitys($url);
    kun lisäät, muutat tai poistat jokaista sivua
    $url - päivitettävä sivu.
    kätevä soittaa sivumuutosten tallentamisen jälkeen
    Jos sivu palauttaa 404-virheen tai on tyhjä, se poistetaan tietokannasta.
  • suorita "/search/sitemap.php" luodaksesi sivustokartan sitemap.xml
    älä unohda kirjoittaa sivustokartan polkua robots.txt-tiedostoon: sitemap: /search/sitemap.xml
  • Sivustohaun komentosarjaominaisuudet
    • Sivuston kaikkien sivujen skannaus ottaen huomioon robots.txt-tiedoston kiellon ja
    • Sivujen tekstin jäsentäminen sanojen korostamalla, sanatilastojen laskeminen
    • Korostetaan otsikko, avainsanat, kuvaus sivulla
    • Sanan juurien eristäminen ottaen huomioon venäjän kielen ja kirjastojen morfologia
    • Sanarunkojen eristäminen nopealla algoritmilla (ei suositella, kommentoidaan käsikirjoitustekstissä)
    • Venäjän kielen oikeinkirjoituksen tarkistaminen skannattaessa, koska sanakirjasta puuttuu sana
    • Neljä viestitilaa: 0 - työskentele hiljaa, 1 - anna vain sivuston virheet, 2 - anna virheet ja vähimmäistiedot, 3 - yksityiskohtaiset tiedot käytön aikana
    • Hae sanojen konsonanssilla. Venäjän soundex.
    • Lajittele hakutulokset osuvuuden mukaan. Sivut, jotka sisältävät kaikki hakusanat enimmäismäärän, näytetään ensin.
    • Löytyneiden tulosten sivu sivulta
    • Käsikirjoitus on kommentoitu yksityiskohtaisesti venäjäksi
    • Skriptikoodi on toteutettu PHP + MySQL -kielellä, se on täysin avoimen lähdekoodin eikä käytä ylimääräisiä kirjastoja. Kaikki mitä tarvitset on mukana.
    • Sivustokarttasi luonti indeksointirobotin luomaan tietokantaan

      Mitä skripti ei voi tehdä:

    • ei oteta huomioon, rel=nofollow
    • kaikilla sivuilla olevia yleisiä tekstejä ei poisteta hausta

    Käyttösopimus:

    • Voit käyttää tuloksena olevaa koodia missä tahansa kehitystyössäsi, sinun ei tarvitse antaa linkkiä lähteeseen.
    • Et saa myydä sitä edelleen, asettaa sitä julkisesti tai julkisesti saataville tai julkaista sitä missään muodossa.
    • Kaikki muut oikeudet pidätetään tekijällä.
    • Voit ottaa yhteyttä kirjoittajaan kysymyksiin, kommentteihin ja ehdotuksiin. Yhteystiedot .

    Ole varovainen! Hinta 2900 ruplaa (~46 dollaria) voit valita yhden kahdesta skriptivaihtoehdosta, jotka eroavat merkittävästi toisistaan.
    UTF-8-koodatun sivuston hakukomentosarja käyttää toimintoja kaksitavuisten merkkien mb_* käsittelyyn, jäsentää sivuja UTF-8-koodaukseen (unicod) tehtyjen säännöllisten lausekkeiden avulla, luo tietokantataulukoita utf-8:ssa.
    Windows-1251-koodauksen sivuston hakukomentosarja käyttää toimintoja, jotka toimivat vain yksitavuisten str*-koodausten kanssa, jäsentävät sivut käyttämällä yksitavuisia koodauksia varten tehtyjä säännöllisiä lausekkeita.

    Voit osallistua tai rekisteröityä! Tai ilman rekisteröitymistä
    Napsauttamalla latauspainiketta hyväksyt tällä sivulla kuvatun skriptin käyttöehdot.
    Saldostasi veloitetaan 2 900 ruplaa (~46 dollaria), ja tiedoston lataus alkaa.

    11.1K

    Yksi suosituimmista ja tarpeellisimmista toiminnoista millä tahansa verkkosivustolla on haku, joka toteutetaan erityisellä lomakkeella. Tämän toiminnon avulla kävijät löytävät sivustolta nopeasti heitä kiinnostavan sisällön.

    Tänään haluamme kertoa sinulle, kuinka voit etsiä sivustosta erityisellä lomakkeella, joka tekee kyselyitä tietokantataulukoista ja näyttää tietoja sivuston nykyisistä johtajista. Opit luomaan tietokantataulukoita, jotka sisältävät tietoa nykyisestä henkilöstöstä.

    Kehitä hakulomakkeita PHP:n avulla ja tutustu myös SQL:ään (Structured Query Language) - erikoiskieleen tietokantojen sisältämän tiedon keräämiseen, tallentamiseen ja muokkaamiseen. Ennen kuin aloitat, suosittelemme lataamaan projektitiedostot.

    Mitä tarvitset

    • Työkalu MySQL-tietokantojen kanssa työskentelemiseen.
    • Paikallinen tai etäpalvelin PHP-tuella.
    • Tekstieditori.
    Tietokannan luominen

    Jos et ole täysin varma, että ymmärrät isännöimäsi tietokannan, ota yhteyttä isännöitsijään saadaksesi asianmukaisia ​​ohjeita tai apua. Kun tietokanta on luotu, sinun on yhdistettävä se, luotava taulukko ja kirjoitettava siihen tarvittavat tiedot.

    Suosituin työkalu MySQL:n hallintaan on PHP My Admin. Tämä työkalu riittää tämän päivän opetusohjelmaamme.

    Taulukon luominen

    Taulukkomme tulisi luoda seuraavassa muodossa:

    Sarakkeen nimi Tietotyyppi Pituus Nolla tai ei nolla Pääavain? Automaattinen lisäys
    ID INT 1 Ei tyhjä Joo Joo
    Etunimi Varchar 50 Ei tyhjä Ei Ei
    Sukunimi Varchar 50 Ei tyhjä Ei Ei
    Sähköposti Varchar 50 Ei tyhjä Ei Ei
    Puhelinnumero Varchar 15 Ei tyhjä Ei Ei

    Tietokantataulukko koostuu sarakkeista ja riveistä, aivan kuten Excel. Ensimmäisessä sarakkeessa voit tunnistaa tiedot nimen perusteella. Seuraavaksi tulee Tietotyypit-sarake, joka kertoo meille sarakkeen sisältämien tietojen tyypin. Pituus-kenttä määrittää taulukon sarakkeen muistin (tallennustilan) enimmäismäärän. Käytämme muuttujia, jotka antavat enemmän joustavuutta. Toisin sanoen, jos koko nimen pituus on alle 50 merkkiä, vain osa varatusta tilasta on varattu.

    Ja henkilöstötietojen joukossa ei voi olla tyhjiä arvoja (nolla, tyhjä). Ensimmäinen rivi on korostettu keltaisella, koska ID-sarake on ensisijainen avaimemme. Tietokannan pääavain varmistaa, että jokainen tietue on ainutlaatuinen. Automaattista lisäystä sovelletaan myös tähän sarakkeeseen, mikä tarkoittaa, että jokaiselle tietokannassamme olevalle tietueelle annetaan yksilöllinen numero automaattisesti.

    Henkilökunnan edustajien lisääminen taulukkoon

    Kun ymmärrät taulukon, aloita sen täyttäminen tiedoilla. 6 nuottia riittää korjaamaan menettelyn mielessäsi. Alla tarjoan oman esimerkkini:

    Sarakkeen tunnus Etunimi Sukunimi Sähköposti Puhelinnumero
    2 Ryan Butler [sähköposti suojattu] 417-854-8547
    3 Brent Callahan [sähköposti suojattu] 417-854-6587
    Muotokehitys

    Luo sivustohakulomake Googlen kautta avaamalla mikä tahansa sopiva tekstieditori. Suosittelen ilmaisen PSPadin käyttöä. Voit käyttää mitä tahansa tekstieditoria, joka tarjoaa syntaksin korostuksen. Tämä helpottaa huomattavasti PHP-koodin kirjoittamista ja virheenkorjausta. Kun luot sivua hakulomakkeellesi, muista tallentaa se .php-muodossa, muuten PHP-koodia ei jäsenne kunnolla. Kun olet tallentanut asiakirjan, kopioi siihen seuraavat merkinnät:

    Hae yhteystietoja:

    Yksityiskohtainen yhteystietohaku

    Voit etsiä etu- tai sukunimellä

    Jos olet perehtynyt HTML-kieleen, niin kaiken tässä pitäisi olla sinulle selvää ainakin avauslomaketunnisteeseen asti. Tämän tagin sisällä on koko koodin tärkein elementti - action-attribuutti. Lomaketoimintoa varten määritimme tiedostomme nimen ja sitten käytimme siihen kyselymerkkijonoa "go".

    Kriteerin noudattamisen tarkistaminen

    Kun käyttäjä syöttää etu- tai sukunimen ja sitten napsauttaa lähetyspainiketta, lomake välittää tiedot itselleen ja lisää loppuun kyselymerkkijonon "go". Tässä vaiheessa tarkistamme, onko go-kyselymerkkijono olemassa. Jos tulos on positiivinen, näytämme hakutulokset.

    Ennen kuin näytät pyydetyt tulokset, meidän on tarkistettava: (1) lähetettiinkö lomake, (2) sisälsivätkö kyselymerkkijono arvon go, (3) kirjoitettiinko hakutermi pienillä vai isoilla kirjaimilla? Jos mikään tarkistuksista ei anna positiivista tulosta (tosi), meidän ei tarvitse suorittaa mitään toimenpiteitä.

    Lisätään ensin pieni lohko PHP-sivustohakukoodia sulkevan tagin jälkeen:

    Ensin avataan PHP-koodilohko ""-tunnisteella.

    Palvelin suorittaa minkä tahansa tämän tunnisteparin sisällä olevan PHP-koodin. Sitten tarkistamme, onko lomake lähetetty:

    Käytämme sisäänrakennettua isset-funktiota, joka palauttaa boolin, ja laitamme siihen $_POST-taulukon. Boolen lauseke ohjelmoinnissa antaa meille mahdollisuuden saada joko tosi tai epätosi.

    Siksi, jos funktio palauttaa arvon tosi, lomake on lähetetty ja meidän on jatkettava koodin suorittamista. Jos funktio palauttaa false , tulostamme virheilmoituksen. Tallenna kaikki kirjoitettu koodi search_submit.php-tiedostoon.

    Laitamme toisen ehdollisen loogisen lausekkeen päälausekkeen sisään, mutta tällä kertaa käytämme $_GET-taulukkoa yhdessä "go"-arvon kanssa. Tallenna muutokset search_go.php-tiedostoon.

    Nyt meidän on varmistettava, että vierailijat voivat kirjoittaa kyselymerkkijonon ensimmäisen kirjaimen vain isolla tai vain pienillä kirjaimilla. Meidän on myös tarjottava tapa ottaa huomioon vierailijan syöttämät hakukriteerit. Paras tapa vahvistaa vierailijan syöte on käyttää säännöllistä lauseketta:

    Laitamme toisen ehdollisen loogisen lausekkeen kahden sisälle. Tällä kertaa käytämme säännöllistä lauseketta syötteen vahvistamiseen. Käytämme sisäänrakennettua preg_match-funktiota kahdella parametrilla: säännöllinen lauseke ja lomakekenttä, johon vahvistusta tulee soveltaa.

    Meidän tapauksessamme tämä on "Nimi"-kenttä (nimi). Vierailijan määrittämien hakuparametrien hakemiseksi luomme muuttujan $name ja sidomme siihen POST-arvon kentän nimellä SQL-kyselyssä käytettävästä lomakkeesta. Olemme nyt toteuttaneet: (1) lomakkeen lähettämisen, (2) kyselymerkkijono sisältää arvon go ja (3) vierailija on kirjoittanut joko ison tai pienen ensimmäisen kirjaimen. Ja kaikki nämä tarkastukset tapahtuvat ennen kuin tietokantaan tehdään muutoksia. Tallenna kaikki muutokset.

    Yhdistä, valitse, kysele ja palauta tulokset tietokantataulukosta

    Jos haluat saada tietoja taulukosta, sinun on ensin muodostettava yhteys palvelimeen sivustohaun komentosarjassa. Tätä varten käytämme seuraavaa koodia:

    Luomme muuttujan $db ja sitomme sen sisäänrakennettuun MySQL-funktioon mysql_connect, joka ottaa kolme parametria: palvelin tietokannan kanssa (localhost, jos työskentelet paikallisesti), sisäänkirjautuminen ja salasana.

    Sen jälkeen suoritamme sisäänrakennetun PHP-funktion die, joka pysäyttää koodin jatkamisen, jos yhteyttä tietokantaan ei ole. Ja näytämme tiedot virheestä suorittamalla sisäänrakennettu MySQL-toiminto mysql_error , joka palauttaa virheen syyn. Tallenna search_connectdb.php-tiedosto.

    Luomme muuttujan nimeltä mydb ja sitomme sen sisäänrakennettuun MySQL-funktioon mysql_select_db ja määritämme sitten aiemmin luomamme tietokannan nimen. Seuraavaksi teemme tietokantataulukon kyselyn SQL-kyselyllä, jonka nimimuuttuja sisältää vierailijan syöttämät hakuparametrit:

    Kun kysytään tietokantataulukkoa, luomme $sql-muuttujan ja sidomme sen SQL-kyselyn sisältävään merkkijonoon. Käytämme SELECT-käskyä arvojen noutamiseen id-sarakkeista sekä etu- ja sukunimisarakkeista yhteystietotaulukosta. Käytämme sitten WHERE-lausetta sekä etu- ja sukunimiarvoja haun rajaamiseksi.

    Yhdessä LIKE-operaattorin kanssa käytämme prosenttimerkkiä (%) - erikoismerkkiä, joka palauttaa 0 tai enemmän merkkiä, sekä nimimuuttujan hakumerkkijonosta. Tämän seurauksena LIKE (yhdessä erikoismerkin kanssa) löytää minkä tahansa vastaavan nimen tietokantataulukosta. Voit kuvata koko prosessia seuraavasti: "Valitsemme yhteystietotaulukosta etu- ja sukunimen, jotka vastaavat vierailijan syöttämiä nimiä." Tallenna search_query.php-tiedosto.

    Luomme $result-muuttujan ja annamme sille mysql_query()-funktion arvon lisäämällä sen arvoon $query. Nyt kyselymme on tallennettu tulosmuuttujaan. Tulostaaksesi tuloksen PHP:ssä luomme silmukan ja tulostamme sitten tiedot järjestämättömässä luettelossa:

    Ensin luodaan while-silmukka, jonka sisään luodaan muuttuja nimeltä row ja alustetaan se mysql_fetch_array-funktion palautusarvolla, joka ottaa tulosmuuttujan, joka sisältää SQL-kyselymme. While-silmukan sisällä annamme jokaisen sarakkeen arvon samannimisen muuttujan arvolle. Sitten tulostamme arvot järjestämättömän luettelon sisällä.

    Tässä on tärkeää kiinnittää huomiota kahteen kohtaan: (1) while-silmukan sisällä ei tarvitse antaa arvoja rivitaulukon muuttujille, koska arvot voidaan ottaa suoraan rivitaulukosta; (2) ankkuritunniste, jota käytämme tiedostomme nimessä id:n ja ensisijaisen avaimen kanssa. Syynä tähän on, että monet hakuelementit eivät aluksi näytä mitään.

    Koska näytämme vain etu- ja sukunimet, joiden tunniste on ankkuritunnisteen lopussa, voimme käyttää tunnusta lisäkyselyyn, joka palauttaa lisätietoja henkilöstöstä. Tallenna tiedosto ja testaa PHP-sivustohakulomaketta (search_display.php).

    Välilehtien poistaminen

    Tulokset näytetään järjestämättömänä luettelona, ​​mutta pointti on, että emme tarvitse välilehtiä. Päästäksesi eroon siitä lisäämällä seuraava CSS-sääntö tiedoston alkuun otsikossa:

    ul li( list-style-type:none; )

    Hae kirjaimella

    Kirjainhaun toteuttaminen vaatii vain muutaman lisäkoodirivin. Lisätään tämä vierailijoille kätevä toiminto. Näin he voivat löytää henkilöstön edustajat etu- tai sukunimessä olevien kirjainten perusteella.

    Lisää seuraava koodirivi sulkevan lomaketunnisteen jälkeen:

    A | B | K