Resmi erkek arama öğesi php i. PHP ve MySQL'de çok düzeyli menü

  • 03.11.2019

şablon

Site arama sonuçlarının görüntüleneceği şablonun adı. XSLT şablon motorunda yoksayılır.

Arama dizisi

Arama ifadesi. Değer ayarlanmazsa, arama formundan iletilen istekten alınır.

search_types

Arama için hiyerarşik tür tanımlayıcılarının listesi (boşlukla belirtilir). Değer belirtilmemişse tüm türler aranır.

arama_dalları

Aramanın gerçekleştirileceği bölümlerin listesi (bir boşlukla gösterilir). Değer belirtilmemişse tüm bölümler aranır. Parametre hem sayfa kimliklerini hem de URL'lerini alabilir.

Sayfa başına

Sayfa başına sonuç sayısı. Parametre ayarlanmazsa "Arama" modülü ayarlarında belirtilen değer alınacaktır.

%Toplam%

Akıştaki toplam haber sayısını görüntüler. Makro için kullanılabilir %sistem sayıları()%.

%Sayfa başına%

sayfa başına parametrenin değerini görüntüler. Makro için kullanılabilir %sistem sayıları()%.

%list-class-first%

öğenin ilk olması durumunda, "ilk" görüntüler

%list-class-last%

öğenin son olması durumunda, "son" görüntüler

%list-sınıfı-tek%

öğenin çift olması durumunda "tek" görüntüler

%list-class-even%

öğenin tek olması durumunda "çift" görüntüler

%list-konumu%

listeye bir seri numarası ekler

search_empty_result

Arama sonucunda hiçbir sayfa bulunamadığında kullanılır. Bu durumda, blok yerine bu blok görüntülenir. search_block .

%last_search_string%

Varsa, önceki arama sorgusunu görüntüler.

search_block_line_quant

Arama sonuçları arasına eklenen bir ayırıcının çıktısını verir.

kullanım örnekleri

%toplam% sayfa bulundu.

%lines%

%system numpages(%total%, %per_page%)%

SON; $FORMS["search_block_line" ] =<< %num%. %isim%%bağlam%

SON; $FORMS["search_empty_result" ] =<<Afedersiniz. Bu sorgu için sonuç bulunamadı.

SON; ?>

Ana hedefler:

  • bir satıra bir arama sorgusu girdikten sonra arama sonuçları bu satırın altında görünecek şekilde bir arama yapın
  • sonucu alma isteği, yalnızca arama sorgusu girişinin bitiminden sonra gerçekleşmelidir.

Tamam hadi gidelim!

Bir arama dizesi ve arama sonuçlarını ekleyeceğimiz bir div takma adıyla birlikte bloğun yaklaşık bir düzeni:

Çünkü arama, site başlığında mevcut, sonuçlara uygun arama ve stil komut dosyalarını ekleyelim:

//aramayı bitir: $APPLICATION->AddHeadScript("/search/ajax_search.js"); $APPLICATION->AddHeadScript("/search/jquery.mCustomScrollbar.js"); $APPLICATION->SetAdditionalCSS(SITE_TEMPLATE_PATH . "/css/ajax_search.css"); $APPLICATION->SetAdditionalCSS(SITE_TEMPLATE_PATH . "/css/jquery.mCustomScrollbar.min.css");

Şimdi ajax_search.js'mizde neler olduğunu görelim:

get_result ()( //arama sonuçlarını temizle $("#search_result").html(""); //arama sonuçlarını henüz almadık - ön yükleyiciyi görüntüle $("#search_result").append( "

"); $.ajax(( tip: "POST", url: "/search/ajax_search.php", veri: "q="+q, dataType: "json", başarı: function(json)( //temizle) ön yükleyici $("#search_result").html(""); $("#search_result").append(" "); // json dizisinin her öğesini class="live-search" (kendi düzeninizi kullanabilirsiniz) ile bir div içine ekleyin $.each(json, function(index, element) ( $("#search_result") .find ("".live-search").append(" "+element.TITLE+""+element.BODY_FORMATED+""); //console.log (element.BODY_FORMATED); )); //kaydırmanın stilini $(".live-search").mCustomScrollbar(( scrollInertia: 500 )); ) )); ) var timer = 0 ; var q = ""; $(belge).ready(function() ( $("#q").keyup(function() ( q = this.value; clearTimeout(timer); zamanlayıcı = setTimeout(get_result, 1000) ) ; )); $("#reset_live_search").click(function() ( $("#search_result").html(""); )); ));

keyup işlevinde, div-nick'i ajax'ta id = "search_result" ile dolduran get_result () işlevini çağırırız.

mCustomScrollbar yalnızca bir stil çağrısıdır (kapatabilirsiniz).

/search/ajax_search.php'den JSON formatında veri alıyoruz.

JS bileşeni ile her şey açık, şimdi ajax_search.php'de ne olduğunu görelim:

Search(array("QUERY" => $q, "SITE_ID" => LANG, "MODULE_ID" => "iblock", "CHECK_DATES" => "Y", "PARAM2" => "8")); $sonuç = dizi(); while ($res = $obSearch->GetNext())( $id = $res["ITEM_ID"]; //eğer bölüm bulunursa: if (strripos($id, "S")!==false)( $result_item ["TITLE"] = $res["TITLE"]; $result_item["URL"] = $res["URL"]; $result_item["BODY_FORMATED"] = $res["TITLE_FORMATED"]; $sonuç = $ result_item; ) //S yoksa, o zaman başka( $result_item["TITLE"] = $res["TITLE"]; $result_item["URL"] = $res["URL"]; $result_item[" BODY_FORMATED"] = $res["BODY_FORMATED"]; $sonuç = $sonuç_item; ) ) echo json_encode($sonuç); ) ?>

Bu durumda arama, Bitrix CSearch sınıfının Search yöntemiyle gerçekleştirilir. PARAM2'de hangi bilgi bloğunda aradığımızı yazıyoruz. Arama sonuçlarını $result dizisine göndeririz. $res['ITEM_ID'] öğesinin bir öğe veya bölüm olabileceğini unutmayın. Ne bulduğumuza bağlı olarak, $result_item['BODY_FORMATED'] içinde ya bölümün adını ya da bilgi bloğunun bulunan öğesinden bir metin parçasını kaydırıyoruz.

Bir kullanıcıyı sitede tutmanın en iyi yolu, aradığını bulmasına izin vermektir. Bunun için uygun bir sistem yaparsanız, sitenizin tercih seviyesi artacak ve kullanıcı, ilgisini çeken şeyi bulmak için kesinlikle geri dönecektir.

Size sitedeki makaleleri aramak için kullanılacak basit ama işlevsel olarak etkili bir arama formunun nasıl oluşturulacağını göstereceğim. Sonuçlar, hiç şüphesiz bilgileri sunmanın en iyi yolu olan herhangi bir yeniden yükleme olmadan sayfada görünecektir.

2 dosya oluşturacağım: HTML ve JavaScript içeren search.php. İkinci dosya olan do_search.php PHP kodunu içerecektir. İlk dosyayı oluşturmaya başlayalım:

PHP, jQuery arama demosu

ajax kelimesini girmeyi deneyin


için sonuçlar


Bu dosyada, arka uca bir POST isteği gönderen normal bir HTML formu oluşturduk, do_search.php dosyası.

select_list($sql); if(count($satır)) ( $end_result = ""; foreach($satır olarak $r) ( $sonuç = $r["başlık"]; $bold = " ".$kelime.""; $end_result .="

  • " .str_ireplace($kelime, $kalın, $sonuç) . "
  • "; ) echo $end_result; ) else ( echo "
  • İsteğiniz için hiçbir şey bulunamadı
  • "; } } ?>

    PHP kodu, betiğin nasıl çalıştığını anlamanızı kolaylaştıran yorumlar içerir. Veritabanında eşleşmeler varsa, kullanıcının aradığı kelimeleri kalınlaştırarak bunları kullanıcınıza gösterirsiniz.

    Hepsine biraz CSS verelim:

    Gövde( font-family:Arial, Helvetica, sans-serif; ) *( margin:0;padding:0; ) #container ( margin: 0 auto; width: 600px; ) a ( color:#DF3D82; text-decoration: yok ) a:hover ( color:#DF3D82; text-decoration:underline; ) ul.update ( list-style:none;font-size:1.1em; margin-top:10px ) ul.update li( height: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; renk: #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-ağırlığı: kalın ; yazı tipi stili: italik; renk: #ff0000; ) h2 ( sağ kenar boşluğu: 70px; )

    Böylece, sayfayı yeniden yüklemeden çalışan basit bir arama formunu nasıl oluşturacağınızı öğrendiniz. Umarım dersten hoşlanmışsınızdır.

    SSY anlamına gelir Siddha Samadhi Yoga(genellikle 'Sessizlik Yogası Bilimi' olarak genişletilir) burada Siddha'kanıtlanmış veya başarılmış bir şey (yani bilgi)' anlamına gelir, samadhi'aklın eşit olduğu bir durum' anlamına gelir ve Yoga'kişinin yüksek benliğiyle birleşme' anlamına gelir.

    SSY, yaşamın temel bilgisidir. Kadim rishilerimiz, Brahmopadesam adı verilen, yapmama ve içeride durgunluk ve dışarıda bolluğu deneyimleme bilimi üzerine bir talimat olan benzersiz bir eğitim modu formüle etmişti. Kişinin hayata bakışında büyük bir değişiklik meydana getirir ve bireyde dikkate değer bir olgunluk sağlar. SSY, Brahmopadesam'ın bu eski biliminin günümüzdeki versiyonundan başka bir şey değildir.

    SSY tarafından bir eğitim programı olarak sunulmaktadır.Hayat Yessence Akademisi (LiYA), ve kurumun amiral gemisi programıdır. Amiral gemisi programı olarak, organizasyonun adıyla eş anlamlı hale geldi. Bu büyük bilginin eğitimleri dünyanın birçok yerinde LiYA öğretmenleri tarafından verilmektedir. LiYA'nın Hint bölümü denirRishi Samskruti Vidya Kendra (RSVK)).

    Uyanışı öldüren ilk kavram “Ben Bedenim”dir. SSY sürecidir
    Tam bir kopuş hali olan Samadhi'ye girmek.
    "
    -Guruji

    30 Nisan 2016'da güncellendi

    PHP ve MySQL kullanarak basit aramanın nasıl oluşturulacağını size göstereceğim. Şunları öğreneceksiniz:

    • GET ve POST yöntemleri nasıl kullanılır?
    • Veritabanına bağlan
    • Veritabanı ile iletişim kurun
    • Verilen kelime veya ifade ile eşleşen veritabanı girişlerini bulun
    • Sonuçları göster

    hazırlık

    Elbette Apache, MySQL ve PHP'nin kurulu ve çalışır durumda olması (farklı platformlar için veya Windows için WAMP, mac için MAMP kullanabilirsiniz) veya PHP ve MySQL veritabanlarını destekleyen bir web sunucusu/hosting'iniz olmalıdır.

    Veritabanı, tablo oluşturalım ve onu arama için kullanabileceğimiz bazı girdilerle dolduralım:

    • phpMyAdmin'e gidin, bilgisayarınızda sunucu varsa ona http://localhost/phpmyadmin/ adresinden erişebilirsiniz.
    • Veritabanı oluştur, benimkini tutorial_search olarak adlandırdım
    • Tablo oluştur 3 alan kullandım, makaleler olarak adlandırdım.
    • 1. alan için yapılandırma. Ad: id, yazın: INT, AUTO_INCREMENT'i kontrol edin, dizin: birincil

    INT tamsayı anlamına gelir
    AUTO_INCREMENT, yeni girişlerin öncekinden farklı(daha yüksek) numaraya sahip olacağı anlamına gelir
    Dizin: birincil, satırı tanımlamak için kullanılan benzersiz anahtar olduğu anlamına gelir

    • 2. alan: Ad: başlık, tür: VARCHAR, uzunluk: 225

    VARCHAR, metin dizisi anlamına gelir, maksimum 225 karakter (maksimum uzunluğu belirtmek gerekir), başlıklar, adlar, adresler için kullanın
    uzunluk, 225 karakterden uzun olamayacağı anlamına gelir (isterseniz daha düşük bir sayıya ayarlayabilirsiniz)

    • 3. alan: Ad: metin, tür: METİN

    METİN, "uzun dize" anlamına gelir, uzunluk belirtmek gerekli değildir, uzun metin için kullanın.

    • Tabloyu rastgele makalelerle doldurun (bunları haber sitelerinde bulabilirsiniz, örneğin: CNN, BBC, vb.). Üst menüde ekle'yi tıklayın ve metni belirli alanlara kopyalayın. "id" alanını boş bırakın. en az üç tane yerleştirin.

    Bunun gibi bir şeye benzemeli:

    • Sunucu dizininizde bir klasör ve iki dosya oluşturun: index.php ve search.php (aslında tüm bunları sadece bir dosya ile yapabiliriz, ancak iki tane kullanalım, daha kolay olacak)
    • Bunları varsayılan html işaretlemesi, doctype, head vb. ile doldurun.

    Arama

    • index.php'de arama alanı ve gönder düğmesi ile bir form oluşturun, GET veya POST yöntemini kullanabilir, eylemi search.php olarak ayarlayabilirsiniz. Metin alanı için ad olarak "sorgu" kullandım

    GET - bilgilerinizin url'de saklanacağı anlamına gelir (http://localhost/tutorial_search/search.php?query= senin sorgun)
    POST - bilgilerinizin gösterilmeyeceği anlamına gelir, şifreler, özel bilgiler için kullanılır, GET'den çok daha güvenlidir

    Tamam, php ile başlayalım.

    • opensearch.php
    • php'yi başlat()
    • Bir veritabanına bağlanın (aşağıdaki koddaki yorumları okuyun)

    < to >$sorgu = mysql_real_escape_string($sorgu); // kimsenin SQL enjeksiyonu kullanmadığından emin olur $raw_results = mysql_query("SELECT * FROM makalelerden WHERE (`title` LIKE "%".$query."%") VEYA (`text` LIKE "%".$query."% ")") veya die(mysql_error()); // * tüm alanları seçtiği anlamına gelir, ayrıca şunu da yazabilirsiniz: `id`, `title`, `text` // makaleler tablomuzun adıdır // "%$query%" aradığımız şey , % herhangi bir anlama gelir, örneğin $query Hello ise // "merhaba", "Merhaba adam", "gogohello" ile eşleşir, tam eşleşme istiyorsanız `title`="$query" // kullanın veya isterseniz sadece tam kelimeyi eşleştirmek için "gogohello" dışarıda "% $query %" ...VEYA ... "$query %" ... VEYA ... "% $query" if(mysql_num_rows($raw_results) > kullanın

    ".$sonuçlar["başlık"]."

    ".$sonuçlar["metin"]."

    "; // veritabanından alınan sonuçları gönderir(başlık ve metin) ayrıca id ($results["id"]) ) ) da gösterebilirsiniz ) else( // eşleşen satır yoksa echo "Sonuç yok"; ) ) else( // sorgu uzunluğu minimumdan küçükse echo "Minimum uzunluk ".$min_length; ) ?>

    Tamamlandı!

    Şimdi çalışıyor. Farklı kelimeler, varyasyonlar, düzenleme kodu, deneme deneyin. Bir şeyleri kaçırdığınızı düşünürseniz, her iki dosyanın da tam kodunu ekliyorum. Soru sormaktan veya öğreticiler istemekten çekinmeyin.

    index.php

    Arama



    arama.php

    Arama Sonuçları = $min_length)( // sorgu uzunluğu minimum uzunluktan fazla veya eşitse, o zaman $query = htmlspecialchars($query); // html'de kullanılan karakterleri eşdeğerleriyle değiştirir, örneğin:< to >$sorgu = mysql_real_escape_string($sorgu); // kimsenin SQL enjeksiyonu kullanmadığından emin olur $raw_results = mysql_query("SELECT * FROM makalelerden WHERE (`title` LIKE "%".$query."%") VEYA (`text` LIKE "%".$query."% ")") veya die(mysql_error()); // * tüm alanları seçtiği anlamına gelir, ayrıca şunu da yazabilirsiniz: `id`, `title`, `text` // makaleler tablomuzun adıdır // "%$query%" aradığımız şey , % herhangi bir anlama gelir, örneğin $query Hello ise // "merhaba", "Merhaba adam", "gogohello" ile eşleşir, tam eşleşme istiyorsanız `title`="$query" // kullanın veya isterseniz sadece tam kelimeyi eşleştirmek için "gogohello" dışarıda "% $query %" ...VEYA ... "$query %" ... VEYA ... "% $query" if(mysql_num_rows($raw_results) > kullanın 0)( // eğer bir veya daha fazla satır döndürülürse aşağıdakileri yapın while($results = mysql_fetch_array($raw_results))( // $results = mysql_fetch_array($raw_results) veri tabanından veriyi diziye koyar, geçerli iken yapar döngü yankısı "

    ".$sonuçlar["başlık"]."

    ".$sonuçlar["metin"]."

    "; // veritabanından alınan sonuçları gönderir(başlık ve metin) ayrıca id ($results["id"]) ) ) da gösterebilirsiniz ) else( // eşleşen satır yoksa echo "Sonuç yok"; ) ) else( // sorgu uzunluğu minimumdan küçükse echo "Minimum uzunluk ".$min_length; ) ?>