Wordpress kategorier och kategorier, wp_list_categories funktion. PHP-klass för bekvämt och säkert arbete med MySQL wp_list_categories-funktion för wordpress-kategori

) Jag visade dig ett exempel på att använda reguljära uttryck för att hitta vissa bitar källkod sidor. Nu ska vi lära oss hur man skriver dem själv. Denna färdighet hjälper dig att skriva, rensa text från onödiga fragment, söka efter rätt delar i stora volymer av text och så vidare.

Publiceringsdatum: 20.10.2013

Vi fortsätter att skriva en liveinternet besöksstatistik parser. Om någon precis har anslutit sig till oss råder jag dig att börja med där vi kopplade till tjänsten utan tillstånd. Där lärde vi oss hur man får innehåll från öppna sidor som inte är lösenordsskyddade. Men i själva verket är tillgången till de flesta sajter stängd, så det är väldigt lite användning för ett skript som inte vet hur man loggar in, som du förstår. Men oroa dig inte, vi fixar det nu.

Publiceringsdatum: 2013.10.08

God eftermiddag, läsare! Det är dags att träna lite. Du har redan tillräckligt med kunskap för att börja skriva användbara skript som kommer att göra ditt jobb lättare. En av dessa kan vara en parser. Vad det är beskrev jag i detalj i min egen, så om du inte vet råder jag dig att läsa den. Kortfattat är essensen av parsern att söka och isolera nödvändig information från ett stort stycke text. När det gäller Internet är detta oftast att dra ut den nödvändiga informationen från sidorna på webbplatser. I vårt fall kommer detta att vara Liveinternet. Låt oss gå!

Publiceringsdatum: 2013-10-03

Den här artikeln kommer att prata om sådana kraftfullt verktyg som cURL, såväl som php-biblioteket som ger tillgång till detta verktyg - libcurl. Vad är allt detta till för? För att kommunicera med servern via dataöverföringsprotokoll, som http eller ftp. Resten av protokollen är inte av särskilt intresse för oss, om någon vill fördjupa sig i detta ämne måste de gräva engelska resurser, och den här artikeln kommer att innehålla grunderna och exempel på användning.

Publiceringsdatum: 24.11.2012

Publiceringsdatum: 2012-11-05

Och nu kommer det att bli en ganska stor, men inte komplicerad lektion om att arbeta med filer i php. Först och främst, vad är filerna till för? Du kan trots allt lagra allt i databasen MySQL-data eller PostgreSQL eller vad som helst. Men ibland finns det sådana uppgifter när du använder databasen, med all bearbetning och oro för säkerheten för anslutningen, är inte tillrådligt. Till exempel måste du göra en vanlig räknare, och innan dess använde vi inte en databas i vårt projekt. Så varför skulle vi, för en liten räknares skull, starta en databas och bara lagra ett par rader i den? det är mycket lättare att använda filer. Dessutom, ibland stöder inte hosting databaser alls, då förblir filer i allmänhet den enda utvägen.

Publiceringsdatum: 2012-11-04

Närhelst du tillåter dina användare att skicka text till din webbplats (namn eller annan information), måste du vara försiktig. Du måste vara säker på att du inte har säkerhetshål på webbplatsen som angripare kan använda för att hacka. Om du fortfarande behöver ta emot data från användaren, se till att använda htmlentities-funktionen för att förhindra att HTML-kod eller skript körs som kan vara skadliga och farliga!

Publiceringsdatum: 2012-11-04

I den här lektionen kommer vi att titta på tekniker för att skicka data mellan formulär och sidor. Dessa metoder är POST och GET. Vi kommer att prata om var och en separat och mer i detalj. Generellt sett är det nödvändigt för kommunikation mellan formulär. Vi fyller till exempel i några fält på sidan och vi behöver överföra dem till en annan sida för bearbetning.

Publiceringsdatum: 03.11.2012

