Dezvoltarea unei funcționalități de căutare pentru site-ul în PHP si MySQL, PHP

Una dintre cele mai populare și necesare funcțiile de pe orice site - o căutare este implementată folosind un formular special. Această funcționalitate permite vizitatorilor să găsească rapid pe site sunt interesați de conținutul lor.

Astăzi vrem să-ți spun cum să faci o căutare pe site folosind formularul care va interoga un tabel de baze de date și afișează informații despre liderii curente de pe site. Vei învăța cum să creați un tabel de baze de date, care va conține informații despre actualul personal.

Crearea unei baze de date

Dacă nu sunteți sigur că puteți face cu baza de date de pe dvs. de găzduire, vă rugăm să contactați compania de găzduire pentru instrucțiuni sau asistență. După crearea bazei de date, va trebui să-l activați, de a crea o foaie de calcul și salvați-l în datele solicitate.

Cel mai popular instrument de gestionare a MySQL este PHP My Admin. Acest instrument va fi suficient pentru conducerea noastră prezentă.

Crearea unui tabel

Masa noastră trebuie să fie create în următorul format:

Un tabel de bază de date este compus din coloane și rânduri în Excel. Prima coloană permite identificarea datelor pe nume. Următorul este un tip coloană de date (tip de date), ceea ce indică tipul de date conținute în coloana. În câmpul Lungime (Lungime) specifică cantitatea maximă de memorie (stocare) pentru coloană. Noi folosim variabile care permit o mai mare flexibilitate. Cu alte cuvinte, în cazul în care lungimea numelui este mai mică de 50 de caractere, acesta va fi ocupat doar o parte din spațiul alocat.

Iar printre aceste persoane nu poate fi nul (nul, gol). Prima linie este evidențiat în galben, deoarece ID-ul coloana - cheia noastră primară. Cheia primară în baza de date se asigură că fiecare intrare este unic. Această coloană este, de asemenea, utilizat autoincrement, ceea ce înseamnă că fiecare înregistrare în baza noastră de date va fi atribuit un număr unic în mod automat.

Asigurați-vă reprezentanții personalului la masa

După ce a terminat cu masa, începe să-l umple cu date. 6 înregistrări este suficient să se stabilească procedura în minte. Mai jos Sugerez exemplu propriu:

Dezvoltarea formelor

Dacă sunteți familiarizat cu HTML. Aici toți ar trebui să fie clar, cel puțin până când se formează tag-ul de deschidere. În interiorul acestui tag-ul este cel mai important element al tuturor codurilor - atribut de acțiune. Deoarece acțiunile formularului nostru vom specifica numele fișierului nostru, și apoi aplicat la șirul de interogare „du-te“.

Verificarea respectării criteriilor

Atunci când un utilizator introduce numele sau numele de familie, iar apoi dă clic pe butonul de trimitere, formularul trimite date în sine și se adaugă la sfârșitul șirului de interogare „du-te“. În această etapă, vom verifica disponibilitatea de plecare șir de interogare. Dacă rezultatul este pozitiv, rezultatele de căutare.

Înainte de retragerea rezultatelor solicitate, trebuie să verificați: (1) dacă forma confirmată, (2) dacă valoarea șir de interogare Go, (3) dacă interogarea de căutare este introdusă în majuscule sau minuscule? În cazul în care nici unul dintre teste nu dă un rezultat pozitiv (adevărat), atunci nu sunt necesare pentru a efectua orice acțiune.

În primul rând, se adaugă un mic bloc de cod PHP de căutare pe site-ul înainte de eticheta de închidere :

În primul rând, vom deschide bloc tag-ul PHP-cod „“.

Orice PHP-cod în interiorul acestei perechi de tag-uri vor fi executate de către server. Apoi vom verifica pentru a vedea dacă formularul a fost confirmată:

Noi folosim isset built-in. care returnează tipul bool. și a pus în ea un $ _POST matrice. Expresia booleană în programare ne permite pentru a obține un adevărat. sau false.

Prin urmare, în cazul în care funcția returnează true. trimiterea formularului, și trebuie să continue cu codul suplimentar. Dacă funcția returnează false. obținem un mesaj de eroare. Salvați toate codul format în fișierul search_submit.php.

În continuare avem nevoie pentru a verifica dacă valoarea Go în șirul de interogare:

