Menü
Ingyenes
becsekkolás
a fő  /  Tanács / Születés az emberre Keresési elem PHP I. Többszintű menü a PHP és a MYSQL-en

A férfi keresési elemének születése PHP I. Többszintű menü a PHP és a MYSQL-en

Által Ibrahim Diallo.

Megjelent 2014 ~ 16 perc olvasás

A keresés fontos funkció egy weboldalon. Amikor az én olvasók szeretnék keresni egy adott folyosót a blogomon, a keresőmezőn. A Google Search által működtetett, de azóta megváltoztattam a saját otthoni főtt verziójára, nem azért, mert jobban tudok csinálni, de azért, mert érdekes kihívás volt.

Ha sietsz, és csak azt szeretné, hogy webhelye keresse meg, jól tegye azt, amit korábban tettem, használja a Google-t.

// a Search.php fájlban $ Hate \u003d Betset ($ _ get ["lekérdezés])? $ _ Get [" Query "]:" "; $ TYME \u003d URLENCODE ($ TIME); $ Website \u003d URLENCODE ("www.yourwebsite.com"); $ redirect \u003d "https://www.google.com/search?q\u003dsite%3A ($ weboldal) + ($") "; Fejléc ("Hely: $ Redirect"); kijárat;

Mit csinál elég egyszerű. Szerezd meg a felhasználó által átadott kifejezést, és továbbítsa azt a Google keresési oldalra. Korlátozza a keresési eredményt a jelenlegi tartományunkhoz az oldal használatával: Kulcsszó a keresési lekérdezésben. A Google által indexált összes oldal elérhető lesz a keresés során. Ha a házban szeretné kezelni a keresést, akkor olvassa el az olvasást.

Házi keresési megoldás

Mielőtt tovább megyünk, próbálja meg használni a keresőmezőt a blogon. Ugyanazt a folyamatot használja, amelyet az alábbiakban leírnám. Ha úgy érzi, hogy ez az, amit akarsz, kérjük, folytassa az olvasást.

Ez a megoldás apró weboldalakra kerül. Használhatom, mint a vadon élő kártyák mindkét végén, ami azt jelenti, hogy a keresés nem indexelhető. Ez azt jelenti, hogy a megoldás jól működik a blogjához vagy a személyes weboldalhoz, amely nem tartalmaz "t tonna adatot tartalmaz. A kikötő nagyobb weboldalra van szüksége, és nagyon lassú lehet. A MySQL teljes szöveges keresést kínál, nem az, amit itt csinálunk.

Jegyzet: Ha 5000 blogbejegyzés van, akkor még mindig rendben van. .

A blog szerkezetét referenciaként fogjuk venni. Minden blogbejegyzés:

  • A cím p_title
  • URL P_URL
  • Egy összefoglaló P_SUMMARY.
  • Post tartalom P_Contentent
  • És a katergories kategória.tagname.

Forume mező, amely megegyezik a keresési kifejezéssel, megadjuk a pontszámot. A pontszám a mérkőzés fontosságán alapul:

// A pontos kifejezést a $ scorefulltitle \u003d 6 címben találja meg; // megfelel a $ SCORETITLEKEKEWORD \u003d 5 részéhez; // A pontos mérkőzések megtalálhatók az Összefoglaló $ ScoreFulmary \u003d 5-ben; // megfelel az összefoglalónak a $ scoresummarykeyword \u003d 4 részben; // A pontos mérkőzések megtalálhatók a tartalomban $ pontszámlombumentum \u003d 4; // megfelel a dokumentumnak a $ SCOREDOCholdeyword \u003d 3 részhez; // megegyezik a $ scorecategorykeykeyword \u003d 2 kategóriával; // megegyezik az URL $ dateurlkeyword \u003d 1-vel;

Mielőtt Weit elkezdte, van néhány olyan szó, amely nem járul hozzá sok a kereséshez, amelyet el kell távolítani. Példa "In", "It", "A", "A", "" .... Szűrjük meg ezeket, és szabadon adhatunk semmilyen szót, amit úgy gondolsz, hogy irreleváns. Egy másik dolog az, hogy korlátozzuk a lekérdezésünk hosszát. Nem akarunk egy felhasználót írni egy regényt a keresési mezőben, és összeomlik a MySQL szerverünkön.

// távolítsa el a felesleges szavakat a keresési kifejezésből, és adja vissza őket tömbfüggvényként FilTersearchKeys ($ lekérdezés) ($ lekérdezés) ($ Query \u003d trim (preg_replace ("/ (" / (\\ s +) + / "," ", $ lekérdezés)); $ Words \u003d Tömb (); // bontsa ki ezt a listát a szavakkal. $ List \u003d Array ("in", "It", "A", "A", ",", "," YOU " , "Én", "én", "nekünk", "Ők", "Ő", "Ő", "-," ", de", "", "ez", "azok", ", aztán") $ c \u003d 0 ; Foreach (felrobban (", $ lekérdezés) $ gombbal) (ha (in_array ($ billentyű, $ lista) (folytatás,) $ Words \u003d $ billentyű; ha ($ c\u003e \u003d 15) (Break,) $ c ++;) $ szavak visszaállítása;) // A szavak korlátozása karakterek száma Limitchars ($ lekérdezés, $ limit \u003d 200) (Return Substr ($ lekérdezés, 0, $ limit);)