I själva verket, som du kanske har gissat, är do while-slingan en något modifierad version av medan loop, som vi i tidigare lektioner. Om du kommer ihåg hur den vanliga medan fungerar, så blir det lättare för dig att förstå den nya slingan. Låt oss upprepa: medan slingans brödtext exekveras om villkoret är sant och exekveras inte om det inte är sant, men det kanske inte exekveras ens en gång om villkoret är falskt från början. Hur gör man när man jobbar?

Publiceringsdatum: 03.11.2012

Föreställ dig att du har en associativ array som du vill iterera över. PHP ger ett enkelt sätt att använda varje element i en array i sin tur med Foreach-konstruktionen.

Idag är vårt mål att skapa en hierarkisk struktur av kategorier. Det är viktigt för oss att det är bekvämt att lagra kategorier och att det är lätt att visa dem där vi behöver dem.

Ibland verkar det enkla komplicerat, det är därför jag kommer att lägga ut några kodsnuttar som jag hoppas kommer vara användbara för dig för att implementera php-kategorier i form av ett träd.

Så strukturen bör bestå av kategori-id (id), kategorinamn (namn) och naturligtvis överordnad kategori-id (parent_id). I MySQL ser det ut så här:

SKAPA TABELL OM INTE FINNS `category` (`id` int(10) osignerad NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `parent_id` int(11) NOT NULL, PRIMARY KEY (`id`)) MOTOR =InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ;

Minimal och begriplig tabellstruktur för lagring av kategorier.

INSERT INTO `category` (`id`, `name`, `parent_id`) VÄRDEN (1, "Telefoner och surfplattor", "0"), (2, "Bilar", "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");

Där parent_id=0 har denna kategori ingen överordnad kategori.

Allt är klart och enkelt här. Låt oss nu gå vidare till att lista kategorierna. Men för den korrekta utmatningen av listan måste vi först få hela listan med php-kategorier, och först därefter, med hjälp av rekursion, bilda vårt träd. Följande funktion är att få denna lista:

Funktion get_cat() ( // fråga databasen $sql = "VÄLJ * FRÅN kategori"; $result = mysql_query($sql); if(!$result) (retur NULL; ) $arr_cat = array(); if( mysql_num_rows ($result) != 0) ( //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; } }

//skaffa katalogmatrisen $result = get_cat();

Nu behöver vi en funktion med rekursion

Funktion view_cat($arr,$parent_id = 0) ( //Rekursionsutgångsvillkor if(empty($arr[$parent_id])) (retur; ) echo "

    "; // slinga genom arrayen och visa för($i = 0; $i< count($arr[$parent_id]);$i++) { echo "
  • " .$arr[$parent_id][$i]["name"].""; //rekursion - kontrollera om det finns några underordnade kategorier view_cat($arr,$arr[$parent_id][$i]["id) "] ); eko "
  • "; ) echo "
"; }

Nu återstår bara att visa katalogen på skärmen med den rekursiva funktionen

View_cat($resultat);

Och i allmänhet är det allt. På så sätt kan vi få ett komplett träd av kategorier med oändliga underkategorier.

För varje inlägg och inlägg kan wordpress-användare ställa in en eller flera rubriker (kategorier). Den här funktionen låter dig gruppera inlägg som ligger nära innebörden och låter besökare bara läsa och se de rubriker som de gillar. Till exempel, när jag skapade min huvudblogg Tod's Blog, tänkte jag skriva om alla nyanser på internet - från design till programmering. Anta att en person kom från en sökmotor till en artikel om wordpress och skulle vilja läsa ännu mer om systemet – han skulle behöva rota i arkiven, återanvända sökningen eller se alla inlägg i rad. Allt detta hade naturligtvis kunnat undvikas genom att gå till en speciell kategori som heter wordpress. Eller till exempel för den som bara är intresserad av design kan en bloggsektion vara intressant.

Om du tittar noga på rubriken på bloggen kan du se en sorts meny där wordpress-rubrikerna fungerar som delar av projektet. För mig är detta ett ganska bekvämt och visuellt sätt att dela upp ämnet för inlägg.

I mitten av sidan ser du ett formulär för att lägga till en ny kategori. Här måste du ange dess namn (namn), etikett (en del av url-länken för CNC), överordnad kategori (om någon), och du kan också ställa in kort beskrivning. Föräldrakategorin låter dig skapa sektioner i wordpress med flera nivåer av kapsling – till exempel för kategorin "Wordpress" på någon IT-blogg kan du lägga till samma mallar, plugins osv.

Till höger på sidan Kategorier visas alla wordpress-kategorier, med möjlighet att redigera eller ta bort dem. För att utföra åtgärder, flytta bara muspekaren över namnet på en kategori, varefter du kommer att se en liten popup-meny.

Vid redigering ser du i ett av informationsblocken ett där du kan välja en eller flera kategorier för artikeln. Markera bara rutorna bredvid de namn du vill ha.

Här kan du också lägga till nya rubriker genom att klicka på lämplig länk. Den enda nackdelen med denna mekanism är att när du skapar kan du bara ange namn och överordnad kategori, medan du för att ställa in etikettfältet måste gå till avsnittet "Rubriker" och redigera informationen där.

Dessutom kan du redigera kategorier för blogginlägg genom deras lista i menyn Inlägg - Redigera. Där, när du håller muspekaren över en viss publikation, ser du länken "Snabbredigering". Klicka på den och se formuläret för redigering:

Här kan du ändra kategorier, taggar och allt Ytterligare information efter artikel. Saken är väldigt bekväm + fungerar utan att ladda om sidan.

wp_list_categories funktion för wordpress kategori

Av tradition överväger jag inte bara frågan om att arbeta med vissa delar av systemet, utan citerar också specialfunktioner för mallar. Precis som jag pratade om. Så, för att visa en lista över kategorier med länkar till dem, använd wp_list_categories. Den har ett antal argument:

  • show_option_all - visar en länk till alla kategorier om listan är vald som visningsstil.
  • orderby - sortering för kategorier efter ID, namn (namn), etikett (slug), antal inlägg (antal).
  • order - sorteringsordning (ASC - stigande, DESC - fallande).
  • show_last_updated - Visa datumet för den senaste uppdateringen.
  • stil - designstil: lista (lista), uppdelning genom
    (ingen).
  • show_count - visa antalet inlägg i kategorin.
  • hide_empty - dölj tomma kategorier där det inte finns några inlägg.
  • use_desc_for_title - Använd beskrivningen för title-attributet i länken.
  • child_of - visa endast kategorier för den givna överordnade rubriken.
  • flöde - visa en länk till flödet för kategorier.
  • feed_type - fodertyp.
  • feed_image - En bild för rss-ikonen.
  • exclude - exkludera kategorier från listan, medan child_of-parametern automatiskt inaktiveras.
  • exclude_tree - uteslutningar av hela kategorigrenen.
  • include är en omvänd parameter som endast inkluderar de angivna wordpress-kategorierna i listan.
  • hierarchical - parameter för att visa underkategorier.
  • title_li - titeln på listan med kategorier.
  • antal – antalet kategorier som ska visas (om det finns för många).
  • echo - Visar kategorier, standard är True.
  • djup - Anger antalet nivåer för underkategorier som ska visas.

Slutligen kommer jag att ge ett antal exempel på hur man använder wp_list_categories. Först varianten från rubriken på denna blogg.

"hide_empty=1&exclude=1&title_li=&orderby=count&order=desc&use_desc_for_title=0") ; ?>

Här ställs visningen av dolda kategorier in, kategorin med exkluderas från listan, en tom rad för blocktiteln, sortering efter antal artiklar och efter minskning (det vill säga jag har flest artiklar i avsnittet). Det sista argumentet ersätter inte kategoribeskrivningen i rubriken för länken.

Nåväl, ett par enkla situationer till. Användning av uteslutningar och inneslutningar av kategorier.

Om du har något att tillägga om rubrikerna och kategorierna för wordpress, skriv i kommentarerna.

uppdatering: Du kan också behöva ett litet hack för att . I wordpress är som standard rubriktexten definierad, ungefär som "visa alla inlägg i kategorin ...", du kan bara lämna namnet på kategorin istället - läs artikeln på länken ovan.