Am pus o altă expresie logică condiționată în interiorul miezului, dar de data aceasta vom folosi matrice $ _GET, împreună cu valoarea de „du-te“. Salvați fișierul search_go.php.

Acum trebuie să ne asigurăm că vizitatorii pot intra prima literă în șirul de interogare numai în cazul de sus sau de jos numai. De asemenea, trebuie să oferim o modalitate de contabilizare a criteriilor de căutare introduse de către vizitator. Cel mai bine este de a verifica datele introduse de către vizitator, cu o expresie regulată:

Am pus o altă expresie logică condiționată în două noastre. De data aceasta vom folosi o expresie regulată pentru a valida de intrare. Noi folosim preg_match built-in funcție cu două argumente: o expresie regulată și pe un câmp pentru care ar trebui să se aplice testul.

În cazul nostru, acest lucru va fi „Name» (numele). Pentru a elimina parametrii de căutare specificați vizitatorilor, vom crea un nume de $ variabila, si leaga-l POST cu numele câmpului de formular care va fi utilizat în SQL-interogare. Acum ne-am dat seama: (1) trimiterea formularului de date (2), șirul de interogare include valoarea merge și (3) un vizitator a intrat sau majuscule, litere mici, sau prima literă. Și toate aceste controale au loc înainte de a face modificări în baza de date. Salvați toate modificările.

Rezultate Connect, Select, Solicitare și Reîntoarcerea dintr-un tabel de baze de date

Pentru a obține datele din tabel, mai întâi în script-ul de căutare pentru site-ul pe care doriți să vă conectați la server. Pentru a face acest lucru, vom folosi următorul cod:

Vom crea un $ db variabilă. și se leagă la built-in MySQL mysql_connect. care are trei parametri: serverul de baze de date (localhost dacă se execută la nivel local.), numele de utilizator și parola.

După aceea, vom rula built-in die PHP-funcția. care se oprește executarea ulterioară a codului, în cazul în care nu există nici o conexiune la baza de date. Și afișează informații despre eroare prin rularea built-in MySQL funcția mysql_error. care returnează cauza erorii. Salvați fișierul search_connectdb.php.

Apoi, folosind codul prezentate mai jos, vom alege ce bază de date pentru a utiliza:

Creați un mydb variabilă pe nume și se leagă-l la built-in MySQL-functia mysql_select_db. și apoi specificați numele bazei de date pe care l-ați creat anterior. În continuare, am intervievat un tabel de baze de date folosind SQL-o interogare cu un nume de variabilă, care conține parametrii de căutare introduse de un vizitator:

Intr-un sondaj din tabelul de baze de date, vom crea un $ sql variabilă. și se leagă la linia care conține SQL-interogare. Noi folosim instrucțiunea SELECT pentru a prelua valorile coloanei id. precum și numele și prenumele din tabel contacte. Noi folosim apoi clauza WHERE, împreună cu valorile nume pentru a restrânge căutarea.

Împreună cu operatorul LIKE, vom folosi semnul de procent (%) - un caracter special, care returnează 0 sau mai multe caractere, precum și numele variabilei într-o casetă de căutare. Ca rezultat, LIKE (coroborat cu caractere speciale) este orice nume adecvat în tabelul bazei de date. Puteți descrie procesul, după cum urmează: „Am ales un nume din tabelul de contacte. potrivire vizitator. " Salvați fișierul search_query.php.

În continuare, avem nevoie pentru a pune rezultatele SQL-interogare într-o variabilă, și rulați-l cu funcția mysql_query. așa cum se arată mai jos:

Vom crea un rezultat $ variabila. și atribuiți o valoare a funcției mysql_query (). aducându-l la $ interogare. Acum interogarea noastră este stocată în rezultatul variabil. Pentru a afișa rezultatul în PHP. vom crea o buclă, și apoi scoate datele dintr-o listă neordonată:

În primul rând, vom crea o buclă în timp. în interiorul acestuia a crea o variabilă numită rând. și inițializa funcția sa mysql_fetch_array valoarea de retur. care primește rezultatul variabil. care este nostru SQL-interogare. În interiorul bucla de timp, vom atribui fiecărei valori din valoarea coloana a variabilei cu același nume. Apoi, obținem valorile din interiorul unei liste neordonate.

