ሰውየው የፍለጋ ፒኤችፒ እይታ አለው። በ mySQL ውስጥ ደህንነቱ የተጠበቀ እና ምቹ ፍለጋ። ከሩቅ የመጣ ሰው

በፍለጋው አተገባበር ላይ አጭር መረጃ፡ የሕብረቁምፊ ሂደት፣ የአገልግሎት ቁምፊዎችን መቁረጥ፣ የውሂብ ጎታ መጠይቅን፣ አመክንዮ፣ የገጽ ውፅዓት፣ ተዛማጅነት።

ክፍል 1: አጠቃላይ መግለጫዎች

የሕብረቁምፊ ሂደት

መጀመሪያ ማድረግ ያለብዎት ክርቱን በእጆችዎ መቁረጥ ነው.

$ ፍለጋ = ንዑስ ($ ፍለጋ, 0, 64);

ለተጠቃሚው ለመፈለግ 64 ቁምፊዎች በቂ ይሆናሉ።

አሁን ሁሉንም "ያልተለመዱ" ምልክቶችን በጋለ ብረት እናቃጠል.

$ search = preg_replace("/[^\ w\x7F-\xFF\s]/", "", $search);

በንድፈ ሀሳብ ለተጠቃሚው በጣም አጭር ቃላትን በመጠቀም ለመፈለግ እድሉን መስጠት የለብዎትም - ከሌሎች ነገሮች በተጨማሪ ይህ አገልጋዩን በእጅጉ ይጭናል ። እንግዲያው, ከሁለት ፊደሎች በላይ በሆኑ ቃላት ብቻ እንዲፈልጉ እንፍቀድ (ገደቡ የበለጠ ከሆነ, "(1,2)" በ "(1, የቁምፊዎች ብዛት)" መተካት ያስፈልግዎታል).

$good = trim(preg_replace("/\s(\S(1,2))\s/","", ereg_replace("+","","$ search ")));

እና መጥፎ ቃላትን ከተተካ በኋላ, ድርብ ቦታዎችን መጠቅለል ያስፈልግዎታል (በተለይ ለአጭር ቃላት ትክክለኛ ፍለጋ የተሰሩ ናቸው).

$good = ereg_eplace("+", "", $good);

እንበል ለተጠቃሚው የፍለጋ አመክንዮ እንዲመርጥ እድል መስጠት እንፈልጋለን - ሁሉንም ቃላት ይፈልጉ ወይም ከብዙዎች ውስጥ አንዱን ብቻ ይፈልጉ። እንደ Yandex ውስጥ ማድረግ ከፈለጉ - ሁለት አምፐርሳንድ ማለት "እኔ" (ቃል1&&word2&word3) ወይም ሌላ ነገር ማለት ነው፣ እንግዲህ እኔ አማካሪ አይደለሁም። በትንሽ ድረ-ገጽ imho ላይ በክር ያለው ሞኝነት ለጠፋው ጊዜ ዋጋ የለውም። ስለዚህ የፍለጋ ቅጹን እንደሚከተለው እንሳልለን-

ማንኛውንም ቃላት ፈልግ ሁሉንም ቃላት ፈልግ

እና በፍለጋ ስክሪፕት ውስጥ ተጠቃሚው ምን እንደገባ እንደገና እንፈትሻለን-
ከሆነ (($logic!="AND") && ($logic!="OR"))

$logic = "OR";

አመክንዮው እንዴት ጥቅም ላይ እንደሚውል ከዚህ በታች ቀርቧል።

የፍለጋ ስታቲስቲክስ

የሠንጠረዡን ስንት ረድፎች እንዳገኘ ወዲያውኑ ለተጠቃሚው ማሳወቅ ጥሩ ይሆናል። ይህንን ለማድረግ ለመረጃ ቋቱ ተጨማሪ ጥያቄ ቀርቧል፡-