A segítő funkciók most korlátozhatják a karakterszámot és szűrhetik a haszontalan szavakat. Az út végrehajtja az algoritmusunkat, ha minden alkalommal pontszámot ad, találunk egy mérkőzést. Meg fogjuk illeszteni a szavakat, ha az IF nyilatkozatot és felhalmozódnak pontokat, ahogyan több szóval találkozunk. Végül használhatjuk az eredményeket az eredmények rendezéséhez

Jegyzet: Nem fogom bemutatni, hogyan kell csatlakozni a MySQL adatbázishoz. Ha problémái vannak ahhoz, hogy hatékonyan csatlakozzon az adatbázishoz, javasoljuk, hogy ezt olvassuk.

Először adjunk egy szerkezetet először. MEGJEGYZÉS A helyőrzőt elhagytam, így elválaszthatunk részeket.

Funkciókeresés ($ lekérdezés) ($ lekérdezés \u003d trim ($ lekérdezés); ha (MB_STRLEN ($ lekérdezés) \u003d\u003d\u003d 0) (// nem szükség valamire Üres kereső? Vissza a hamis; ) $ Lekérdezés \u003d Limitchars ($ lekérdezés); // mérési pontszámok $ scorefulltitle \u003d 6; $ ScoretitleKeyword \u003d 5; $ SCOREFULLSUMARY \u003d 5; $ scoresummarykeykeyword \u003d 4; $ score Fullldocument \u003d 4; $ SCOREDOCHOCKKEYWORK \u003d 3; $ scorecategoryKeyword \u003d 2; $ scoreurlkeyword \u003d 1; $ Kulcsszavak \u003d FiltersearchKeys ($ lekérdezés); $ Escquery \u003d DB :: Escape ($ lekérdezés); // lásd a fenti megjegyzést, hogy megkapja a DB objektumot $ titlesql \u003d tömb (); $ sumsql \u003d tömb (); $ docsql \u003d tömb (); $ KategóriaSQL \u003d tömb (); $ urlsql \u003d tömb (); / ** Egyezés teljes előfordulási helyek tulajdonosa ** / ** A kulcsszavak megfelelő tulajdonosa ** / $ sql \u003d "Válassza a P.P_ID, P.P_TITLE, P.P_DATE_PUSTID, P.P_URL, P.P_SUMMARY, P.P_CONTENT, P .Humbnail, (- cím pontszám .implode ("+", $ titlelesql). ") + (- Összefoglalás" .implode ("+", $ sumsql). ") + (- dokumentum". Implode ("+", $ DOCSQL). ") + (- címke / kategória" .implode ("+", $ kategória). ") + (- URL .Implode (" + ", $ urlsql)")) P.Status \u003d "Megjelent" releváns\u003e

A lekérdezés során minden pontszámot a relevancia változóként fogják összegezni, és felhasználhatjuk az eredmények rendezéséhez.

A teljes előfordulások egyeztetése.

Biztosítjuk, hogy először van-e kulcsszavak, majd hozzáadjuk a lekérdezést.

Ha (COUNT ($ Kulcsszavak)\u003e 1) ($ titlesql \u003d ", ha (P_TITLE", mint "%. $ Escquery."% ", ($ Score FulllLle), 0)"; $ Sumsql \u003d "Ha (P_Summany, mint a"% ". $ Escquery. "%", ($ scorefullsummary), 0) ", $ docsql \u003d" Ha (P_Content ", mint"% "." $ Escquery. "%", ($ score fullldocument), 0) ";)

Ezek a magasabb pontszámú mérkőzések. Ha a keresési kifejezés megegyezik egy olyan cikket, amely ezeket tartalmazza, akkor magasabban fogják megjeleníteni a tetején.

A kulcsszavak előfordulása.

Minden kulcsszón keresztül hurok vagyunk, és ellenőrizzük, hogy megfelelnek-e a mezők bármelyikével. A kategóriák mérkőzéséhez egy al-lekérdezés, mivel a bejegyzés több kategóriájával rendelkezik.

Foreach ($ kulcsszavak, mint $ kulcs) ($ titlesql \u003d ", ha (P_TITLE, mint a"% ". DB :: Escape ($ billentyű)."% ", ($ ScoretleKeyword), 0)"; $ Sumsql \u003d "Ha (P_SUMMARY) Mint "%." DB :: Escape ($ billentyű). "%", ($ Scoresmarykeykeykeyword), 0) "; $ docsql \u003d" Ha (P_Content "%." DB :: Escape ($ billentyű). " ", ($ Scoredocumenteyword), 0)", $ urlsql \u003d "Ha (P_URL tetszik"%. "DB :: Escape ($ billentyű)."% ", ($ Scoreurlkeyword), 0)" $ kategóriáskapcsoló \u003d ", ha ( (Válassza ki a számlálást (kategória.tag_id) a kategóriában Csatlakozzon a Post_Category.tag_id \u003d kategória.tag_id, ahol Post_Category.post_id \u003d P.Post_ID és kategória \u003d "" .db :: menekülés ($ billentyű). " 0, ($ ScorecategoryKeyword), 0) ";)

Az alábbi kommentár rámutatott, meg kell győződnünk arról, hogy ezek a változók nem üres tömbök, vagy a lekérdezés sikertelen lesz.

// csak az üres, add hozzá 0, ha (üres ($ titlesql)) ($ titlesql \u003d 0;), ha (üres ($ sumsql)) ($ sumsql \u003d 0;) Ha (üres ($ docsql)) ( Üres $ docsql \u003d 0;), ha (üres ($ urlsql)) ($ urlsql \u003d 0;), ha (üres ($ TAGSQL)) ($ TAGSQL \u003d 0;)

Végül a kérdések összefonódnak, és együtt adják hozzá, hogy meghatározzák a poszt relevanciáját a keresési kifejezésre.

// távolítsa el a felesleges szavakat a keresési kifejezésből, és adja vissza őket tömbfüggvényként FilTersearchKeys ($ lekérdezés) ($ lekérdezés) ($ Query \u003d trim (preg_replace ("/ (" / (\\ s +) + / "," ", $ lekérdezés)); $ Words \u003d Tömb (); // bontsa ki ezt a listát a szavakkal. $ List \u003d Array ("in", "It", "A", "A", ",", "," YOU " , "Én", "én", "nekünk", "Ők", "Ő", "Ő", "-," ", de", "", "ez", "azok", ", aztán") $ c \u003d 0 ; Foreach (felrobban (", $ lekérdezés) $ gombbal) (ha (in_array ($ billentyű, $ lista) (folytatás,) $ Words \u003d $ billentyű; ha ($ c\u003e \u003d 15) (Break,) $ c ++;) $ szavak visszaállítása;) // A szavak korlátozása karakterek száma Limitchars ($ lekérdezés, $ limit \u003d 200) (Return Substr ($ lekérdezés, 0, $ limit);) Funkciókeresés ($ lekérdezés) ($ lekérdezés) \u003d Trim ($ lekérdezés); ha (MB_STRLEN ($ lekérdezés) \u003d\u003d\u003d 0) (// nincs szükség az üres keresésre jobbra? Visszatérés hamis;) $ Query \u003d Limitchars ($ lekérdezés); // súlyozási pontszámok $ score full \u003d 6 ; $ ScoretitleKeyword \u003d 5; $ scorefullsummary \u003d 5; $ scoresMesmaryKeyword \u003d 4; $ ScoresFuldocument \u003d 4; $ SCoredocumentKeyword \u003d 3; $ ScorecategoryKeyword \u003d 2; $ scoreurlke yword \u003d 1; $ Kulcsszavak \u003d FiltersearchKeys ($ lekérdezés); $ Escquery \u003d DB :: Escape ($ lekérdezés); // lásd a fenti megjegyzést, hogy megkapja a DB objektumot $ titlesql \u003d tömb (); $ sumsql \u003d tömb (); $ docsql \u003d tömb (); $ KategóriaSQL \u003d tömb (); $ urlsql \u003d tömb (); / ** A teljes események ** / ha (COUNT ($ Kulcsszavak)\u003e 1) ($ titleSql \u003d ", ha (P_Title, mint a"% "." $ Escquery. "%", ($ Score full), 0) "; $ Sumsql \u003d "Ha (P_SUMMARY, mint"% "." $ Escquery. "%", ($ Scorefullsummary), 0) ", $ docsql \u003d", ha (P_Content ", mint"%. $ Escquery. "%", ($ Score Fulldocument), 0 ) ";) / ** kulcsszavak ** / foreach ($ Kulcsszavak, mint $ kulcs) ($ titleSql \u003d", ha (P_TITLE, mint a "%". DB :: Escape ($ billentyű). "%", ($ ScoretitleKeyword). , 0) "; $ sumsql \u003d" Ha (P_SUMMARY, mint a "%". DB :: Escape ($ billentyű). "%", ($ Scoresmarykeykeykeyword), 0) "; $ docsql \u003d" Ha (P_Content "%" .Db :: Escape ($ billentyű). "%", ($ SCOREDOCUCHACKEKKEYWORD), 0) "; $ URLSQL \u003d" Ha (P_URL tetszik "%." DB :: Escape ($ billentyű). "%", ($ Scoreurlkeyword), 0) "$ kategóriaSQL \u003d" Ha ((válassza ki a számot (kategória.tag_id) a Post_Category-ból a Post_Category.Tag_ID \u003d kategória.tag_id, ahol Post_Category.post_ID \u003d P.POST_ID és Kategória \u003d "". DB: : Menekülés ($ billentyű). "" ")\u003e 0, ($ scorecategorykeykeykeyword), 0)";) // csak incase Ez üres, add 0, ha (üres ($ titlesql)) ($ titleql \u003d 0; ha. (Üres ($ sumsql)) ($ sumsql \u003d 0; ) Ha (üres ($ docsql)) ($ docsql \u003d 0;), ha (üres ($ urlsql)) ($ urlsql \u003d 0;) Ha (üres ($ TAGSQL)) ($ TAGSQL \u003d 0;) $ SQL \u003d " Válassza a P.P_ID, P.P_TITLE, P.P_DATE_PUBLISH, P.P_URL, P.P_SUMMARY, P.P_CONTENT, P.Thumbnail, ((- cím pontszám .implode ("+", $ titlelesql). ") + (- Összefoglaló" .implode ("+", $ sumsql). ") + (- dokumentum" .implode ("+", $ docsql). ") + (- címke / kategória" .implode ("+ ", $ KategóriaSQL).") + (- URL ".Implode (" + ", $ urlsql).")) Olyan relevancia a P Postból, ahol P.Status \u003d "Megjelent" relevancia\u003e 0 Rendelés relevanciával .Page_views desc limit 25 "; $ Eredmény \u003d db :: lekérdezés ($ sql); Ha (! $ eredmények) (vissza a hamis;) $ -t eredmények visszaállítása; )

Most a Search.php fájlja így néz ki:

$ TYME \u003d BETSET ($ _ get ["lekérdezés"])? $ _ Kap ["lekérdezés"]: ""; $ Search_Results \u003d Keresés ($ kifejezés); If (! $ Search_results) (Echo "Nincs találat" exit;) // nyomtatási oldal eredmények itt.

Egy egyszerű keresési algoritmust hoztunk létre, amely tisztességes mennyiségű tartalmat kezelhet. Önkényesen választottam az egyes mérkőzések pontszámát, szabadon csíphetem azt valami, ami a legjobban működik az Ön számára. És mindig van hely a javításra.

Jó ötlet, hogy nyomon kövesse a felhasználókból származó keresési kifejezést, így látható, hogy a legtöbb felhasználó ugyanazt keresi-e. Ha van egy minta, akkor megmentheti őket egy utazás, és csak az eredmények gyorsítótárát használhatja Memcached.

Ha szeretné látni ezt a keresési algoritmust az akcióban, menjen előre, és próbálja meg keresni egy cikket az oldal tetején található keresőmezőn. Hozzáadtam az extra funkciókat, mint a visszatérő rész, ahol a meccs megtalálható a szövegben. Nyugodtan adjon hozzá funkciókat a tiédhez.

Tetszett ez a cikk? Feliratkozhatsz arra, hogy olvassa el a félelmetes olvasást. .

Egy kapcsolódó megjegyzésben itt van néhány érdekes cikk.

Ha van egy dolog, a webszerver mindennapi ISS-et csatlakozik az adatbázishoz. Most már sok éven át használtam a PHP-t, de ha megkérném, hogy írjak egy szkriptet, hogy eljutjanak az adatokat az adatbázisból, amit nem tudtam "t csinálni anélkül, hogy visszamennénk a végső PHP kézikönyvbe, hogy néhány példát találjon először.

Néhány hónappal ezelőtt frissítettem a PHP verzióját. PHP 5.4 - 5,5. Soha nem volt probléma a PHP frissítése előtt. Szorosan követem a fejlődését, és megpróbálom eltávolítani az elavult funkciókat, mielőtt hivatalosan eltávolították őket. De ezúttal elkaptam az őrséget. Csendesen megszakította a honlapom részét a legszélesebbebb okért.

Megjegyzések (45)

Zarayel. 2015. augusztus:

Ian Musthafa. 2015. szeptember 26:

Rabol 2015. szeptember 29:

ajánlás. 2016. február:

Ivan Venediktov. 2016. április 9.

2016. április 30-án frissítve

Megmutatom, hogyan lehet egyszerű keresést létrehozni a PHP és a MySQL segítségével. Megtanulod:

  • Hogyan kell használni. Kap és. Post módszer.s.
  • Csatlakozás az adatbázishoz.
  • Kommunikáljon az adatbázissal.
  • A megfelelő adatbázis-bejegyzések keresése a szó vagy kifejezés után
  • Megjelenítési eredmények.

Készítmény.

Ön shald van Apache, MySQL és PHP telepítve és futás közben (használhat különböző platformokra vagy wampra windows esetén, MAMM MACH) vagy olyan webszerver / hosting, amely támogatja a PHP és a MYSQL adatbázisokat.

Hozzon létre adatbázist, táblázatot, és töltse ki néhány bejegyzéssel, amit kereshetünk a kereséshez:

  • Menjen a PHPMYADMIN-hez, ha van a szerver a számítógépen, akkor hozzáférhet a http: // localhost / phpmyadmin /
  • Adatbázis létrehozása, én hívtam az enyém tutorial_earch
  • Táblázat létrehozása 3 mezőt használtam, hívtam az enyém cikkeket.
  • Konfiguráció az 1. mezőhöz. Név: ID, Típus: Int, Check Auto_Increment, Index: Elsődleges

Int azt jelenti, hogy egész szám
Auto_increment azt jelenti, hogy az új bejegyzések más (magasabb) számmal rendelkeznek, mint az előző
Index: Elsődleges azt jelenti, hogy az egyedi kulcs a sor azonosítására szolgál

  • 2. mező: Név: Cím, Típus: Varchar, Hossz: 225

Varchar azt jelenti, hogy szöveges szöveget, maximum 225 karaktert (meg kell adni a maximális hosszat), használd a címekhez, nevek, címek
hossza azt jelenti, hogy a "t hosszabb, mint 225 Charactser (beállíthatja, hogy alacsonyabb számra, ha akarja)

  • 3. mező: Név: Szöveg, Típus: Szöveg

A szöveg azt jelenti, hogy hosszú string, ez nem szükséges a hosszúság meghatározásához, használd hosszú szöveget.

  • Töltse ki a táblázatot néhány véletlenszerű cikkekkel, például: CNN, BBC stb.). Kattintson a Beillesztés gombra a felső menüre, és másoljon szöveget egy adott mezőkre. Hagyja üresen az "ID" mezőt. Helyezzen be legalább háromra.

Úgy néz ki, mint ez:

  • Hozzon létre egy mappát a kiszolgáló könyvtárában és két fájlban: Index.php és Search.php (valójában mindent megtehetünk egy fájlnál, de hagyja, hogy két, akkor könnyebb lesz)
  • Töltse ki őket alapértelmezett HTML jelöléssel, Doctype, fej stb.

Keresés.

  • Hozzon létre egy űrlapot a keresési mezővel és küldje be az index.php-ben, használhatja a Get vagy Post módszert, állítsa be a keresetet a Search.php-hez. A "lekérdezés" nevet használom a szövegmező nevével

Get - azt jelenti, hogy az Ön adatait URL-ben tárolják (http: //localhost/tutorial_search/search.php? Lekérdezés \u003d Óvat.)
Post - azt jelenti, hogy információ Won „T jeleníthető Ezt alkalmazzák a jelszavak, bizalmas adatokat, sokkal biztonságosabb, mint Get

OK, lépjen el a PHP-vel.

  • Open Search.php.
  • Indítsa el a PHP-t ()
  • Csatlakozás egy adatbázishoz (olvassa el a következő kódot)

< to > $ Lekérdezés \u003d mysql_real_escape_string ($ lekérdezés); // Biztosítja, hogy senki ne használja az SQL injekciót $ RAW_RESULTS \u003d MySQL_QUERY-t ("Válassza ki a * cikkeket, ahol (` cím "hasonló"%. "$ Lekérdezés."% ") Vagy (" Text` Like "%. ) ") Vagy Die (mysql_error ()); // * azt jelenti, hogy kiválasztja az összes mezőt, akkor is írhat: `id`,` cím, `TEXT` // cikkek az asztalunk neve //"% $ lekérdezés% "az, amit keresünk ,% Azt jelenti, hogy bármit jelent, például ha $ lekérdezés Hello // A "Hello", a "Hello Man", a "Gogohello" megegyezik, ha pontos mérkőzést szeretne használni `Cím \u003d" $ Query "//, vagy ha szeretné Ahhoz, hogy megfeleljen a teljes szó, így a "Gogohello" nem használja a "% $ lekérdezés%" ... vagy ... "$ lekérdezés%" ... vagy ... "% $ lekérdezés", ha (mysql_num_rows ($ Raw_Results)\u003e

"$ eredmények [" Cím "]."

". $ eredmények [" szöveg "]."

"// Az adatbázisból származó eredmények (cím és szöveg) az ID-t is megmutathatja ($ EREDMÉNYEK [ID"]))))))) más (//, ha nincs megfelelő sorok a következők: echo "Nincs eredmények";)) (// Ha a lekérdezés hossza kisebb, mint a minimális visszhang "minimális hossza". $ Min_length;)?\u003e

Kész!

Most működik. Próbáljon különböző szavakat, változatokat, szerkesztési kódot, kísérletet. Mindkét fájl teljes kódját adom hozzá, ha úgy gondolja, hogy hiányzott valamit. Kérdezhetsz kérdéseket, vagy kérjen oktatóanyagokat.

index.php.

Keresés.

search.php.

Keresési eredmények. \u003d $ min_length) (// Ha a lekérdezés hossza több vagy egyenlő minimális hossz, akkor $ Query \u003d htmlspecialchars ($ lekérdezés); // a HTML-ben használt karakterek az egyenértékűek számára, például:< to > $ Lekérdezés \u003d mysql_real_escape_string ($ lekérdezés); // Biztosítja, hogy senki ne használja az SQL injekciót $ RAW_RESULTS \u003d MySQL_QUERY-t ("Válassza ki a * cikkeket, ahol (` cím "hasonló"%. "$ Lekérdezés."% ") Vagy (" Text` Like "%. ) ") Vagy Die (mysql_error ()); // * azt jelenti, hogy kiválasztja az összes mezőt, akkor is írhat: `id`,` cím, `TEXT` // cikkek az asztalunk neve //"% $ lekérdezés% "az, amit keresünk ,% Azt jelenti, hogy bármit jelent, például ha $ lekérdezés Hello // A "Hello", a "Hello Man", a "Gogohello" megegyezik, ha pontos mérkőzést szeretne használni `Cím \u003d" $ Query "//, vagy ha szeretné Ahhoz, hogy megfeleljen a teljes szó, így a "Gogohello" nem használja a "% $ lekérdezés%" ... vagy ... "$ lekérdezés%" ... vagy ... "% $ lekérdezés", ha (mysql_num_rows ($ Raw_Results)\u003e 0) (// Ha egy vagy több sorot visszaküldik, míg ($ eredmény \u003d mysql_fetch_array ($ RAW_RESULTS)) ($ RAW_RESULTS)) ($ RAW_RESULTS)) (// $ Raw_Results)) ($ EREDMÉNYEK \u003d MYSQL_FETCH_ARRAY ($ RAW_RESULTS) Adatokat ad az adatbázisból a tömbbe, míg ez érvényes A hurok echo "

"$ eredmények [" Cím "]."

". $ eredmények [" szöveg "]."

"// Az adatbázisból származó eredmények (cím és szöveg) az ID-t is megmutathatja ($ EREDMÉNYEK [ID"]))))))) más (//, ha nincs megfelelő sorok a következők: echo "Nincs eredmények";)) (// Ha a lekérdezés hossza kisebb, mint a minimális visszhang "minimális hossza". $ Min_length;)?\u003e

Ebben a cikkben megmutatom, hogyan kell létrehozni többszintű menü a PHP és a MYSQL-en. Természetesen a teremtés lehetőségei sokat találhatók, de a kérdések számának megítélése ezen a témában, szükség van rá. És ezt a cikket adom. Azonnal megjegyzem, hogy ez a cikknek csak azoknak van értelme, akik tudják PHP. és tudja, hogyan kell dolgozni Mysql. Az összes többinek először át kell mennie, vagy olvasson néhány könyvet Php és mysql.

Kezdje, hozzon létre egy táblázatot az adatbázisban az alábbi mezőkkel:

  • idézés - Egyedi azonosító.
  • cím - Horgonyhivatkozások a menüben.
  • lINK. - A cím, amelyhez a menüpont lesz.
  • szülő_id - Szülői igazolvány. Ha nincs szülői elem, akkor NULL lesz itt (vagy többet tennél).

Az asztalt rendezték, most itt az ideje Php-kód. Teljes PHP kód Az alábbiakban található:

$ mysqli \u003d új mysqli ("localhost", "root", "", "db"); // Csatlakozás az adatbázishoz
$ result_set \u003d $ mysqli-\u003e lekérdezés ("Válassza ki a * menüpontot"); // Mi a minta az összes bejegyzésről az asztalról a menüvel
$ elemek \u003d tömb (); // tömb a menüelemekhez
míg (($ Row \u003d $ resert_set-\u003e fetch_assoc ())! \u003d FALSE) $ tételek [$ sor [«id]] \u003d $ sor; // töltse ki a minta tömbét az adatbázisból
$ Childrens \u003d Array (); // a szülői elemek megfelelőségének tömbje
Foreach ($ tételek $ item) (
Ha ($ tétel ["szülő_id"] $ Gyermek [$ tétel [id "]] \u003d $ tétel [" Parent_id "]; // töltse ki a tömböt
}
Funkció Printitelem ($ item, $ elemek, $ childrens) (
/ * A menüpont megjelenítése * /
Echo "

  • ";
    Echo ". $ Tétel [" cím "]." "
    $ ul \u003d hamis; // Megjelenik a gyermekelemek?
    Míg (TRUE) (
    / * Infinite hurok, amelyben minden gyermekelemet keresünk * /
    $ Key \u003d Array_Search ($ tétel [ID "], $ childrens); // egy gyermek elemet keresünk
    Ha (! $ billentyű) (
    / * Lányok nem található * /
    Ha ($ ul) echo ""; // Ha a gyermekelemek kimenetek, zárja be a listát
    Szünet; // jöjjön ki a ciklusból
    }
    ($ Gyermek [$ billentyű]); // törölje a talált elemet (úgy, hogy ne jelenjen meg újra)
    Ha (! $ ul) (
    Echo "
      "; // elkezdjük a belső listát, ha a gyermekelemek még nem voltak
      $ Ul \u003d true; // Állítsa be a zászlót
      }
      Echo Printitelem ($ elemek [$ Key], $ elemek, $ childrens); // rekurzívan megjeleníti az összes gyermek elemet
      }
      Echo "";
      }
      ?>

      Ez a kód teljesen munkavállaló, azonban meg kell értened, hogy senki sem írja (különösen a következtetésről visszhang. Html tagov). És az Ön feladata, hogy az algoritmust ebből a kódból, de nem maga a kódot. Ezután ez az algoritmus csatlakozik a motorhoz. Megpróbáltam gondosan megjegyezni a kimeneti kódot többszintű menü a PHP és a MYSQL-enTermészetesen ez nem a leglátványosabb, és jó kezdeti tudást igényel. Ha még mindig tudod Php és mysqlAztán először azt javaslom, hogy átmegyek

      Férfi születésnapi szkript különös figyelmet igényel. Végtére is, az erős padló általában szigorúan értékeli a nyaralás formátumát. Az ünnepek hatalmas tapasztalata lehetővé teszi, hogy megtalálja a tökéletes forgatókönyvet a születésnapi, a karakter raktárától és a születésnapi tisztek érdekeitől függően. Például kínálunk a születésnapi férfiak forgatókönyvét, akik az ügyfeleinkkel legnépszerűbbek:

      Vezető kiejtés pirítós a születésnapi szobában És befejezze őt a szavakkal:

      Pezsgő szemüvegben
      És mindent együtt inni az alján!
      A fiatalok számára a toast, amit emelünk,
      És az ifjúság nem egyedül van!

      Az első kör befejeződött, egy új, egy új,
      Ön csatlakozott a második ifjúsághoz.
      Férfi kiemelkedő, erős és egészséges,
      Tele van friss ötletekkel és erővel.

      Szintén energikus maradjon
      Végül is sok éven át nem működött hiába!
      Szóval vicces, szép,
      És hagyja, hogy a sors tartsa meg a bajokat!

      A vendégek az ünneplés elkövetőjére kerülnek Ősi cigány romantika
      (Kettő fenntartható, és a többiek felveszi a kórust):

      A szemüveget öntjük
      Bennük csillogó borostyán,
      És az arcok világítanak
      Milyen komikus hajnal!

      Borral, vágyakozással,
      Világít
      És a pirítóst a szívre kéri:
      Inni az évfordulót!

      Énekkar:

      Kórusunk antik ősi,
      Pours Champagne River!
      Önnek, barátunk szeretett,
      Születésnapi könyvünk (talán név) Kedves!

      Mi lehet csodálatos
      Mikor, szerelem Taya,
      Találkozunk egy daldal
      Natív és barátok!

      Hagyja, hogy az este kezdődik,
      Hogy az élet új kör,
      És minden álom valóra válik,
      És minden virágzik!

      Énekkar:
      Fenékig! Fenékig! Fenékig!

      Zenei szünet.

      Majd hívja pirítós a szülők számára.

      Vezető:

      Nos, most, barátok, a pillanat jött
      Töltsön egy üveget a szülőknek!
      Azok számára, akik az élet örömét adták
      És a világon a csodálatos ajtók megtámadták,

      Azok számára, akik megtanítják őt
      És az akkumulátor relét átadta.
      Azok számára, akiknek köszönhetően, most
      Születésnapunk ülünk köztünk!

      Tehát inni a szülőknek ... (hívja őket név patronmikus)

      Zenei szünet.

      A bemutató röviden beszél a jubileum életútjáról.

      Host: És most énekeljünk "Régi dalok a nyaralás fő hőséről".

      (A vendégek énekelnek a pilótákról szóló dalok motívumán)


      Jubileum nélkül mondjuk egyenesen, nincs semmi köze.
      Az asztalnál összegyűlünk,
      Teljes szemüveg Nalmes
      És az ő egészségügyi dalaira énekelünk:

      Itt az ideje, hogy megjegyezzük
      És ez a nap találkozni

      Hadd húsz és nem harminc, hadd!
      Nem csökkenti a korlátodat!
      Nézd, hogy szigorúan leszünk
      Nem bántasz minket, akkor is tudod!

      Látjuk bátor, bátor, bátor
      Férfi karcsú, gyönyörű, göndör!
      Hagyja, hogy a sorozat évek óta megy
      De mindig szeretnénk
      A lelked fiatal maradt!

      Itt az ideje, hogy megjegyezzük
      Itt az ideje, hogy megünnepeljük, ünnepeljük a dicsőséges évfordulót!
      És ez a nap találkozni
      A rokonok nagy társaságában, barátok!

      Hagyja, hogy a sors néha kegyetlen legyen hozzánk, engedje!
      Válaszul, elengedte a vicceket!
      Kövesse ugyanezt szigorúan
      Ne ismerkedjen meg a kétségbeesés!

      Ma este este este este
      Drága jubileum nélkül nincs semmi köze!
      Egyszer inni fogunk, akkor kettőt fogunk inni
      Az évforduló és ügyekért,
      De holnap nem ártam a fejem!

      Mi vagyunk jubileumi szerelem, tisztelet
      És gratulálunk!

      (A vendégek énekelnek egy csengőhangon "Nem tudok nekem a születésnapodon ..." :)

      Nem tudjuk a születésnapodon
      Kedves Mercedes,
      De egy ajándék, kétségtelenül
      És készen áll arra, hogy ismételje meg százszor:

      Hogy kedves vagy, vidám, figyelmes
      És az általánosan elfogadott különlegesek,
      Mit csodálsz
      És elvtárs, és férj, és apa!

      Vezető:

      Gratulálunk Önnek a lélektől
      Valamint az útlevél kora,
      Végtére is, azt mondja, kedves, a mosolyod,
      Mi körülbelül tíz éve az útlevél-hiba!

      (A vendégek énekelnek a katona dalának motívumában "Az út messze van tőlünk ...")

      Születésnapi ember - bátor srác
      Nézd meg a Sokol-t a rangsorban!
      Tiszteletben tartja mindenkit, akit jogosan
      És a szolgálatban, mint a csatában!

      Énekkar:

      ________ (születésnapi név) az úton! Hagyjuk az utat! Hagyjuk az utat!
      Száz évig elérje
      És erős marad
      A sors hívja Önt!
      ________ (születésnapi név) előre!

      Kedves Jubileum.
      Gratulálunk a lélektől!
      És a medál kézzel, és egy ajándék
      A nagy érdemeiben!

      Énekkar.

      Az Anniversarier ajándékot és emlékezeteset kap medal felirattal: "Nagyszerű munkában, barátság és szeretet." (Az érme kitölthető a fáról, és lógni a születésnapi parti nyakán a szalagon

      Verseny a témában: "Ki ismeri a születésnapot"!

      A bíró maga lesz a születésnapja.
      A vezető kérdéseket tesz fel, és bemutatja a zsetonokat a megfelelő válaszokhoz. Az, aki a játék végén a legnagyobb számú zseton tulajdonosa lett, díjat kap a születésnapi ember ügyvédjével.

      Zenei szünet.

      Kvíz a születésnapokon

      Kedves barátaim! Próbáljuk meg meghatározni a nagyon erudit vendéget! A téma természetesen még mindig ugyanaz - születésnap. Csak az életben, de a képernyőn!

      Minden helyes vagy szellemes válasz esetében egy chipet kapunk. A kvíz után a legtöbb zsetonra díjat kapnak. Például csokoládé. Ha a vendégek nem tudják kitalálni, a vezetőnek kérnie kell, hogy egy kicsit emlékeztesse ezt a filmet.

      Képregény kérdések és válaszok

      Két kanapé van kérdésekkel és válaszokkal. Először egy személy bejelenti, hogy kinek kérdezi a kérdést, húzza a kérdést és olvassa el. A kakasokat a válaszokkal választja ki, akinek hívja. Aztán az, aki hívta, kihúzza a választ és olvas. Aztán azt is bejelenti, hogy kinek fog kérdezni, felhúzza a kérdést és olvassa el. Stb.

      Táncol a csapat vezetője

      Üdvözlő telegramok - Riddles (beleértve a vendégeket is)

      Vezető bejelentések: Tanya Gratulációs telegramok jöttek, de mindannyian aláírás nélkül. Ki kell kitalálnod a feladónak. Ezek jól ismert emberek, valamint a vendégek. És még mesés hősök is!

      Hadd suttogjunk a szeretetre a fülön!
      Tsarevna a becenévhez ... Béka

      Csak vintage borokat akarok inni!
      Boldog nyaralás neked! ... Malvina

      Szeretnék gyakrabban énekelni a gitár alatt!
      Jó társaság neked! ... Rotaru.

      Nem szeretném, ha nem felel meg a nem tervezett szeretetnek!
      Hello te zenész ... Bulanova

      Élő, Seryozha, szórakoztató és hűvös!
      Ne felejtsd el a gyermekkor! ... Királynő

      Sok zenét és nevetést kívánok,
      szerelem és Örök Ifjúság! ... Pieha

      Hagyja, hogy a pénz mindig a fügere menjen!
      És csirke lábak! ... Baba yaga

      Mert gyakrabban a területen és az erdőben!
      Egészség Önnek erős! ... Alsu

      sereg Soha ne engedje!
      Nagy hello az anya! ... Orloe.

      Ne menj be a PE és a Shootoutba!
      Hosszú életet kívánok! Csoport… Nyilak

      Az, aki először adta a helyes választ, kapjon zsetonokat. A legtöbb zseton számára díjat kapnak.

      Lottó rejtély

      A díjat kapja, aki kitalálta, hogy a táskában lévő vezetés tárgya. Felkérheti a vezető kérdéseket. "Igen" vagy "Nem" válaszol.

      Lottó - előrejelzés

      Mindenki megteszi a jegyeket, vagy viccet kap, aneCdote. A bemutató során a rajz azt mondja:
      - Most megtapasztaljuk a sorsot, és megtudjuk, mit főzött.
      Ajándékok adása, az első szobából kezdve, és elolvassa az előrejelzést az elkövetkező évre.

      Teszt "Rajzoljon egy nem létező állatot"

      Ön kéri a vendégeket, hogy rajzoljanak egy nem létező állatot, írjanak nevét.

      Teszt "Rajzoljon egy kis embert"

      Szükség van egy 12 számú személyre: minden formát kell használnia - kör és háromszögek, négyzetek. (Az összegben 12)

      Az esti megkötéseknél a vendégeket a születésnapi telefonhoz tartozó fiók megnyitása. Ezt követően, hogy elviseljük a 3. - egy literes jarot, ahol minden vendég eldobhat az első tízbe.