Este important să se acorde o atenție la două puncte: (1) într-o buclă în timp ce nu este necesar să se atribuie valori la rând variabile matrice. deoarece valorile pot fi luate direct dintr-o serie de rând; (2) ancoră Tag. pe care le folosim în numele nostru fișier cu ID-ul și cheia principală. Motivul pentru aceasta constă în faptul că inițial nu apare în mai multe elemente de căutare.

Din moment ce ne arata doar numele si prenumele, atribuind tag-ul ID-ul de la sfârșitul ancora. putem folosi ID-ul de la o solicitare suplimentară, care va aduce informații suplimentare despre personalul. Salvați site-ul formularul de test de fișier și PHP căutare (search_display.php).

eliminați file

Rezultatele sunt afișate într-o listă neordonată, dar ideea este că nu avem nevoie de file. Pentru a scapa de ea, adăugați următorul CSS regula la începutul fișierului în cap:

Cauta dupa litera

Pentru a pune în aplicare căutarea printr-o scrisoare nevoie doar de câteva linii suplimentare de cod. Adăugați acest user-friendly caracteristici pentru vizitatori. Astfel, ei vor fi capabili să găsească reprezentanții personalului prin scrisori, care sunt cuprinse în numele sau prenumele.

Adăugați următoarea linie de cod, după forma de închidere tag-ul:

Noi lega tag-ul să solicite printr-o linie prin ancora, și setați-l la o anumită literă. Pentru a implementa funcționalitatea de căutare pentru scrisorile, trebuie să adăugați următorul cod imediat după bretele de închidere din scenariul original, așa cum se arată mai jos:

Aici am schimbat patru fragmente de cod de script Caută acest site:
  • Noi folosim functia isset (). și sunt ceea ce face o matrice $ _GET. și apoi se verifică valoarea de;
  • Vom crea o literă $ variabilă și inițializa valoare matrice $ _GET sale;
  • Adăugați litera variabilă în SQL-interogare;
  • Specificați variabila literă în expresii, în care se obține numărul de rânduri numărate.

Search_byletter.php Salvați fișierul și verificați rezultatul.

Căutarea unui anumit angajat

Pentru a afișa informații despre restul personalului, care este transmis prin ID-ul unic în legăturile noastre, trebuie să adăugați următorul cod imediat după bretele de închidere în script scrisoare. așa cum se arată mai jos:

Aici am schimbat patru fragment de cod:

  • Noi folosim functia isset (). și-l utilizați pentru a verifica valoarea ID în matrice $ _GET;
  • Vom crea o variabilă $ ContactID și inițializa array $ _GET;
  • Tabelul identifică toate marcate cu un asterisc *. Asterisk - o abreviere în SQL. ceea ce înseamnă „da-mi toate coloanele și rândurile din tabel.“ Pentru a determina ce informații să afișeze, ne referim la o ContactID variabilă la sfârșitul SQL-expresie;
  • informații additonal despre fiecare dintre reprezentanții personalului.

Search_byid.php Salvați fișierul și verificați rezultatul.

SQL injecție

Motivul pentru care am adăugat în caseta de căutare, o expresie regulată este, că nimeni nu poate interveni în nostru SQL-interogare. Anterior, problema a fost larg răspândită și hackerii au reușit să realizeze propriile lor SQL-interogări. în timp ce manipularea cererea dumneavoastră. De exemplu, dacă ar fi permis posibilitatea de a utiliza un apostrof în domeniul nostru, hacker-ul ar putea pur și simplu eliminați baza de date utilizând interogarea:

După cum sa menționat deja, expresia regulată asigură că primul vizitator caracter poate intra doar literele în majuscule sau minuscule.

La sfârșitul

În articolul de astăzi, am discutat despre modul de a face o căutare pe site, precum:
  • Crearea unei baze de date și tabele corespunzătoare;
  • Utilizați instrumente pentru gestionarea bazelor de date, de a crea coloane și date de intrare;
  • Elaborarea unui formular de căutare bazat pe PHP. care este în măsură să verifice datele introduse, prezența variabilelor în cerere, precum și în legătură cu baza de date și a afișa rezultatele în tabel;
  • Cum de a proteja aplicația și baza de date SQL de la injectare.

Folosind cunoștințele dobândite din acest articol, puteți modifica cu ușurință codul altcuiva, precum și pentru a extinde funcționalitatea unui formular de căutare, dacă este necesar.

Traducerea articolului „Cum să creați o caracteristică de căutare cu PHP si MySQL“ a fost pregătit de o echipă de proiect prietenos Web design de la A la Z.