$query = "ከሠንጠረዡ ላይ መታወቂያ ምረጥ የት መስክ እንደ"%" str_replace(" ", "%" ወይም መስክ LIKE "%", $good) "%";

በግለሰብ ቃላት ላይ ስታቲስቲክስ, የሚከተሉትን ማድረግ ይችላሉ:
$ ቃል = ፍንዳታ (" ", $ ፍለጋ); ሳለ (ዝርዝር($k፣ $v) =እያንዳንዱ($ቃል)) (strlen($v)>2 ከሆነ) $stat="$v:" mysql_num_rows(mysql_query("ከሠንጠረዥ መታወቂያ ምረጥ የት መስክ" %$v%"))); $word_stats = "የቃላት ስታቲስቲክስ፡"። implode("""$stat)። "

"፤ አልተዋቀረም($stat);

ደህና፣ አንዴ የፍለጋ አቀማመጥ እና በርካታ የፍለጋ ውጤቶች ረድፎች ካሉን፣ ገጽ-በገጽ ፍለጋ ማድረግ አንድ ኬክ ነው።

የ$ ገጽ ተለዋዋጭን እንፈትሻለን (ከ 0 ያላነሰ፣ ከ$ ውጤቶች_መጠን/$ ረድፎች_in_ገጽ ያልበለጠ) የረድፎችን ብዛት በሚቆጥረው ጥያቄ (ከላይ ያለውን ይመልከቱ) የምንፈልጋቸውን መስኮች እና ለመደርደር መስኮችን እንጽፋለን። እና ከዚያ እንጨምራለን

ከሆነ ($ገጽ==0) $ጥያቄ .= "LIMIT $rows_in_page"; ሌላ $ጥያቄ = "LIMIT". $ገጽ*$ረድፎች_በገጽ. """ $ረድፎች_በገጽ;

(አገባብ፡ LIMIT ወይም LIMIT፣)

እንዲህ ዓይነቱን ጥያቄ በመተግበር ምክንያት በገጹ ላይ መታየት ያለባቸውን ተመሳሳይ መስመሮችን እንቀበላለን ፣ ለዳሰሳ ፣ ወደ ቀጣዩ እና ወደ ቀዳሚ ገጾች አገናኞችን መሳል ይችላሉ ፣ ወይም ደግሞ የበለጠ አስቸጋሪ የሆነው ፣ አሰሳ ያድርጉ። በበርካታ ገፆች ላይ ባር. ($ገጽ>0) ከታተመ ("ያለፈው ገጽ

") ከሆነ ($ 0 ORDER በ relev DESC

ምንም እንኳን ቢችሉም:

  • ምረጥ *፣ ግጥሚያ መስክ AGAINST("$የፍለጋ ቃላት") ከሠንጠረዡ ጋር የሚዛመድበት መስክ ("$searchwords")> 0 ትእዛዝ በ DESC
  • ፍጥነቱ በጣም ከፍተኛ ነው - በአንዳንድ ሁኔታዎች እንኳን ከፍለጋ የበለጠ ፈጣን ነው።
  • ከላይ ያሉት ሁሉም ከ MySQL ስሪት 3.23.23 ጀምሮ ይሰራሉ

    የFULLTEXT ኢንዴክሶችን በተለያዩ መስኮች ሲፈጥሩ 2 አማራጮች አሉ፡

    TABLE ሰንጠረዥ ፍጠር (መስክ1 VARCHAR (255)፣ field2 TEXT፣ FULLTEXT (field1፣ field2)) TABLE ሰንጠረዥ ፍጠር (መስክ1 VARCHAR (255)፣ field2 TEXT፣ FULLTEXT (field1)፣ FULLTEXT (field2))

    በመጀመሪያው ሁኔታ, የሚከተለው መጠይቅ ይቻላል.

    ምረጥ *፣ ግጥሚያ መስክ1፣ መስክ 2 AGAINST("$የፍለጋ ቃላት") ከሠንጠረዥ ትእዛዝ በ DESC ተዛማጅነት

    አግባብነት ለሁሉም መስኮች በአንድ ጊዜ ይሰላል. በሁለተኛው ጉዳይ ላይ እንዲህ ዓይነቱ ጥያቄ ስህተት ይፈጥራል. እዚህ አስፈላጊነቱን እንደሚከተለው እናሰላለን-

    ምረጥ *፣ ግጥሚያ መስክ1 AGAINST("$የፍለጋ ቃላት")+MATCH መስክ2 AGAINST("$የፍለጋ ቃላት") ከሠንጠረዥ ትእዛዝ በ relev DESC ጋር በተያያዘ

    ሁለተኛው አማራጭ በመጠይቆች ውስጥ በተወሰነ ደረጃ የተወሳሰበ ነው, ሆኖም ግን, በእኔ አስተያየት የተሻለ ነው, ምክንያቱም የፍለጋ ተለዋዋጭነት ይጨምራል - ለእያንዳንዱ መስክ ለምሳሌ የአስፈላጊነት ኮፊሸን ማዘጋጀት እና የመስኮቹን አግባብነት ሲያጠቃልሉ, በዚህ ጥምርታ ማባዛት ይችላሉ. የፍለጋ ሀረጉ ከፍ ያለ ኮፊሸንት ባላቸው መስኮች ውስጥ "የበለጠ" ይፈለጋል። ለምሳሌ፣ በመረጃ ማውጫ ማውጫ ገፆች ላይ ፍለጋ እያደረግን ከሆነ፣ የገጹ ስም መስኩ ብዙውን ጊዜ የሚዘጋጀው ከሜታ መግለጫ መለያዎች ወይም ቁልፍ ቃላቶች የበለጠ ከፍ ያለ ነው።

    ክፍል 3፡ የተገቢነት መልመጃዎች

    Mysql> የጠረጴዛ መጣጥፍን ይቀይሩ ሙሉ ጽሑፍን ያክሉ (ztext); ስህተት 1073፡ BLOB አምድ "ztext" በቁልፍ ዝርዝር ውስጥ ጥቅም ላይ ከዋለ የሠንጠረዥ አይነት mysql> alter table articlea type=myisam መጠቀም አይቻልም፤ መጠይቅ እሺ፣ 36 ረድፎች ተጎድተዋል (0.60 ሰከንድ) መዝገቦች፡ 36 ብዜቶች፡ 0 ማስጠንቀቂያዎች፡ 0 mysql > ሙሉ ጽሑፍን ይቀይሩ (ztext)፣ መጠይቁ እሺ፣ 36 ረድፎች ተጎድተዋል (10.00 ሰከንድ) መዝገቦች፡ 36 የተባዙ፡ 0 ማስጠንቀቂያዎች፡ 0

    የጽሑፍ ኢንዴክሶች በ MyISAM አይነት ጠረጴዛዎች ላይ ብቻ ሊደረጉ ይችላሉ. ጽሑፎች ከጠረጴዛው ውስጥ ተወስደው ወደ መረጃ ጠቋሚው ውስጥ ይጣላሉ, እና የውሂብ ጎታው መጠን ያድጋል. ጥያቄዎችን በተመለከተ. በWHERE አንቀፅ ውስጥ የሪሌቭ መስክን መጠቀም አይችሉም፡-

    ምረጥ *፣ ከ($የፍለጋ ቃላት) ጋር አዛምድ ከሠንጠረዡ የት relev>0 ትእዛዝ በ relev DESC

    ምንም እንኳን የሚከተሉትን ማድረግ ይችላሉ-

    ምረጥ *፣ ግጥሚያ መስክ AGAINST("$የፍለጋ ቃላት") ከሠንጠረዡ ጋር የሚዛመድበት መስክ ("$searchwords")> 0 ትእዛዝ በ DESC

    የተሰላው መስክ፣ እንደ ሁሉም የአገባብ ሕጎች መሠረት በ WHERE ውስጥ መጠቀም አይቻልም፣ ግን በ HAVING ውስጥ መጠቀም ይቻላል፡-

    ምረጥ *፣ ከ("$የፍለጋ ቃላቶች") ጋር ተዛማጅነት ያለው ከሠንጠረዡ ጋር በተያያዘ relev>0 በማዘዝ በ DESC

    ኦሌግ እንደጻፈው በMATCH ፈልግ የሚከናወነው በቃሉ ብቻ ነው። ... ነገር ግን በአግባብነት ብቻ መደርደር እና LIKE የሚለውን መምረጥ ይችላሉ (ይህ በእርግጥ በአፈፃፀም ላይ ተጽእኖ ይኖረዋል, ምን ያህል እንደሆነ እንኳን አላውቅም).

    የ "relev>0" ሁኔታን እናስወግደዋለን እና መደርደሩን እንተዋለን.

    የተቀረው ልክ እንደበፊቱ አንድ ነው - የተገኘውን ሕብረቁምፊ ቆርጠን ከብዙ LIKE ኦፕሬተሮች ጋር ወደ መጠይቅ እንለውጣለን

    ከሰንጠረዡ እንደ አስፈላጊነቱ *፣መስኩን ምረጥ ("$የፍለጋ ቃላት")

    ክፍል 4፡ የጀመርነውን የቀጠለ

    በሴፕቴምበር ውስጥ የጀመርኩትን MySQL ዳታቤዝ ውስጥ በአስፈላጊነት ተደርድሬ የፍለጋውን ርዕስ እቀጥላለሁ።

    MySQL FULLTEXT indexing እና የ MATCH መስክ AGAINST ግንባታን ለሙሉ ጽሑፍ ፍለጋ ለመጠቀም የቅርብ ጊዜዎቹ የውሂብ ጎታው ስሪቶች ያቀርባል። ነገር ግን፣ ሁሉም አገልጋዮች የቅርብ ጊዜው የ MySQL ስሪት የላቸውም፣ እና ሁሉም አስተናጋጅ አቅራቢዎች በስርዓት አስተማማኝነት ምክንያት ሶፍትዌሩን ማዘመን አይፈልጉም።

    በአንድ ወቅት፣ በተዛማጅነት የተደረደረ ፍለጋ በበርካታ መጠይቆች መከናወን እንዳለበት ገምቼ ነበር፣ እና ስለዚህ፣ ይህን በፍፁም ባይፈጽም ጥሩ ነበር። አግባብነት በጥያቄው ውስጥ ሊሰላ የሚችል ሀሳቦች ከርቀት ወደ እኔ መጡ, ነገር ግን እንዲህ ያለውን ግንባታ ለመገመት ፈራሁ.

    ርዕስ፣ የቀን_ቅርጸት(ቁሳቁስ_ቀን፣%e.%c.%y) AS date1፣ IF(እንደ "%word1 word2 word3%"፣ 3*10፣ 0) + IF(እንደ "%word1%" የሚል ጽሑፍ 9, 0) + ከሆነ (ጽሑፍ እንደ "% ቃል2%"፣ 9፣ 0) + ከሆነ (ጽሑፍ እንደ "% ቃል3%"፣ 9፣ 0) እንደ አስፈላጊነቱ ከሠንጠረዡ የት ጽሑፍ እንደ "% ቃል1%" ወይም የጽሑፍ መውደድ" %word2%" ወይም እንደ"% word3%" ጽሁፍ በአግባብነት DESC፣ የቁስ_ቀን DESC

    በጣም አስፈሪ ይመስላል፣ ግን በአሮጌው MySQL ስሪቶች ላይ እንኳን ይሰራል።

    ፍጥነቱን ከዚህ ጥያቄ ጋር ለማነፃፀር ሞከርኩ፡-

    ርዕስ፣ የቀን_ቅርጸት(ቁሳቁስ_ቀን፣%e.%c.%y) እንደ date1፣ MATCH ጽሑፍ AGAINST("word1 word2 word3") ከሰንጠረዡ የት ጽሑፍ እንደ "% ቃል1%" ወይም የጽሁፍ መውደድ"%word2% "ወይም እንደ"% word3%" የሚል ጽሁፍ ይጻፉ በአግባብነት DESC፣ material_date DESC

    በአማካይ፣ የአለምአቀፍ መጠይቅ ፍጥነት አዲስ ግንባታዎችን ከሚጠቀም ግማሹ ነው። የትኛው በጣም ምክንያታዊ ነው - ተለዋዋጭነት የበለጠ ፣ የሀብቱ ጥንካሬ የበለጠ።

    እንዲህ ዓይነቱን መጠይቅ በራስ-ሰር ለመገንባት እንሞክር. ረጅሙን መስመር, እንዲሁም ሁሉንም የተሳሳቱ ቁምፊዎችን እና አጫጭር ቃላትን ቆርጠን ነበር. ጥያቄ እንሳል።

    $query = "ርዕስ ምረጥ፣ date_format(material_date,"%e.%c.%y") AS date1፣ IF(እንደ "%" ያለ ጽሑፍ። $good_words። "%"፣ ". (substr_count($good_words፣ "") ) + 1) "*10, 0) + ከሆነ("% LIKE" የሚል ጽሑፍ) 9, 0) ከጠረጴዛው ላይ እንደ አስፈላጊነቱ ጽሑፍ የት እንደ "%" str_place(" "," "%" ወይም ጽሑፍ እንደ "%", $ ጥሩ_ቃላቶች "%" በአስፈላጊነት DESC, material_date DESC";

    በጣም አስቸጋሪ አይደለም. ለታማኝነት እና የጎርፍ መከላከያ, በጥያቄው ውስጥ ያሉትን የቃላት ብዛት መገደብ ይችላሉ.

    በቀደሙት ህትመቶች ላይ አንዳንድ ተጨማሪዎች

    በሰንጠረዡ ውስጥ የሚገኙት የረድፎች ጠቅላላ ብዛት. የፍለጋ ውጤቶችን ለማሳየት ፣ በእርግጥ ፣ የ LIMIT ኦፕሬተርን መጠቀም ያስፈልግዎታል (የዚህን ግቤት ምስረታ ሁል ጊዜ ላለመፃፍ ፣ ዝግጁ የሆኑ ተግባራትን ይጠቀሙ)። በጥያቄው ውስጥ ምንም የማቧደን ስራዎች ካልተከናወኑ ፣በጥያቄው ውስጥ የረድፎችን ብዛት ወዲያውኑ መቁጠሩ የተሻለ ነው - COUNT(*) ፣ እና በ php ተግባር mysql_num_rows () አይደለም። በትላልቅ ጠረጴዛዎች ላይ ሊፈትሹት ይችላሉ. የቡድን ስራዎች ከተከናወኑ፣ በCOUNT(DISTINCT())፣ ነገር ግን ያለ GROUP BY ጥያቄ እንጠይቃለን።

    የጀርባ ብርሃን በጽሁፎቹ ውስጥ ምንም የኤችቲኤምኤል መለያዎች ከሌሉ ህይወት ቀላል ነው።

    በጽሁፉ ውስጥ መለያዎች ጥቅም ላይ ከዋሉ ሶስት አማራጮች አሉ ሀ) አታስደምሙ ለ) ተጠቃሚው መለያዎቹን ስለማያይ (በጣም ጉጉ ካልሆነ በስተቀር) ምንም የሌለበት የመረጃ ጠቋሚ መስክ መስራት ትችላለህ። tags ግን ምልክቶቹ [^\w\x7F- \xFF\s] በቦታዎች ይተካሉ (እነዚህ ቁምፊዎች ገና መጀመሪያ ላይ ከፍለጋ ሕብረቁምፊ ተቆርጠዋል, ስለዚህም በእነሱ ላይ ምንም ፍለጋ አይደረግም). በዚህ ሁኔታ, ፍለጋ እና ማድመቅ ጠቋሚውን በመጠቀም መከናወን አለበት. ሐ) ከዚህ ቀደም የ srip_tags() ተግባርን በመጠቀም መለያዎቹን ቆርጦ ከመደበኛው መስክ የተገኘ ጽሑፍን ማድመቅ።

    የፍለጋ ኮድ ሙሉ ስሪት፣ እንደ ሁልጊዜው፣ በፋይሎች ዝርዝር ውስጥ አለ።




    ሌሎች ጥያቄዎች ካሉዎት ወይም የሆነ ነገር ግልጽ ካልሆነ - እንኳን ደህና መጡ ወደ እኛ

    ተጠቃሚን በአንድ ጣቢያ ላይ ለማቆየት ምርጡ መንገድ የሚፈልገውን እንዲያገኝ መፍቀድ ነው። ለዚህ ምቹ ስርዓት ከፈጠሩ ለጣቢያዎ የመምረጥ ደረጃ ያድጋል እና ተጠቃሚው የሚፈልገውን ለማግኘት በእርግጠኝነት ይመለሳል.

    በጣቢያው ላይ መጣጥፎችን ለመፈለግ የሚያገለግል ቀላል ፣ ግን ተግባራዊ ውጤታማ የፍለጋ ቅጽ እንዴት እንደሚፈጥሩ አሳያችኋለሁ። ውጤቶቹ ያለ ምንም ዳግም ጭነት በገጹ ላይ ይታያሉ፣ ይህም መረጃን ለማቅረብ ምርጡ መንገድ መሆኑ አያጠራጥርም።

    2 ፋይሎችን እፈጥራለሁ፡ ፍለጋ.php፣ HTML እና JavaScriptን ይይዛል። ሁለተኛው ፋይል፣ do_search.php የPHP ኮድ ይይዛል። የመጀመሪያውን ፋይል መፍጠር እንጀምር፡-

    ፒኤችፒ፣ jQuery ፍለጋ ማሳያ $(ተግባር() ($(..search_button)) ጠቅ ያድርጉ(ተግባር()(// ተጠቃሚው የፃፈውን ያግኙ var searchString = $("#search_box").val();// ቅፅ የጥያቄ ሕብረቁምፊ var data = "search="+ searchString;// ፍለጋ ሕብረቁምፊ ባዶ ካልሆነ(searchString) (// የአጃክስ ጥያቄ ካደረጉ $.ajax(( ዓይነት:"POST", url: "do_search.php", ዳታ፡ ዳታ፡ ከመላክ በፊት፡ ተግባር(ኤችቲኤምኤል) (// ጥያቄው $("#ውጤት") ከመባሉ በፊት ይሰራል።html("")፤ $("#የፍለጋ ውጤቶች")።ሾው()። $("። word").html (የፍለጋ ሕብረቁምፊ);), ስኬት: ተግባር (ኤችቲኤምኤል) (// ውጤቱን ከተቀበለ በኋላ ይሰራል $("#ውጤቶች").ሾው(); $("#ውጤቶች").አባሪ(html) ;)) በውሸት መመለስ;
    አጃክስ የሚለውን ቃል ለማስገባት ይሞክሩ

    ውጤቶች ለ

    በዚህ ፋይል ውስጥ የPOST ጥያቄን ወደ መጨረሻው ጫፍ - የ do_search.php ፋይል የሚልክ መደበኛ HTML ፎርም ፈጠርን።

    ስክሪፕቱ እንዴት እንደሚሰራ በቀላሉ ለመረዳት የPHP ኮድ አስተያየቶችን ይዟል። በመረጃ ቋቱ ውስጥ ተዛማጆች ካሉ፣ ተጠቃሚው የፈለጓቸውን ቃላት በድፍረት በማድመቅ ለተጠቃሚዎ ያሳዩዋቸዋል።

    አካል ( ቅርጸ-ቁምፊ-ቤተሰብ: Arial, Helvetica, ሳንስ-ሰሪፍ; ) * (ህዳግ: 0; padding: 0; ) #container (ህዳግ: 0 ራስ; ስፋት: 600 ፒክስል;) a ( ቀለም: # DF3D82; ጽሑፍ-ማጌጫ: ምንም) a: ማንዣበብ ( ቀለም: # DF3D82; ጽሑፍ-ማጌጫ: ከስር; ) ul.update (ዝርዝር-ቅጥ: ምንም; የቅርጸ-ቁምፊ መጠን: 1.1em; ህዳግ-ከላይ:10 ፒክስል) ul.update li ( ቁመት: 30 ፒክስል; ድንበር-ከታች፡#ደደዴ ጠንካራ 1 ፒክስል፤ ጽሁፍ-አሰላለፍ፡ግራ፤) ul.update li:የመጀመሪያ ልጅ(የድንበር-ከላይ፡#የደደደ ጠንካራ 1px፤ ቁመት፡30ፒክስል፤ጽሁፍ-አሰላለፍ፡ግራ፤) #ፍላሽ (ህዳግ- ከላይ:20 ፒክስል; ጽሑፍ-አሰላለፍ: በግራ; #000;) .ቃል (የቅርጸ-ቁምፊ ክብደት:ደፋር; ቀለም:#000000;) #የፍለጋ_ሣጥን (ፓዲንግ:4 ፒክስል; ድንበር: ድፍን 1 ፒክስል # 666666; ስፋት: 300 ፒክስል; ቁመት: 30 ፒክስል; የቅርጸ-ቁምፊ መጠን: 18 ፒክስል; -ሞዝ- ድንበር-ራዲየስ፡ 6 ፒክስል፤ - ዌብኪት - ድንበር-ራዲየስ፡ 6 ፒክስል፤ ) .የፍለጋ_አዝራር (ድንበር፡#000000 ድፍን 1 ፒክስል፤ ፓዲንግ፡ 6 ፒክስል፤ ቀለም፡#000፤ ቅርጸ-ቁምፊ፡ደፋር፤ቅርጸ-ቁምፊ መጠን፡16ፒክስል፤-ሞዝ- ድንበር-ራዲየስ፡ 6 ፒክስል፤ -webkit-border-radius፡ 6px) ተገኝቷል(የቅርጸ-ቁምፊ ክብደት፡ ደማቅ; ቅርጸ-ቁምፊ: ሰያፍ; ቀለም: # ff0000; ) h2 (ህዳግ-ቀኝ፡ 70 ፒክስል፤)

    ስለዚህ ገጹን እንደገና ሳይጭኑ የሚሰራ ቀላል የፍለጋ ቅጽ እንዴት መፍጠር እንደሚችሉ ተምረዋል። ትምህርቱን እንደወደዱት ተስፋ አደርጋለሁ።

    ከጸሐፊው፡ ፒኤችፒ መፈለጊያ ስክሪፕት የዘመናዊ መገልገያ ዋና አካል ነው። ነገር ግን ለጀማሪ ገንቢዎች አተገባበሩ "የማዕዘን ድንጋይ" ሊሆን ይችላል. ዛሬ የእንደዚህ አይነት ሞጁል ግንባታ በተቻለ መጠን በቀላሉ ለማብራራት እሞክራለሁ, ስለዚህም የእሱ ኮድ ከመጠን በላይ ውስብስብነት እንዳያስፈራዎት.

    ፒኤችፒን በመፈለግ ላይ

    በድር ጣቢያ ላይ የውስጥ የፍለጋ ስርዓት ማደራጀት አስፈላጊ ስራ ነው. የዚህ ዓይነቱ ተግባር መኖሩ በማንኛውም ተጠቃሚ ዓይን ውስጥ ያለውን ሀብቱን በእጅጉ ያጎለብታል. ይህ በተለይ ጠባብ ጭብጥ ላላቸው ጣቢያዎች እውነት ነው, ይዘቱ የተወሰኑ "ችግሮችን" ለመፍታት የታሰበ ነው. ለምሳሌ በድር ፕሮግራሚንግ ውስጥ።

    ብዙ ጊዜ፣ የጣቢያ ፍለጋ ስክሪፕት በ PHP ውስጥ ለመፃፍ፣ የዚህ የፕሮግራም ቋንቋ ጥምረት ከ . የ AJAX ቴክኖሎጂ በይነተገናኝ የፍለጋ ስርዓትን ለመተግበር ያገለግላል። ግን ዛሬ በእንደዚህ አይነት ዱር ውስጥ "ነፋስ" አንሆንም, እና በሚታወቀው ስሪት ላይ እናተኩራለን.

    በጣም ቀላሉን የፍለጋ ምሳሌ እሰጣለሁ። ከ DBMS ጋር ግንኙነት መኖሩን አይፈትሽም, የተመለሰውን ናሙና ውጤቶች, ወዘተ. እነዚህን ሁሉ ጥቃቅን ነገሮች እራስዎ ማከል ይችላሉ. የቁሱ ዓላማ በዘመናዊ የበይነመረብ ግብዓቶች ላይ የውስጥ የፍለጋ ስርዓትን ስለመገንባት አጠቃላይ ሀሳብ መስጠት ነው። እንሂድ!

    ለመጀመር፣ የፍለጋ ጥያቄ ለማስገባት የቅጹን ኮድ አቀርባለሁ። ይህ ቀላል ምልክት ነው, ምንም እንኳን ትንሽ የቅጥ "ፍሪልስ" ሳይኖር.




    < form name = "f1" method = "post" action = "search.php" >

    < input type = "search" name = "search_q" / > < / br >

    < / br >

    < input type = "submit" value = "ፈልግ" / > < / br >

    < / form >

    ቅጹ በአሳሹ ውስጥ እንደዚህ ይመስላል።

    ወደ ስክሪፕቱ እንሂድ

    አሁን በቀጥታ ወደ ፕሮግራሙ ኮድ እንሂድ. ለመጀመር በ ውስጥ መፈጠር ያለበትን የሰንጠረዡን መዋቅር እሰጣለሁ. የታተመ ጽሑፍን በርዕስ እንፈልጋለን። ተመሳሳዩን መርህ በመጠቀም በአንድ ጣቢያ ላይ ቃላትን ለመፈለግ የ PHP ስክሪፕት መፍጠር ይችላሉ። ሁሉም ነገር በችሎታዎ ውስጥ ነው።

    በመጀመሪያ በተጠቃሚው የገባውን ዋጋ በቅጹ ውስጥ እንሰርባለን. ከዚያ ከ "ቆሻሻ" እናጸዳዋለን: ተጨማሪ ቦታዎች, መለያዎች እና ከመረጃ ቋቱ ጋር ይገናኙ. ከዚህ በኋላ የ SQL ጥያቄን እናስኬዳለን ይህም የፍለጋ መጠይቁን ዋጋ በሰንጠረዡ ውስጥ ከተቀመጡት ቁሳቁሶች ስም ጋር እናነፃፅራለን. ግጥሚያ ካለ, ተዛማጅ ይዘቶችን እናሳያለን. መጨረሻ ላይ ከ MySQL ጋር ያለውን ግንኙነት እንዘጋለን እና ጥያቄውን "ዳግም አስጀምር". ሙሉው የምሳሌ ኮድ ይኸውና፡-