Returnerar en array av objekt som innehåller kategoriinformation.

Parametrarna som skickas till den här funktionen är mycket lika de parametrar som skickas till funktionen wp_list_categories() och kan skickas antingen som en array eller som en frågesträng: type=post&order=DESC .

✈ 1 gång = 0,005625s = Så långsam| 50 000 gånger = 11,98s = långsamt| PHP 7.1.11, WP 4.9.5

Användande

$categories = get_categories($args);

Användningsmönster

$categories = get_categories(array("taxonomi" => "kategori", "typ" => "inlägg", "barn_av" => 0, "förälder" => "", "orderby" => "namn", " order" => "ASC", "hide_empty" => 1, "hierarchical" => 1, "exclude" => "", "include" => "", "number" => 0, "pad_counts" => falskt, // full lista parametrar, se beskrivningen av funktionen http://wp-kama.ru/function/get_terms)); if($categories)( foreach($categories as $cat)( // Data i $cat-objektet // $cat->term_id // $cat->name (Kategori 1) // $cat->slug (rubrika) - 1) // $cat->term_group (0) // $cat->term_taxonomy_id (4) // $cat->taxonomi (kategori) // $cat->description (Beskrivningstext) // $cat-> förälder (0) // $cat->count (14) // $cat->object_id (2743) // $cat->cat_ID (4) // $cat->category_count (14) // $cat-> category_description (Beskrivningstext) // $cat->cat_name (Kategori 1) // $cat->category_nicename (rubrika-1) // $cat->category_parent (0) ) ) taxonomi (linje) Namnet på den taxonomi som ska bearbetas. Tillagd sedan version 3.0.
Standard: "kategori" typ (linje)
  • post - post kategorier (standard);
  • länk - avsnitt av länkar.
    Standard: "post"
Barn till (linje) Hämta underordnade kategorier (inklusive alla kapslingsnivåer) av den angivna kategorin. Parametern anger ID för den överordnade kategorin (kategorin vars kapslade kategorier du vill visa). förälder (siffra) Hämtar de kategorier vars överordnade kategori är lika med den angivna ID-parametern. Skillnaden från child_of är att en nivå av kapsling kommer att visas.
Standard: "" sortera efter (linje)

Sortering av mottagen data enligt vissa kriterier. Till exempel genom antalet inlägg i varje kategori eller efter kategorinamn. Följande kriterier är tillgängliga:

  • ID - sortering efter ID;
  • namn - sortera efter namn (standard);
  • snigel - sortering efter alt. namn (snigel);
  • räkna - med antalet poster i kategorin;
  • term_group - efter grupp.

Standard: "namn"

beställa (linje)

Sorteringsriktningen som anges i parametern "orderby":

  • ASC - i ordning, från minsta till största (1, 2, 3; a, b, c);
  • DESC - i omvänd ordning, från största till minsta (3, 2, 1; c, b, a).

Standard: "ASC"

Hide_empty (logisk)

Huruvida tomma kategorier ska visas eller inte (som inte har några poster):

  • 1 (sant) - ta inte emot tom,
  • 0 (falskt) - bli tom.

Standard: sant

Hierarkisk (logisk) Om parametern är inställd på Sann, kommer resultatet att inkludera tomma underordnade kategorier vars underordnade kategorier har poster (ej tomma).
Standard: sant utesluta (sträng/array) Uteslut alla kategorier från listan. Du måste ange kategori-ID:n separerade med kommatecken eller i en array. Om denna parameter anges kommer parametern child_of att åsidosättas.
Standard: "" omfatta (sträng/array) Lista endast de angivna kategorierna. Du måste ange kategori-ID:n separerade med kommatecken eller i en array.
Standard: "" siffra (siffra) Begränsa. Antalet kategorier som ska hämtas. Som standard, inga begränsningar - alla kategorier kommer att hämtas. pad_counts (logisk) Om du anger sant kommer talet som visar antalet poster i de överordnade kategorierna att vara summan av dess egna poster och poster från underordnade kategorier.
Standard: falskt

Exempel

#1 rullgardinslista

För att skapa en rullgardinslista med kategorier kan vi använda en annan specialfunktion wp_dropdown_categories() :

wp_dropdown_categories(array("hide_empty" => 0, "name" => "category_parent", "orderby" => "name", "selected" => $category->parent, "hierarchical" => true, "show_option_none" => __("Ingen")));

Men med detta tillvägagångssätt kommer vi att förlora en viss flexibilitet när det gäller att sätta upp listan, eftersom vi kommer att sluta med en färdig lista.

Därför kommer det i vissa fall att vara mer logiskt att skapa en rullgardinslista med funktionen get_categories(). Här är ett exempel (förutsatt att vi vill visa underkategorierna (barn) i kategori 10):

#2 Lista över kategorier och deras beskrivning

Det här exemplet visar oss hur man listar länkar till kategorier, där det omedelbart efter varje länk kommer att finnas en beskrivning av kategorin (anges när man skapar/redigerar en kategori):

"namn", "order" => "ASC")); foreach($categories as $category)( echo "

Kategori: term_id) . ""title="" . sprintf(__("Visa alla inlägg i %s"), $category->name) . "" " . ">" . $kategori->namn."

"; eka"

Beskrivning:". $category->description . "

"; eka"

Antal inlägg: ". $category->count . "

"; } ?>

Anteckningar

  • Se: get_terms() Typ av argument som kan ändras.

Lista över ändringar

Sedan version 2.1.0 Introducerad.

Koden getkategorier: wp-includes/category.php WP 5.3.2

"kategori"); $args = wp_parse_args($args, $defaults); /** * Filtrerar den taxonomi som används för att hämta termer vid anrop av get_categories(). * * @sedan 2.7.0 * * @param sträng $taxonomi Taxonomi att hämta termer från. * @param array $args En array av argument. Se get_terms(). */ $args["taxonomi"] = application_filters("get_categories_taxonomy", $args["taxonomi"], $args); // Back compat if (isset($args["type"]) && "link" == $args["type"]) ( _deprecated_argument(__FUNCTION__, "3.0.0", sprintf(/* översättare: 1: " typ => länk", 2: "taxonomi => länkkategori" */ __("%1$s är utfasad. Använd %2$s istället."), " typ => länk", "taxonomi => länkkategori")); $args["taxonomi"] = "länkkategori"; ) $categories = get_terms($args); if (is_wp_error($categories)) ( $categories = array(); ) else ( $categories = (array) ) $categories; foreach (array_keys($categories) som $k) ( _make_cat_compat($categories[ $k]); ) ) returnerar $categories; )

Och så till att börja med kommer jag att beskriva vad vi kommer att arbeta med och vad vi kommer att behöva.
Systemet: PHP 5 och högre, mySQL 4 och högre
Hjälparklasser: dbsql.class.php (databasklass)
Kapslad kategoriklass: classTreeCategory.php (direkt huvudklassen, dess lista och förklaringar ges nedan.

Skapa en tabell i databasen med följande struktur:

Visa MySQL-koden

Den här tabellen innehåller ett fält ID- kategorins serienummer, podcat- har värdet noll för kategorier av första ordningen eller ID för den överordnade kategorin, namn- namn på kategori.

Ett exempel på klassen som visar kategorier som en lista med underkategorier:

Se PHP-kod

include("dbsql.class.php"); include("classTreeCategory.php" ) ; $DB = new DB_Engine("mysql" , $settings [ "dbHost" ] , $settings [ "dbAnvändare" ] , $settings [ "dbPass" ], $settings [ "dbName" ] ); // ansluta till databasen, ange åtkomstdata$category = new TreeCategory ($DB ) ; // passera till kategoriklassen, objektet för arbetet med databasen$category -> table = "kategori" ; // tabellnamn i databasen med kategorier$array = $category -> getCategory() ; // få alla kategorier från databasen i form av en multi-level array, sorterade och kapslade redan i den ordning vi behöver$category -> outCategory ($array , "option" ); // förbereder utdata av kategorier (bildar HTML), skickar en array med kategorier echo $category -> html ; // mata ut kategorier som HTML

Som du kan se från exemplet ovan är allt extremt enkelt, vi skapar ett nytt $category-objekt, ställer in vilken databastabell vi arbetar med: 'category', sedan får vi från tabellen en lista över alla kategorier som redan är formaterade som en array och uppdelade i hierarkisk ordning, med hänsyn till alla underkategorier. sedan skickar vi arrayen till outCategory()-metoden, som genererar en färdig HTML-kod åt oss, som bara återstår att visas i webbläsaren.

OutCategory()-metoden, som vi kan se, tar två parametrar @array och @string i den första parametern en array med alla kategorier, och i den andra en sträng som innehåller ett värde alternativ eller tabell, anger detta värde vilken typ av HTML-kod som ska genereras.
Menande alternativ

Visa HTML-kod

För att infoga den givna HTML-koden i valfältet i valfri form.

Menande tabell- genererar följande HTML-kod:

Visa HTML-kod

Denna HTML-kod är praktisk för att klistra in i en tabell som visar alla våra kategorier underkategorier.

Klassen har även följande metoder:
deleteItem($id);- tar bort en kategori, trots de kapslade
delCategory($array, $id);- tar bort en kategori med alla kapslade underkategorier, $array - en matris med alla kategorier förberedda med metoden $category->getCategory(), $id - nummer på kategorin som ska raderas
Lägg till vara();- denna metod bör anropas om du vill lägga till en kategori, medan den här metoden läser värdena från data som överförs med POST-metoden, dvs. från $_POST-matrisen.
$name=$this->PHP_slashes(strip_tags($_POST['namn'])); // kategori namn
$podcat=intval($_POST['podcat']); // ID för den överordnade kategorin, om 0 anges kommer kategorin att vara i roten.
updateItem(); - liknande den tidigare metoden, förutom att denna metod uppdaterar kategorin, dess namn och kapslingsnivå.

table="category"; // begär att välja en lista med kategorier, tabellnamn * $category->outCategory($category->getCategory()); // förbered kategoriutdata (begär en rad kategorier) * echo $category->html; // visa kategorier i HTML-namn * */ /** * Dumpa tabellen som arbetas på * * SLIP TABELL OM FINNS `kategori`; * CREATE TABLE `category` (* `id` int(11) NOT NULL auto_increment, * `podcat` int(11) NOT NULL, * `name` varchar(255) NOT NULL, * PRIMARY KEY (`id`), * KEY `id` (`id`) *) ENGINE=MyISAM DEFAULT CHARSET=utf8; * */ klass TreeCategory ( /** * Databasfrågesträng */ var $table; /** * Databasgränssnitt */ var $DB; /** * Matris av kategorier med kapslade underkategorier */ var $arrayCat; / ** * Räkna automatiskt antalet bindestreck före kategorinamnet när du visar */ var $countPodcat; /** * HTML-kod för att visa kategorier med underkategorier */ var $html; /** * Skaffa gränssnittet för att arbeta med databasen och lägg in den i en lokal variabel */ funktion __construct($DB) ( $this->DB=$DB; $this->component=$_GET["komponent"]; ) /** * Hämtar en lista med kategorier, sorterar och lägger in i en array med kapslade arrayer, etc. * @return array-kategori */ funktion getCategory () ( $all = $this->DB->getAll("SELECT * FROM `($this->table)` ORDER BY `id` ASC"); $path = array(); if(count($all)>0) (foreach($all som $item): if($item["podcat"]==0)$sort[ $item[ "id"]]=$item; if($item["podcat"]>0) ( if(isset($path[$item["podcat"]])) ( $str="$sort" ; foreach( $path[$item["podcat"]] som $pitem): $rep =$artikel["podcat"]; $str.="[$pitem]"; endforeach; $str.="[($item["podcat"])]"; $str.="[($item["id"])]"; $str.="=$artikel;"; eval($str); foreach($path[$item["podcat"]] som $pitem): $path[$item["id"]]=$pitem; endforeach; $path[$item["id"]]=$item["podcat"]; ) annat ( $sort[$item["podcat"]]["sub"][$item["id"]]=$item; $path[$item["id"]]=$item["podcat" ]; ) ) endforeach; ) $this->arrayCat=$sort; returnera $this->arrayCat; ) /** * Skriver ut kategorierna, lägger den färdiga HTML-koden i $this->html * @param array Array med kategorier och kapslade underkategorier * @param string Typ av genererad HTML-kod för utmatning, alternativ eller tabell */ function outCategory(& $arrayCat, $type="option", $idSel=0) ( foreach($arrayCat som $sub) ( $this->countPodcat++; $this->outItem($sub, $type); if(!empty($ sub[" sub"]))$this->outCategory($sub["sub"], $type, $idSel); $this->countPodcat--; ) ) /** * Hjälpmetod för att förbereda HTML-kod * @param array Array med kategori * @param sträng Typ av genererad HTML-kod för utmatning, option eller tabell */ function outItem($sub, $type="option", $idSel=0) ( for($i=0;$ icountPodcat;$i++) ($out. ="-"; ) if($idSel==$sub["id"])$se="vald"; annars $se=""; if($type=="alternativ")$this->html.=" ($out) ($sub["namn"]) "; if($type=="tabell")$this->html.= ($out) ($sub["namn"]) HTML; ) funktion delCategory(&$a_tree,&$id=0) (foreach($a_tree som $sub) ( if($sub["id"]$id och isset($sub["sub"]))$this- >delCategory($sub["sub"],$id); if($sub["id"]==$id) ( $sql="DELETE FROM ($this->table) WHERE id = "$id" BEGRÄNSNING 1"; $this->DB->execute($sql); if (isset($sub["sub"])) $this->delCategory_process($sub["sub"]); ) ) ) funktion delCategory_process (&$a_tree) ( foreach($a_tree as $sub) ( $sql="RADERA FRÅN ($this->table) WHERE id = "($sub["id"])" LIMIT 1"; $this-> DB->exekvera($sql); if(isset($sub["sub"]))$this->delCategory_process($sub["sub"]); ) ) funktion updateItem() ( $name=$this- >PHP_slashes(strip_tags($_POST["namn"])); $podcat=intval($_POST["podcat"]); $id=intval($_POST["id"]); $sql="UPPDATERA `( $this->table)` SET `name` = "($name)",`podcat` = "($podcat)" WHERE `id`="($id)" LIMIT 1; "; $this->DB ->exekvera($sql); ) funktion addItem() ( $name=$this->PHP_slashes(strip_tags($_POST["namn"])); $podcat=intval($_POST["podcat"]); $ id=intval($_POST["id"]); $sql="I NSERT INTO `($this->table)` (`id`,`podcat`,`name`) VÄRDEN ("", "$podcat", "$name");"; $this->DB->execute($sql); ) funktion deleteItem($id) ( $id=intval($id); $sql="DELETE FROM `($this->table)` WHERE `id` = "($id)" LIMIT 1"; $DB- >execute($sql); header("Plats: ?component=($this->component)"); ) funktion PHP_slashes($string,$type="add") (if ($type == "add") ( if (get_magic_quotes_gpc()) ( return $string; ) else ( if (function_exists("addslashes")) (retur addslashes($string); ) else (retur mysql_real_escape_string($string); ) ) ) else if ($type == "strip") ( returnera stripslashes($string); ) else ( die("fel i PHP_slashes (blandat, lägg till | strip)"); ) ) )

Hela klassen skrevs inom en timme och har naturligtvis brister, men allt detta går att fixa. Dess användning är tillrådlig för utbildningsändamål, även om du förresten, efter att ha avslutat det lite, kan bädda in det i vilket system som helst och njuta av dess arbete)).

Jag skulle vara tacksam om du i kommentarerna erbjuder dina egna alternativ för att lösa detta problem - organisera kategorier på en oändlig häckningsnivå.

Dela med sig