Hyödytön luokka php. PHP-luokka kätevään ja turvalliseen työskentelyyn MySQL:n kanssa. Lisätietoja kirjoitetuista paikkamerkeistä

Nykyään tavoitteemme on luoda kategorioiden hierarkkinen rakenne. Meille on tärkeää, että luokkien tallentaminen on kätevää ja että ne on helppo näyttää siellä missä tarvitsemme.

Joskus yksinkertaiset asiat tuntuvat monimutkaisilta, minkä vuoksi julkaisen muutaman koodinpätkän, joista toivon olevan hyötyä PHP-kategorioiden toteuttamisessa puun muodossa.

Joten rakenteen tulisi koostua kategorian id:stä (id), luokan nimestä (nimi) ja tietysti pääluokan id:stä (parent_id). MySQL:ssä se näyttää tältä:

LUO TAULUKO, JOS EI OLE 'category' ('id' int(10) unsigned NOT NULL AUTO_INCREMENT, 'name' varchar(255) NOT NULL, 'parent_id' int(11) NOT NULL, PRIMARY KEY ('id')) ENGINE =InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ;

Minimaalinen ja selkeä taulukkorakenne kategorioiden tallentamiseen.

INSERT INTO `category` (`id`, `name`, `parent_id`) ARVOT (1, "Puhelimet ja tabletit", "0"), (2, "Autot", "0"), (3, "Samsung" ", "1"), (4, "Apple", "1"), (5, "LG", "1"), (6, "Ford", "2"), (7, "Lexus", "2"), (8, "BMW", "2"), (9, " Galaxy Tab 4", "3"), (10, "Galaxy S6", "3");

Kun arvo parent_id=0, tällä luokalla ei ole yläluokkaa.

Kaikki täällä on selkeää ja yksinkertaista. Siirrytään nyt luokkaluettelon näyttämiseen. Mutta näyttääksemme luettelon oikein, meidän on ensin hankittava koko php lista luokkiin ja käytä vasta sitten rekursiota puumme muodostamiseen. Seuraava toiminto on suunniteltu saamaan tämä luettelo:

Funktio get_cat() ( //tietokantakysely $sql = "VALITSE * FROM luokka"; $tulos = mysql_query($sql); if(!$result) ( return NULL; ) $arr_cat = array(); if( mysql_num_rows( $tulos) != 0) ( //Silmukassa muodostamme taulukon for($i = 0; $i< mysql_num_rows($result);$i++) { $row = mysql_fetch_array($result,MYSQL_ASSOC); //Формируем массив, где ключами являются адишники на родительские категории if(empty($arr_cat[$row["parent_id"]])) { $arr_cat[$row["parent_id"]] = array(); } $arr_cat[$row["parent_id"]] = $row; } //возвращаем массив return $arr_cat; } }

//hae hakemistotaulukko $tulos = get_cat();

Nyt tarvitsemme funktion, jossa on rekursio

Funktio view_cat($arr,$parent_id = 0) ( //Ehdot rekursiosta poistumiselle if(empty($arr[$parent_id])) ( return; ) echo "

    "; // kiertää taulukon läpi ja näyttää sen näytöllä for($i = 0; $i< count($arr[$parent_id]);$i++) { echo "
  • " .$arr[$parent_id][$i]["nimi"]."; //rekursio - tarkista, onko lapsiluokkia view_cat($arr,$arr[$parent_id][$i]["id" ] ); kaiku "
  • "; ) kaiku"
"; }

Nyt jäljellä on vain näyttää hakemisto näytöllä rekursiivisen funktion avulla

Näytä_kissa($tulos);

Ja yleensä siinä kaikki. Näin saamme täydellisen luokkapuun loputtomilla alakategorioilla.

) Näytin sinulle esimerkin säännöllisten lausekkeiden käyttämisestä tiettyjen kappaleiden etsimiseen lähdekoodi sivuja. Nyt opimme kirjoittamaan niitä itse. Tämä taito auttaa sinua kirjoittamaan, puhdistamaan tekstiä tarpeettomista fragmenteista, etsimään tarvittavia osia suurista tekstimääristä ja niin edelleen.

Julkaisupäivä: 20.10.2013

Jatkamme live-internet-kävijätilastojen jäsentimen kirjoittamista. Jos joku on juuri liittynyt joukkoomme, niin suosittelen aloittamaan siitä, missä olemme yhteydessä palveluun ilman lupaa. Siellä opimme vastaanottamaan sisältöä avoimilla sivuilla, joita ei ole suojattu salasanalla. Mutta itse asiassa pääsy useimmille sivustoille on suljettu, joten skriptistä, joka ei voi kirjautua sisään, on hyvin vähän hyötyä, kuten ymmärrät. Mutta älä huoli, me korjaamme kaiken nyt.

Julkaisupäivä: 08.10.2013

Hyvää iltapäivää lukijat! On aika harjoitella vähän. Sinulla on jo tarpeeksi tietoa aloittaaksesi hyödyllisten skriptien kirjoittamisen, jotka helpottavat työtäsi. Yksi näistä voi olla jäsentäjä. Kuvasin yksityiskohtaisesti, mitä tämä on omassani, joten jos et tiedä, suosittelen lukemaan sen. Lyhyesti sanottuna jäsentimen ydin tiivistyy etsimiseen ja eristämiseen tarvittavat tiedot suuresta tekstistä. Internetin tapauksessa tämä tarkoittaa useimmiten vaadittujen tietojen purkamista verkkosivustojen sivuilta. Meidän tapauksessamme se on Liveinternet. Mennään siis!

Julkaisupäivä: 10.3.2013

Tässä artikkelissa puhutaan niin tehokkaasta työkalusta kuin cURL, sekä PHP:n kirjastosta, joka tarjoaa pääsyn tähän työkaluun - libcurl. Mitä varten tämä kaikki on? Kommunikoidaksesi palvelimen kanssa tiedonsiirtoprotokollien avulla, esimerkiksi http tai ftp. Muut protokollat ​​eivät ole meille erityisen kiinnostavia, jos joku haluaa syventää tätä aihetta, hänen on kaivettava esiin englanninkieliset resurssit, ja tämä artikkeli sisältää perusteet ja esimerkkejä käytöstä.

Julkaisupäivä: 24.11.2012

Julkaisupäivä: 05.11.2012

Ja nyt tulee olemaan melko suuri, mutta ei monimutkainen oppitunti tiedostojen käsittelystä PHP:ssä. Ensinnäkin, mitä varten tiedostot ovat? Loppujen lopuksi voit tallentaa kaiken tietokantaan MySQL-tiedot tai PostgreSQL tai jokin muu. Mutta joskus on tehtäviä, kun tietokannan käyttäminen, kaikki käsittely ja yhteyden turvallisuudesta huolehtiminen, ei ole suositeltavaa. Esimerkiksi meidän on tehtävä tavallinen laskuri, mutta ennen tätä emme käyttäneet tietokantaa projektissa. Joten, pitäisikö meidän luoda yhden pienen laskurin vuoksi tietokanta ja tallentaa siihen vain muutama rivi? Täällä on paljon helpompaa käyttää tiedostoja. Lisäksi joskus hosting ei tue tietokantoja ollenkaan, jolloin tiedostot ovat yleensä ainoa vaihtoehto.

Julkaisupäivä: 04.11.2012

Aina kun annat käyttäjien lähettää tekstiä sivustollesi (nimi tai muita tietoja), sinun on oltava varovainen. Sinun on varmistettava, että sivustosi tietoturvassa ei ole aukkoja, joita hyökkääjät voivat murtautua verkkosivustollesi. Jos sinun on silti saatava tietoja käyttäjältä, muista käyttää htmlentities-toimintoa estääksesi HTML-koodin tai skriptien suorittamisen, jotka voivat olla haitallisia ja vaarallisia!

Julkaisupäivä: 04.11.2012

Tällä oppitunnilla tarkastellaan tekniikoita tietojen siirtämiseen lomakkeiden ja sivujen välillä. Tällaisia ​​menetelmiä ovat POST ja GET. Puhumme jokaisesta erikseen ja yksityiskohtaisemmin. Yleisesti ottaen tätä tarvitaan lomakkeiden väliseen viestintään. Esimerkiksi täytämme joitain kenttiä sivulla ja meidän on siirrettävä ne toiselle sivulle käsittelyä varten.

Julkaisupäivä: 03.11.2012

Itse asiassa, kuten olet jo arvannut, do while -silmukka on hieman muokattu versio aiemmilla oppitunnilla näkemästämme while-silmukasta. Jos muistat, kuinka tavallinen while-silmukka toimii, sinun on helpompi ymmärtää uusi silmukka. Toistetaan: while-silmukan runko suoritetaan, jos ehto on tosi, ja sitä ei suoriteta, jos se ei ole tosi, mutta sitä ei välttämättä suoriteta edes kerran, jos ehto on epätosi alusta alkaen. Miten menee töissä?

Julkaisupäivä: 03.11.2012

Kuvittele, että sinulla on assosiatiivinen taulukko, jota haluat toistaa. PHP tarjoaa helpon tavan käyttää taulukon jokaista elementtiä vuorotellen Foreach-konstruktilla.

Palauttaa joukon objekteja, jotka sisältävät tietoja luokista.

Tälle funktiolle välitetyt parametrit ovat hyvin samankaltaisia ​​kuin wp_list_categories()-funktiolle välitetyt parametrit, ja ne voidaan välittää joko taulukkona tai kyselymerkkijonona: type=post&order=DESC .

✈ 1 kerta = 0,005625s = erittäin hidas | 50 000 kertaa = 11,98 s = hidas | PHP 7.1.11, WP 4.9.5

Käyttämällä $categories = get_categories($args); Käyttömalli $categories = get_categories(array("taksonomia" => "luokka", "tyyppi" => "post", "child_of" => 0, "parent" => "", "orderby" => "nimi" , "order" => "ASC", "hide_empty" => 1, "hierarchical" => 1, "exclude" => "", "include" => "", "number" => 0, "pad_counts" => väärä, // täydellinen lista Katso parametrit funktion kuvauksesta http://wp-kama.ru/function/get_terms)); if($categories)( foreach($categories as $cat)( // $kissa-objektin tiedot // $kissa->term_id // $kissa->nimi (Rubriktio 1) // $kissa->etana (rubrika - 1) // $kissa->termi_ryhmä (0) // $kissa->termi_taxonomy_id (4) // $kissa->taksonomia (luokka) // $kissa->kuvaus (Kuvausteksti) // $kissa-> vanhempi (0) // $kissa->määrä (14) // $kissa->objektin_tunnus (2743) // $kissa->kissan_ID (4) // $kissa->category_count (14) // $kissa-> kategorian_kuvaus (Kuvausteksti) // $kissa->kissan_nimi (Rubric 1) // $kissa->luokan_suunnike (rubrika-1) // $kissa->kategorian_vanhempi (0) ) taksonomia (linja) Käsiteltävän taksonomian nimi. Lisätty versiosta 3.0 lähtien.
Oletus: "luokka" tyyppi (linja)
  • post - viestien luokat (oletus);
  • linkki - linkkiosat.
    Oletus: "post"
lapsi_ (linja) Hanki määritetyn luokan aliluokat (mukaan lukien kaikki sisäkkäiset tasot). Parametri määrittää pääluokan tunnuksen (luokka, jonka sisäkkäiset luokat haluat näyttää). vanhempi (määrä) Hakee luokat, joiden yläluokka on sama kuin parametrissa määritetty tunnus. Ero child_of:sta on, että yksi sisäkkäistaso näytetään.
Oletus: "" tilauksesta (linja)

Vastaanotetun tiedon lajittelu tiettyjen kriteerien mukaan. Esimerkiksi kunkin luokan viestien lukumäärän tai kategorioiden nimien mukaan. Seuraavat kriteerit ovat käytettävissä:

  • ID - lajittele tunnuksen mukaan;
  • nimi - lajittele nimen mukaan (oletus);
  • etana - lajittele alt. nimi (etana);
  • count - luokan merkintöjen lukumäärän mukaan;
  • term_group - ryhmäkohtaisesti.

Oletus: "nimi"

Tilaus (linja)

"Orderby"-parametrissa määritetty lajittelusuunta:

  • ASC - järjestyksessä, pienimmästä suurimpaan (1, 2, 3; a, b, c);
  • DESC - käänteisessä järjestyksessä, suurimmasta pienimpään (3, 2, 1; c, b, a).

Oletus: "ASC"

Piilota_tyhjä (looginen)

Haluatko vastaanottaa tyhjiä luokkia (ei merkintöjä):

  • 1 (tosi) - älä vastaanota tyhjiä,
  • 0 (false) - vastaanota tyhjiä.

Oletus: tosi

Hierarkkinen (looginen) Jos arvoksi asetetaan tosi , tulos sisältää tyhjiä aliluokkia, joiden alaluokissa on (ei-tyhjiä) merkintöjä.
Oletus: tosi sulkea pois (merkkijono/taulukko) Sulje pois kaikki luokat luettelosta. Sinun on määritettävä luokkatunnukset pilkuilla erotettuina tai taulukossa. Jos tämä parametri on määritetty, parametri child_of ohitetaan.
Oletus: "" sisältää (merkkijono/taulukko) Listaa vain määritetyt luokat. Sinun on määritettävä luokkatunnukset pilkuilla erotettuina tai taulukossa.
Oletus: "" määrä (määrä) Raja. Haettavien luokkien määrä. Oletusarvoisesti ei rajoituksia - kaikki luokat haetaan. pad_counts (looginen) Jos hyväksyt tosi, yläluokkien viestien lukumäärää osoittava luku on sen viestien ja alaluokkien viestien summa.
Oletus: false

Esimerkit #1 Pudotusvalikko

Luokkien avattavan luettelon luomiseksi voimme käyttää toista erityistä funktiota, wp_dropdown_categories() :

Wp_dropdown_categories(array("hide_empty" => 0, "name" => "category_parent", "orderby" => "nimi", "selected" => $category->parent, "hierarchical" => true, "show_option_none" => __("Ei mitään")));

Tällä lähestymistavalla menetämme kuitenkin jonkin verran joustavuutta luettelon laatimisessa, koska saamme täydellisen luettelon.

Siksi joissakin tapauksissa on loogisempaa luoda pudotusvalikko käyttämällä get_categories()-funktiota. Tässä on esimerkki (olettaen, että meidän on näytettävä luokan 10 alaluokat (lapset):

#2 Luettelo luokista ja niiden kuvauksista

Tämä esimerkki näyttää meille, kuinka voimme näyttää linkkiluettelon luokkiin, jossa välittömästi jokaisen linkin jälkeen on luokan kuvaus (määritetään luokkaa luotaessa/muokatessa):

Huomautuksia
  • Katso: get_terms() Muutettavissa olevien argumenttien tyyppi.
Luettelo muutoksista
Versiosta 2.1.0 alkaen Otettu käyttöön.
Hanki luokkakoodi: wp-includes/category.php WP 5.3.2