Heim  >  Artikel  >  php教程  >  PHP Advanced: Erzielen Sie eine unbegrenzte Klassifizierung

PHP Advanced: Erzielen Sie eine unbegrenzte Klassifizierung

黄舟
黄舟Original
2016-12-14 11:38:491305Durchsuche
  1. Analyse

    Wenn wir PHP zum Erstellen von Websites verwenden, ist die Klassifizierung sehr wichtig. Diese zweite Klassifizierung wird jetzt als Unterklassifizierung bezeichnet Die Klassifizierung ist nur in die dritte Kategorie unterteilt:

    Erste Kategorie (Elternkategorie)-->Zweite Kategorie (Unterkategorie)-->Dritte Kategorie (Enkelkategorie)

    Je mehr solche Verwandtschaftsklassifikationen gibt es, je komplexer und schwieriger es ist, die Klassifizierungsverarbeitung und -steuerung auf derselben Ebene zu steuern, da nur eine Datenbank zum Aufzeichnen dieser Klassifizierungsebene erforderlich ist, z. B. Klassifizierungen wie System und Nachrichten sind auf dieser Ebene sehr einfach zu handhaben, aber für eine Website reicht die Klassifizierung der ersten Ebene nicht aus und muss erneut klassifiziert werden, z. B.:

    System -> Linux, Windows
    Neuigkeiten-->Linux-Neuigkeiten, Windows-Neuigkeiten

    Diese Klassifizierung wird klarer, zumindest werden die Leute verstehen, dass das System Linux und Windows umfasst und die Nachrichten Linux-Neuigkeiten und Windows-Neuigkeiten umfassen Die Informationen sind klarer, daher klassifiziere ich weiterhin:

    Linux-->Systemtools, Kernel, Programmiersprache, Entwicklungstools
    ...

    Die Klassifizierung hat die dritte Ebene erreicht , Informationen Die Verarbeitung von Daten wird klarer, das heißt, um die Daten klarer zu verarbeiten, ist die Klassifizierung umso bequemer. Dies erleichtert nicht nur die Verarbeitung von Informationen, sondern macht sie auch für Internetnutzer einfacher Da die Klassifizierung jedoch immer weiter verfeinert wird, wird es immer schwieriger, das Programm und die Datenbank zu kontrollieren.

    Schwierigkeit eins: Wie man damit umgeht Verwandte Verwandtschaftsklassifizierungen in der Datenbank?
    Schwierigkeit zwei: Wie kann man dies mit PHP erreichen? Die Beziehung?

    Diese Art der mehrstufigen und detaillierten Klassifizierung ist ein Problem, das jeder PHP-Programmierer lösen muss , weil das Klassifizierungsproblem bei der Erstellung einer guten und hervorragenden Website unvermeidlich ist und die Lösung dieses Problems ziemlich komplex ist. Das größte Problem ist die Klassifizierungsverarbeitung der Datenbank, denn wenn die Datenbank nicht ordnungsgemäß gehandhabt wird, führt dies zu a enorme Arbeitsbelastung und sogar eine Neuplanung der Datenbank ...

    Das ist keine Übertreibung, denn wenn es um die Datenbankverarbeitung geht, verwenden die Leute die Klassifizierungsmethode der ersten Ebene, um eine Datenbank aufzubauen Damals wurde diese Methode auch für die Klassifizierung verwendet. Da die meisten Websites in die dritte Ebene eingeteilt sind, gibt es in der Datenbank jedoch auch Nachteile, wenn eine weitere Klassifizierung erforderlich ist offenbart, denn je weiter unten die Klassifizierung ist, desto mehr werden der Arbeitsaufwand und die Anzahl der Verfahren dramatisch zunehmen Alle, die Windows verwendet haben, wissen, dass der Windows-Ordner ein unendlich hierarchisches Verzeichnis erstellen kann, sodass die Klassifizierung auch bei Linux endlos erfolgt. Die von mir eingeführte Methode ist dieselbe wie dieses Formular.
    2. Datenbankplanung
    ------------------- --------------------------
    Ich habe vorhin über die Komplexität der Klassifizierung gesprochen, daher ist die Planung der Datenbank sehr wichtig geworden Schritt, um eine unbegrenzte Klassifizierung zu erreichen.

    Ich habe die Datenbankplanung des Forums eingeführt, und die unbegrenzte Klassifizierung ist auch eine Erweiterung dieser Art von Kind -Vater-Beziehung, also die Klassifizierungsdatenbank, wie diese Kind-Vater-Beziehung hergestellt und geklärt werden kann

    1) Wie man mit der Informationsspeicherung jeder Kategorie umgeht; Wie man mit den Verwandtschaftsbeziehungen der Klassifizierung umgeht;

    Die Datenbankverarbeitung von Verwandtschaftsbeziehungen ähnelt der Datenbankverarbeitung von Foren Klassifizierung:

    Felder erstellen:
    id(int): wird zum Aufzeichnen der natürlichen Seriennummer jeder Kategorie verwendet
    uid(int): wird zum Aufzeichnen der ID-Nummer der übergeordneten Kategorie der Kategorie verwendet
    type(char) :Der Name der Kategorie
    roue_id(varchar): Affinitätsbaum, verbunden mit der ID von :0:2:10:20: zur Angabe der Abstammung
    roue_char(varchar): Affinität Baum, ähnlich wie: system:linux:development Tool: gcc: (Es spielt keine Rolle, ob dieses Feld existiert oder nicht. Um jede Beziehung besser zu verstehen, ist der Zeichenausdruck natürlich direkter als der numerische Ausdruck^o^, aber es ist am besten, dieses Feld hinzuzufügen)

    Eine solche unendliche Klassifizierung Die Kategorietabelle wird erstellt. Als Nächstes müssen Sie eine Datenbank zum Speichern von Informationen erstellen. Dies ist am bequemsten, um eine Tabelle zu verarbeiten und abzufragen ist eine Tabelle zum Speichern von Informationen. type_message:

    id(int): die Seriennummer der Nachricht;
    typeid(int): ID-Nummer der Kategorie; ;
    Nachricht (Text): Nachrichteninhalt;
    Zeit: Zeitpunkt der Erstellung der Nachricht

    Diese beiden Datentabellen können die Aufgabe der unendlichen Klassifizierung abschließen (die Hilfsfelder der beiden Tabellen sind). nicht hinzugefügt, Leser können sie selbst hinzufügen.

    Die restlichen Aufgaben werden von PHP erledigt.

    3. ----------------------------------- --------------- -----------

    Dieser Schritt ist der komplizierteste und mühsamste, um die Funktion der unendlichen Klassifizierung zu implementieren. Schauen wir uns zunächst die Schritte an, die ausgeführt werden müssen.

    1) Kategorie-Upload erstellen;
    3) Jede Kategorie und die Beziehung zwischen ihnen klar anzeigen;
    5) Umgang mit den Bearbeitungs- und Löschfunktionen;

    Der schwierigste dieser fünf Schritte ist der fünfte, da das Bearbeiten und Löschen von Kategorien eindimensionale Probleme mit sich bringt.

    Im Folgenden werde ich darauf eingehen Beschreiben Sie die Programmsteuerung von PHP einzeln:

    1) Kategorie-Upload erstellen

    Bevor ich diese Funktion einführe, möchte ich zunächst die Funktion „explodieren“ vorstellen Um eine Zeichenfolge zu zerlegen, spezifische Verwendung, zum Beispiel:

    Zerlegen Sie die Zahlen in „0:1:2:3:4“

    $val='0:1:2:3 : 4';
    $rid=explode(":",$val);

    Nach der Verarbeitung durch die Funktion „explodieren“ werden alle Zahlen in $val in das Array $rid zerlegt und benötigt in Anführungszeichen setzen. Geben Sie einfach Folgendes aus: echo '$rid[0],$rid[1],$rid[2]..."; und das war's. Die Funktion explosion( ) spielt eine sehr wichtige Rolle im gesamten Klassifizierungsprozess . Beginnen wir nun mit der Einführung der Programmsteuerung ohne aktuelle Klassifizierung.

    Sie können davon ausgehen, dass es eine allgemeine Klassifizierung 0 gibt und alle Klassifizierungen davon abgeleitet sind. Lassen Sie uns nun das erste Klassifizierungssystem festlegen wie es im Datenbankspeicherformat funktioniert:

    uid_id |. Linux' unten:
    uid |. rout_char 1 | Speicher, jetzt vervollständigen wir den PHP-Code. Dieser ist dem Forum-Code sehr ähnlich. Wir müssen lediglich die Kategorie-ID in UID und die UID der übergeordneten Kategorie in 0 einfügen. Schauen wir uns den Code an:

    < showtype';

    // Legen Sie die UID der übergeordneten Kategorie fest
    if (empty($uid)) $uid=0

    //Datenbankspeicher****** ****************** *******************************
    if ($func=='save'):

    $fields = ""
    $values ​​​​= ""

    if ($id!="") {
    $fields .= ",id";
    $values.=" ,$id";

    if ($uid!="") {
    $fields .= ",uid";
    $values.=",$uid";

    if ($type!="") {
    $fields .= ",type ";
    $values.=",'$type'";
    }

    if ($route_id=="") {

    //Holen Sie sich die route_id von übergeordnete Kategorie
    if ($uid!=0) {
    $result = mysqlquery( "select * from type where id=$uid");
    $route_id=mysql_result($result,0,"route_id ");
    } else {
    $router_id='0';
    }
    $fields .= ",route_id";
    //Bilden Sie Ihre eigene route_id
    $route_id= "$route_id:$id";
    $values.=",'$route_id'" ; ) {
    $fields .= ",route_char";
    $route_char="$ route_char:$type";
    $values.=",'$route_char'"; 🎜>$fields .= ",route_char";
    $route_char=$type;
    $values.=",'$route_char'";

    $fields = substr( $fields,1,strlen($fields)-1);
    $values ​​​​= substr( $values,1,strlen($values)-1);

    $result = mysqlquery(" in Typ ($fields) Werte ($values) einfügen);
    ...
    endif; /* end save */


    //Kategorie-Upload*** *************************** *********************
    if ($func=='createtype'):

    //Holen Sie sich Ihre eigene ID
    $result = mysqlquery("select * from type order by
    id desc"
    $num=mysql_numrows($result);
    if (!empty($num)) {
    $cat = mysql_result ($result,0,"id");
    } else {
    $ cat=0;
    }

    //Beurteilen Sie den Status der Klassifizierung
    if ($uid != 0) {
    $result=mysql_query("select * from type where id= $uid");
    $type=mysql_result($result,0,"type");
    $route_char=mysql_result( $result,0,"route_char");
    } else {
    $type='parent Category';
    }
    echo "

    "

    echo "";
    echo "";
    echo "";

    echo ""; 

    echo „
    Kategorie:$type
    Kategorie erstellen:
    ";
    $cat=$cat +1;
    echo ""
    echo "" ;
    echo ""; 
    echo "
    “; 
    echo "
    "; 
    endif; /* end createtype */ 

    //显示分类************************************ ************** 
    if ($func=='showtype'): 

    echo ""; 

    //判断分类的状态 
    if ($uid!=0) { 
    $result=mysql_query("select * from type where id=$uid"); 
    $type=mysql_result($result,0,"type"); 
    } else { 
    $type='父分类'; 


    echo ""; 

    echo ""; 

    $result=mysql_query("select * from type where uid=$uid"); 
    $num=mysql_numrows($result); 

    if (!empty($num)) { 
    for ($i=0;$i<$num;$i++) { 

    $id=mysql_result($result, $i,"id"); 
    $type=mysql_result($result,$i,"type"); 

    echo „"; 



    echo "
    创建分类
    $type
    “; 
    echo "$type"; 
    echo "
    "; 
    endif; /* end showtype */ 
    ..... 
    ..... 

    ?> 

    以上的程序便完成了无限分类的基本创建,存储和显示,接着就是完善分类创建功能的各个部分了.

    4.路径跟踪 
    ---- -------------------------------------------------- ------ 
    前面已经介绍过了分类的创建实现方法,在分类表里记载了 rout_id 和 rout_char 这两个储分类路径的信息, 在不做任何处理的情况下, 程序只能够顺序下到最底层的分类而无法倒退(当然可利用浏览器的 zurück. 键倒退,但这对程序来说是不完整的), die Funktion „rout_id“ und „rout_char“. 

    具体的做法,假如数据库记载了这么一条分类信息: 

    id:4 
    uid:2 
    type:开发工具 
    rout_id:0:1: 2:4 
    rout_char:系统:linux:开发工具 

    当程序走到分类'开发工具'上时,除了要求显示路径信息外还要求能够去到路径上的任一分类中,该怎么做能?这里就需要用到 explosion() 函数了.因为 rout_id 和 rout_char 是对应关系的,所以可将它们分解: 

    $path=explode(":",$rout_id) ; 
    $path_gb=explode(":",$rout_char); 

    这时所有分类信息都被分解了,现在要做的就是以链接的方式还原路径信息: 

    für ($i=0;;$i++) { 
    $a=$i+1; 
    echo "href=$php_self?func=showtype&uid=",$path[$a],">",$path_gb[$i],":"; 
    if (empty($path_gb[$i])) { 
    break; 



    上面这段代码就实现了加链接还原路径的功能,因为实现的是无限分类,因此是没有上限的,所以在 for($i=0; ;$i++) 里没有范围限制,而设置循环退出的条件是 $path_gb[$i] 中的值为空,将这段代码插入类别显示版面的程序块内就行了: 

    < ;? 
    ..... 
    ..... 
    //显示分类****************************** ********************* 
    if ($func=='showtype'): 

    echo ""; 

    //判断分类的状态 
    if ($uid!=0) { 
    $result=mysql_query("select * from type where id=$uid"); 
    $type=mysql_result($result,0,"type"); 

    //******** 新加入的代码 *************** 
    $rout_id=mysql_result($result,0,"rout_id "); 
    $rout_char=mysql_result($result,0,"rout_char"); 
    $path=explode(":",$rout_id); 
    $path_gb=explode(":",$rout_char); 
    echo „";
    //******** end *********************** 

    } else { 
    $type='父分类'; 


    echo ""; 

    echo ""; 

    $result=mysql_query("select * from type where uid=$uid"); 
    $num=mysql_numrows($result); 

    if (!empty($num)) { 
    for ($i=0;$i<$num;$i++) { 

    $id=mysql_result($result, $i,"id"); 
    $type=mysql_result($result,$i,"type"); 

    echo „"; 



    echo "
    “; 
    for ($i=0;;$i++) { 
    $a=$i+1; 
    echo "href=$php_self?func=showtype&uid=",$path[$a],">",$path_gb[$i],":"; 
    if (empty($path_gb[$i])) { 
    break; 


    echo "
    创建分类
    $type
    “; 
    echo "$type"; 
    echo "
    "; 
    endif; /* Showtyp beenden*/
    .....
    .....
    ?> >
    Nach Abschluss dieses Funktionsblocks können Sie weiterhin geheime Informationen anzeigen ... Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn