Advertenties voor mannen zoek item php i. Live zoeken op Bitrix. Implementatie voorbeeld

Van de auteur: Hallo vrienden. In dit artikel gaan we door met het implementeren van live zoeken voor de site. Wat is live zoeken? Je komt het de hele tijd tegen als je naar iets zoekt op Google of Yandex. Zodra u een zoekopdracht begint te typen, begint de zoekmachine u onmiddellijk opties aan te bieden, waaruit u alleen de meest geschikte kunt kiezen. Handig ding, nietwaar? Laten we proberen iets soortgelijks te implementeren.

U kunt de bronbestanden van het huidige artikel downloaden van . Het eerste deel van het artikel kun je vinden op.

Daarom hebben we in het eerste deel de database voorbereid die zal worden gebruikt voor live zoeken, en hebben we ook de Autocomplete-widget van de jQuery UI-bibliotheek aan het zoekveld op onze pagina toegevoegd. Voorlopig werkt de widget met testgegevens, maar nu gaan we dit oplossen.

Laten we eerst een andere gegevensbron voor de widget specificeren, dit zal bijvoorbeeld het search.php-bestand zijn, dat we ook moeten maken.

$(function())( $("#search").autocomplete(( bron: "search.php", )); ));

Nu typ ik een willekeurig teken in het zoekveld en kijk wat er in de browserconsole gebeurt.

Zoals u kunt zien, wordt een GET-verzoek verzonden met de term parameter, waarvan de waarde de string is die in het zoekveld is getypt. In dit geval gebeurt alles asynchroon, zonder de pagina opnieuw te laden, d.w.z. Er wordt gebruik gemaakt van AJAX.

Mooi, nu hoeft u alleen nog maar de binnenkomende zoekopdracht te accepteren en er een antwoord op te geven. Om dit te doen, moet u een verbinding tot stand brengen met de databaseserver en eenvoudige code schrijven die op verzoek gegevens uit de database ontvangt. De code in het search.php-bestand zal er ongeveer zo uitzien:

$db = mysqli_connect("localhost", "root", "", "world") or die("Geen verbinding met de database"); mysqli_set_charset($db, "utf8") or die("De verbindingscodering is niet ingesteld"); /** * zoeken automatisch aanvullen **/ function search_autocomplete())( global $db; $search = trim(mysqli_real_escape_string($db, $_GET["term"])); $query = "SELECTEER Naam VAN stad WAAR Naam LIKE " %($search)%" LIMIET 10"; $res = mysqli_query($db, $query); $result_search = array(); while($row = mysqli_fetch_assoc($res))( $result_search = array("label " => $row["Naam"]); return $result_search; ) if(!empty($_GET["term"]))( $search = search_autocomplete(); exit(json_encode($search)); )

$ db = mysqli_connect ("localhost" , "root" , "" , "world" ) of die ( "Geen verbinding met database") ;

mysqli_set_charset($db, "utf8") of die( "De verbindingscodering is niet ingesteld") ;

* zoeken naar automatisch aanvullen

functie zoeken_autocomplete() (

globaal$db;

$search = trim(mysqli_real_escape_string($db, $_GET["term"]));

$res = mysqli_query($db, $query);

$result_search = array();

while ($row = mysqli_fetch_assoc($res)) (

$result_search = array("label" => $row["Naam"]);

retourneer $result_search;

if (! leeg ($ _GET ["term"] ) ) (

$search = zoeken_autocomplete();

exit(json_encode($search));

Houd er rekening mee dat de functie search_autocomplete, die op verzoek gegevens ontvangt, deze gegevens in een bepaald formaat moet retourneren; het moet een array zijn met de labelsleutels en de waarden van de gevonden steden. Na het aanroepen van de functie moeten de gegevens worden geconverteerd naar JSON-formaat.

Het blijft nodig om de werking van onze live zoekopdracht te controleren. Om dit te doen, typen we, net als de vorige keer, slechts één letter: a:

Geweldig! Als reactie daarop ontvingen we een tiental steden waarvan de naam de ingevoerde letter bevatte. Als we doorgaan met het typen van de naam, verandert de lijst met opties, d.w.z. bij elke brief wordt een nieuw AJAX-verzoek verzonden.

In dit artikel laat ik zien hoe je kunt creëren menu met meerdere niveaus in PHP en MySQL. Je kunt natuurlijk veel opties bedenken om het te maken, maar afgaande op het aantal vragen over dit onderwerp heb je een voorbeeld nodig. En ik zal het in dit artikel geven. Ik wil meteen opmerken dat dit artikel alleen zinvol is voor degenen die het weten PHP en weet van aanpakken MySQL. Alle anderen moeten dit eerst doornemen, of er wat boeken over lezen PHP en MySQL.

Laten we eerst een tabel in de database maken met de volgende velden:

  • Identiteitskaart- unieke identificatie.
  • titel- ankerlinks in het menu.
  • link- het adres waarnaar het menu-item zal leiden.
  • ouder_id- ouder-ID. Als er geen bovenliggend item is, is hier NULL (of u kunt ook 0 invullen).

We hebben de tafel uitgezocht, nu is het tijd PHP-code. Vol PHP-code staat hieronder:

$mysqli = new mysqli("localhost", "root", "", "db"); // Maak verbinding met de database
$result_set = $mysqli->query("SELECT * UIT `menu`"); // Selecteer alle records uit de tabel met het menu
$items = array(); // Array voor menu-items
while (($row = $result_set->fetch_assoc()) != false) $items[$row["id"]] = $row; // Vul de array met een voorbeeld uit de database
$kinderen = array(); // Array voor het matchen van onderliggende elementen met hun ouders
foreach ($items als $item) (
if ($item["parent_id"]) $childrens[$item["id"]] = $item["parent_id"]; // Vul de array
}
functie printItem($item, $items, $childrens) (
/* Geef het menu-item weer */
echo "

  • ";
    echo "".$item["titel"]."";
    $ul = onwaar; // Zijn er kinderen gerenderd?
    terwijl (waar) (
    /* Een oneindige lus waarin we naar alle kinderen zoeken */
    $key = array_search($item["id"], $childrens); // Op zoek naar een onderliggend element
    als (!$sleutel) (
    /* Geen kinderen gevonden */
    als ($ul) echo ""; // Als onderliggende elementen werden weergegeven, sluit dan de lijst
    pauze; // Verlaat de lus
    }
    niet ingesteld($childrens[$key]); // Verwijder het gevonden element (zodat het niet meer wordt weergegeven)
    als (!$ul) (
    echo "
      "; // Start de interne lijst als er nog geen onderliggende elementen zijn
      $ul = waar; // Zet de vlag
      }
      echo printItem($items[$key], $items, $childrens); // Geef recursief alle onderliggende elementen weer
      }
      echo "";
      }
      ?>

      Deze code werkt volledig, maar u moet begrijpen dat niemand op deze manier schrijft (in het bijzonder de uitvoer via echo HTML-tags). En jouw taak is om het algoritme uit deze code te halen, maar niet de code zelf. En koppel dit algoritme vervolgens aan uw motor. Ik heb geprobeerd de uitvoercode zorgvuldig te becommentariëren menu met meerdere niveaus in PHP en MySQL, maar het is natuurlijk niet het meest transparant en vereist een behoorlijk goede initiële kennis. Als je het nog steeds niet goed weet PHP en MySQL, dan raad ik u ten zeerste aan dit eerst door te nemen

      Maak een aangepast berichttype Artikelen met aangepaste categorieën (aangepaste taxonomie) Categorie artikelen.

      In mijn geval zijn alle standaardrecords Producten, dus we zullen Artikelen weergeven via aangepaste records.

      In het functiebestand function.php registreren we een aangepast berichttype Artikelen:

      Functie wptp_create_post_type() ( $labels = array("name" => __("Artikelen"), "singular_name" => __("Artikelen"), "add_new" => __("Nieuw artikel"), "add_new_item" => __("Nieuw artikel toevoegen"), "edit_item" => __("Artikel bewerken"), "new_item" => __("Nieuw artikel"), "view_item" => __("Artikel bekijken"), "search_items" => __("Artikelen zoeken"), "not_found" => __("Geen artikelen gevonden"), "not_found_in_trash" => __("Geen artikelen gevonden in prullenbak"), "labels" => $labels, "has_archive" => true, "public" => true, "hiërarchisch" => false, "menu_position" => 5, "supports" => array("title", "editor" , "uittreksel", "aangepaste velden", "thumbnail"),); register_post_type("articles", $args ) add_action("init", "wptp_create_post_type");

      Als je wilt dat standaardcategorieën worden weergegeven in aangepaste berichten, koppel ze dan aan de categorieëntaxonomie:

      "taxonomieën" => array("categorie"),

      Als je ook aangepaste taxonomieën voor aangepaste berichten maakt, moet je deze koppelen aan de gemaakte taxonomieën; als we het onderstaande voorbeeld nemen, zijn dit Articles_category

      "taxonomieën" => array("articles_category"),

      Vervolgens registreren we voor het aangepaste berichttype Artikelen de ‘Artikelcategorie’-taxonomieën, zodat verschillende berichten tot verschillende categorieën kunnen behoren.

      Functie wptp_register_taxonomy() ( register_taxonomy("articles_category", "articles", array("labels" => array("name" => "Artikelcategorieën", "singular_name" => "Artikelcategorie", "search_items" => " Artikelcategorieën zoeken", "all_items" => "Alle artikelcategorieën", "edit_item" => "Artikelcategorieën bewerken", "update_item" => "Artikelcategorie bijwerken", "add_new_item" => "Nieuwe artikelcategorie toevoegen", "new_item_name" => "Nieuwe artikelcategorienaam", "menu_name" => "Artikelcategorie",), "hiërarchisch" => true, "sort" => true, "args" => array("orderby" => "term_order"), "show_admin_column" => true)); add_action("init", "wptp_register_taxonomy");

      Voor een aangepaste taxonomie kun je de naaktslak in een mooiere veranderen, zodat deze niet de artikelen_categorie is, maar je moet ervoor zorgen dat dergelijke naaktslakken niet langer op andere pagina's of berichten voorkomen, anders zullen er problemen optreden:

      "rewrite" => array("slug" => "blog"),

      Wanneer u slugs wijzigt, moet u de instellingen voor “Permanente Links” in het beheerderspaneel bijwerken, anders ontvangt u een 404-foutmelding in plaats van de gewenste pagina.

      Meer voorbeelden vindt u hier. Maar het hielp om al deze code op orde te brengen, waarvoor ik de auteur erg dankbaar ben.

      Het bestand single.php is verantwoordelijk voor het uiterlijk van een aangepast bericht, maar om het uiterlijk van een aangepast bericht te wijzigen, kun je een bestand single-(post_type).php maken - in mijn geval zal het single-articles.php zijn met zijn eigen inhoud.

      Nu moet je aangepaste berichten op de pagina weergeven. Standaard is het index.php-bestand verantwoordelijk voor het weergeven van het archief van aangepaste berichten. Maar u kunt een bestand maken dat verantwoordelijk is voor het weergeven van aangepaste vermeldingen in uw taxonomie.

      Optie 1 is het meest correct. We geven vermeldingen in de taxonomie op dezelfde manier weer als in een reguliere categorie.

      Om dit te doen, maakt u een bestand taxonomie-(taxonomie).php - in mijn geval zal het taxonomy-articles_category.php zijn en daarin geven we de gebruikelijke cyclus weer, zoals voor standaarditems in een categorie:

      In het tax-item.php-bestand geven we de gegevens weer die we uit elk bericht moeten halen, bijvoorbeeld titel, berichtlink, thumbnail en uittreksel.

      In het paginering.php bestand geven we de paginering in dit formaat weer.

      De cyclus is niet veranderlijk, paginering werkt prima. Dit is de beste optie voor het weergeven van aangepaste taxonomieën.

      Optie 2 – als er geen aangepaste taxonomieën zijn, kun je eenvoudig alle aangepaste berichten in de vorm van een archief krijgen

      Om dit te doen, maken we in de sjabloon een bestandsarchief-(post_type).php - in mijn geval zal het archive-articles.php zijn, waarin we, net als in de taxonomie, een regelmatige lus weergeven, alleen in plaats van de Taxonomietitel: we geven de naam van het aangepaste berichttype weer :

      Met deze optie kunt u, als er geen archiefpagina voor een aangepast bericht is gemaakt, een lijst met alle aangepaste berichten krijgen via de directe link BLOG_URL?post_type=(post_type) of in mijn geval http://site.com/ artikelen/ .

      Optie 3. Geef eenvoudig alle aangepaste artikelitems weer op een pagina met een bepaald sjabloon

      "artikelen", "posts_per_page" => -1); $loop = nieuwe WP_Query($args); while ($loop->have_posts()) : $loop->the_post(); get_template_part("include/tax-item"); eindtijd; ?>

      get_template_part("include/tax-item"); – in het tax-item.php bestand geef ik de inhoud van het bericht weer die ik nodig heb om berichten binnen de lus weer te geven (titel, miniatuur, datum, citaat, enz.)

      Met deze optie worden alle artikelen op de pagina weergegeven, ongeacht taxonomieën (categorieën).

      En als we elke categorie afzonderlijk moeten weergeven met eigen nieuws, dan gebruiken we de eerste hierboven beschreven optie.

      Dat gezegd hebbende, als je de Yoast SEO-plug-in gebruikt en de broodkruimels gebruikt:

      Wanneer u vervolgens de taxonomie “Artikelencategorie” selecteert in de “Taxonomie die moet worden weergegeven in broodkruimels voor berichttypen” in de plug-ininstellingen, ontvangt u in broodkruimels een link naar de categorie waartoe het Nieuws behoort met andere opties voor het weergeven van aangepaste berichten, dit kon niet worden gedaan.

      Bijgewerkt op 30 april 2016

      Ik ga je laten zien hoe je een eenvoudige zoekopdracht kunt maken met behulp van PHP en MySQL. Je leert:

      • Hoe u de GET- en POST-methoden gebruikt
      • Maak verbinding met de database
      • Communiceren met database
      • Vind overeenkomende database-items met het opgegeven woord of de zin
      • Resultaten weergeven

      Voorbereiding

      Je moet natuurlijk Apache, MySQL en PHP geïnstalleerd en actief hebben (je kunt gebruiken voor verschillende platforms of WAMP voor Windows, MAMP voor Mac) of een webserver/hosting die PHP- en MySQL-databases ondersteunt.

      Laten we een database en tabel maken en deze vullen met enkele gegevens die we kunnen gebruiken voor zoeken:

      • Ga naar phpMyAdmin. Als u een server op uw computer heeft, kunt u deze openen via http://localhost/phpmyadmin/
      • Maak een database, ik heb de mijne tutorial_search genoemd
      • Tabel maken Ik heb 3 velden gebruikt, ik heb mijn artikelen genoemd.
      • Configuratie voor 1e veld. Naam: id, type: INT, vink AUTO_INCREMENT aan, index: primair

      INT betekent dat het geheel getal is
      AUTO_INCREMENT betekent dat nieuwe inzendingen een ander (hoger) nummer zullen hebben dan de vorige
      Index: primair betekent dat het een unieke sleutel is die wordt gebruikt om de rij te identificeren

      • 2e veld: Naam: titel, type: VARCHAR, lengte: 225

      VARCHAR betekent een tekstreeks, maximaal 225 tekens (het is vereist om de maximale lengte op te geven), gebruik het voor titels, namen, adressen
      lengte betekent dat het niet langer kan zijn dan 225 tekens (je kunt het op een lager getal instellen als je wilt)

      • 3e veld: Naam: tekst, type: TEKST

      TEXT betekent dat het een lange tekenreeks is, het is niet nodig om de lengte op te geven, gebruik het voor lange tekst.

      • Vul de tabel met enkele willekeurige artikelen (je kunt ze vinden op nieuwswebsites, bijvoorbeeld: CNN, BBC, etc.). Klik op Invoegen in het bovenste menu en kopieer tekst naar specifieke velden. Laat het veld 'id' leeg. Plaats er minimaal drie.

      Het zou er ongeveer zo uit moeten zien:

      • Maak een map in uw serverdirectory en twee bestanden: index.php en search.php (eigenlijk kunnen we dit allemaal met slechts één bestand doen, maar laten we er twee gebruiken, dat zal gemakkelijker zijn)
      • Vul ze met standaard html-opmaak, doctype, head, etc.

      Zoekopdracht

      • Maak een formulier met zoekveld en verzendknop in index.php, u kunt de GET- of POST-methode gebruiken, actie instellen op search.php. Ik gebruikte "query" als naam voor het tekstveld

      GET - betekent dat uw informatie wordt opgeslagen in een URL (http://localhost/tutorial_search/search.php?query= uwvraag)
      POST - betekent dat uw informatie niet wordt weergegeven. Het wordt gebruikt voor wachtwoorden en privégegevens, veel veiliger dan GET

      Oké, laten we aan de slag gaan met php.

      • Open zoeken.php
      • PHP starten ()
      • Verbinding maken met een database (lees opmerkingen in de volgende code)

      < to >$query = mysql_real_escape_string($query);

      // zorgt ervoor dat niemand SQL-injectie gebruikt $raw_results = mysql_query("SELECT * FROM artikelen WAAR (`title` LIKE "%".$query."%") OF (`text` LIKE "%".$query."% ")") of die(mysql_error());

      // * betekent dat het alle velden selecteert, je kunt ook schrijven: `id`, `title`, `text` // Articles is de naam van onze tabel // "%$query%" is wat we zoeken , % betekent alles, bijvoorbeeld als $query Hallo is // het komt overeen met "hello", "Hello man", "gogohello", als je een exacte match wilt, gebruik dan `title`="$query" // of als je wilt om alleen het volledige woord te matchen, zodat "gogohello" eruit is, gebruik "% $query %" ...OR ... "$query %" ... OF ... "% $query" if(mysql_num_rows($raw_results) >

      "; // berichten ontvangen resultaten uit de database (titel en tekst) u kunt ook id ($results["id"]) ) else( // als er geen overeenkomende rijen zijn, volgt u echo "Geen resultaten"; ) ) else ( // als de lengte van de zoekopdracht kleiner is dan de minimale echo "Minimale lengte is ".$min_length; ) ?>

      Klaar!

      Nu werkt het. Probeer verschillende woorden, variaties, bewerk code, experimenteer. Ik voeg de volledige code van beide bestanden toe voor het geval je denkt dat je iets gemist hebt. Stel gerust vragen of vraag om tutorials.

      index.php

      Zoekopdracht



      zoeken.php

      Zoekresultaten = $min_length)( // als de lengte van de query groter is dan of gelijk is aan de minimumlengte, dan $query = htmlspecialchars($query); // verandert de tekens die in HTML worden gebruikt in hun equivalenten, bijvoorbeeld:< to >$query = mysql_real_escape_string($query);

      // zorgt ervoor dat niemand SQL-injectie gebruikt $raw_results = mysql_query("SELECT * FROM artikelen WAAR (`title` LIKE "%".$query."%") OF (`text` LIKE "%".$query."% ")") of die(mysql_error());

      // * betekent dat het alle velden selecteert, je kunt ook schrijven: `id`, `title`, `text` // Articles is de naam van onze tabel // "%$query%" is wat we zoeken , % betekent alles, bijvoorbeeld als $query Hallo is // het komt overeen met "hello", "Hello man", "gogohello", als je een exacte match wilt, gebruik dan `title`="$query" // of als je wilt om alleen het volledige woord te matchen, zodat "gogohello" eruit is, gebruik "% $query %" ...OR ... "$query %" ... OF ... "% $query" if(mysql_num_rows($raw_results) >

      // zorgt ervoor dat niemand SQL-injectie gebruikt $raw_results = mysql_query("SELECT * FROM artikelen WAAR (`title` LIKE "%".$query."%") OF (`text` LIKE "%".$query."% ")") of die(mysql_error());

      // * betekent dat het alle velden selecteert, je kunt ook schrijven: `id`, `title`, `text` // Articles is de naam van onze tabel // "%$query%" is wat we zoeken , % betekent alles, bijvoorbeeld als $query Hallo is // het komt overeen met "hello", "Hello man", "gogohello", als je een exacte match wilt, gebruik dan `title`="$query" // of als je wilt om alleen het volledige woord te matchen, zodat "gogohello" eruit is, gebruik "% $query %" ...OR ... "$query %" ... OF ... "% $query" if(mysql_num_rows($raw_results) > 0)( // als een of meer rijen worden geretourneerd, doe dan het volgende while($results = mysql_fetch_array($raw_results))( // $results = mysql_fetch_array($raw_results) plaatst gegevens uit de database in een array, terwijl deze geldig is, gebeurt dit de lus-echo ""; // berichten ontvangen resultaten uit de database (titel en tekst) u kunt ook id ($results["id"]) ) else( // als er geen overeenkomende rijen zijn, volgt u echo "Geen resultaten"; ) ) else ( // als de lengte van de zoekopdracht kleiner is dan de minimale echo "Minimale lengte is ".$min_length; ) ?> SSY staat voor "Siddha Samadhi-yoga"(vaak uitgebreid als ‘Science of Silence Yoga’) waar Siddha betekent 'iets (dat wil zeggen kennis) dat is bewezen of bereikt', Samadhi betekent 'een toestand waarin het intellect gelijkmoedig is' en

      SSY is de fundamentele kennis van het leven. Onze oude rishi's hadden een unieke manier van trainen geformuleerd, Brahmopadesam genaamd, wat een instructie is over de wetenschap van het niet-doen en het ervaren van innerlijke stilte en overvloed van buitenaf. Het brengt een enorme verandering teweeg in iemands kijk op het leven en bewerkstelligt een opmerkelijke volwassenheid in het individu. SSY is niets anders dan de huidige versie van deze oude wetenschap van Brahmopadesam.

      SSY wordt als trainingsprogramma aangeboden doorLife Yessence Academie (LiYA), en het is het vlaggenschipprogramma van de instelling. Omdat het het vlaggenschipprogramma is, is het synoniem geworden met de naam van de organisatie. Trainingen van deze grote kennis worden op veel plaatsen in de wereld gegeven door leraren van LiYA. De Indiase afdeling van LiYA heetRishi Samskruti Vidya Kendra (RSVK)).

      ‘Ik ben het lichaam’ is het eerste idee dat het ontwaken doodt. SSY is het proces
      Om Samadhi binnen te gaan, de staat van totale onthechting.
      "
      -Guruji