Network Security Internet Technology Development Database Servers Mobile Phone Android Software Apple Software Computer Software News IT Information

In addition to Weibo, there is also WeChat

Please pay attention

WeChat public account

Shulou

What is the complete code and comments for creating an infinitely hierarchical class of PHP

2025-02-21 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Development >

Share

Shulou(Shulou.com)06/03 Report--

This article will explain in detail what is the complete code and comments about creating the infinite rating class of PHP. The content of the article is of high quality, so the editor will share it for you to do a reference. I hope you will have some understanding of the relevant knowledge after reading this article.

The following provides a PHP infinite rating class code, friends who want to achieve infinite rating class can try. Bug has been checked and corrected and can be used by copying the code directly (angle brackets need to be replaced).

1. There is a b_mtype table in the database ProductShow, and the table statement is as follows:

CREATE TABLE `bmtype` (`typeid` int (4) NOT NULL default '0characters, `typename` varchar (50) NOT NULL default'', `parentid` int (4) NOT NULL default '0blocks, `parentstr` varchar (200i) NOT NULL default'', `depth`int (4) NOT NULL default '0pieces, `rootid` int (4) NOT NULL default' 0pieces, `child`varchar (200) NOT NULL default'', `orders`varchar (200) NOT NULL default'', PRIMARY KEY (`typeid`) TYPE=MyISAM

2. ProductClass.php code: (just copy it directly)

< html>

< head>

< meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

< title>

WHB_PHP infinite level classification

< /title>

< style type="text/css">

< !-- .STYLE1 {color: #FF0000} body,td,th { font-family: 宋体; font-size: 12px; } .STYLE2 { color: #FFFFFF; font-size: 14px; font-weight: bold; } -->

< /style>

< /head>

< body>

< ?php ini_set("error_reporting","E_ALL & ~E_NOTICE");//忽略所有警告信息 require_once("conn.php");//嵌入连接文件 @$ToDo=$_GET["ToDo"]; switch($ToDo) { case "add": echo add(); break; case "edit": echo edit(); break; case "saveadd": echo saveadd(); break; case "saveedit": echo saveedit(); break; case "del": echo del(); break; default: ?>

< table width="90%" border="0" align="center" cellpadding="0" cellspacing="0" class="tblborder">

< tr>

< td valign="top">

< table width="100%" border="0" cellspacing="1" cellpadding="3">

< tr>

< td width="55%" height="20" align="center" bgcolor="#698FC7">

< span class="tblhead">

< b>

< span class="STYLE2">

Commodity category setting

< /span>

< a href="?ToDo=add">

Add a new category

< /a>

< /b>

< /span>

< /td>

< /tr>

< /table>

< table width="100%" bgcolor="#cccccc" cellspacing="1" cellpadding="3">

< tr bgcolor="#F9F9F9">

< td width="6%" height="21">

ID

< /td>

< td width="49%">

Category name

< /td>

< td width="14%">

Sort

< /td>

< td width="31%">

Operation

< /td>

< /tr>

< ?php $query=mysql_query("select * from b_mtype order by rootid,orders"); while($arr=mysql_fetch_array($query)) { ?>

< tr>

< td bgcolor="#FFFFFF">

< ?php echo $arr["typeid"];?>

< /td>

< td bgcolor="#FFFFFF">

< ?php if ($arr["depth"]>

0) {for ($item1bot / I

< =$arr["depth"];$i++){ echo " ";} }?>

< ? if($arr["child"]>

0) {echo "+";} else {echo "-";}? >

< ? if($arr["parentid"]==0) { echo "< b>

";}? >

< ? echo $arr["typename"];?>

< ? if ($arr["child"]>

0) {? > (

< ? echo $arr["child"];?>

)

< ? }?>

< /td>

< td bgcolor="#FFFFFF">

< ?php echo $arr["orders"];?>

< /td>

< td bgcolor="#FFFFFF">

< a href="?ToDo=add&editid=< ?php echo $arr["typeid"];?>

">

< U>

Add subclass

< /U>

< /a>

| |

< a href="?ToDo=edit&editid=< ?php echo $arr["typeid"]?>

">

< U>

Edit Category

< /U>

< /a>

| |

< ? if($arr["child"]==0){?>

< a href="?ToDo=del&editid=< ? echo $arr["typeid"];?>

"onClick=" {if ('when you delete a category, all products under that category will be deleted, are you sure to delete it?') {return true;} return false;} ">

< U>

Delete Category

< /U>

< /a>

< ?}else{?>

< a href="#" onClick="{if(confirm('该类别含有下属类别,必须先删除其下属类别方能删除本类别!')){return true;}return false;}">

< U>

Delete Category

< /U>

< /a>

< ?}?>

< /td>

< /tr>

< ?php } ?>

< /table>

< /td>

< /tr>

< /table>

< ?php break; } ?>

< ?php ///增加类别 function add(){ @$editid=$_REQUEST["editid"]; ?>

< form name="form1" method="post" action="?ToDo=saveadd">

< table width="90%" align="center" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC">

< tr bgcolor="#CCCCCC">

< td colspan="2" align="center" bgcolor="#698FC7">

< span class="STYLE2">

Create a new category

< /span>

< /td>

< /tr>

< tr>

< td width="25%" bgcolor="#FFFFFF">

Category name:

< /td>

< td width="75%" bgcolor="#FFFFFF">

< input name="typename" type="text" id="typename">

< /td>

< /tr>

< tr>

< td width="25%" height=30 bgcolor="#FFFFFF">

< U>

Category

< /U>

< /td>

< td width="75%" bgcolor="#FFFFFF">

< select name=btype>

< option value="0">

Do the main category

< /option>

< ? $query=mysql_query("select * from b_mtype order by rootid,orders"); while($arr=mysql_fetch_array($query)){ ?>

< option value="< ? echo $arr["typeid"]?>

"

< ?php if($editid == $arr['typeid']){ echo " selected"; }?>

>

< ? if($arr["depth"]>

0) {for ($item1bot / I

< =$arr["depth"];$i++) { echo "-"; } }?>

< ? echo $arr["typename"]?>

< /option>

< ? } ?>

< /select>

< /td>

< /tr>

< tr>

< td bgcolor="#FFFFFF">

< /td>

< td bgcolor="#FFFFFF">

< input type="submit" name="Submit" value="保存">

< label>

< input type="button" name="cancel" id="cancel" value="返回" onclick=history.go(-1);" />

< /label>

< /td>

< /tr>

< /table>

< /form>

< ? }?>

< ?php /////保存增加的类别 function saveadd(){ $query=mysql_query("select typeid from b_mtype order by typeid desc limit 1"); while($arr=mysql_fetch_array($query)){ if (!$arr["typeid"]){ $postnum=1; }else{ $postnum=$arr["typeid"]+1; } } if(!$postnum) $postnum=1; $ntid =$postnum; $tn =$_REQUEST["typename"]; $btype =$_REQUEST["btype"]; //echo $btype; if ($ntid=="" or $tn=="") { echo "< script language='javascript'>

"; echo" alert ("wrong parameter, please fill in again.!') ; "; echo" location.href='?'; "; echo"

< /script>

"; die ();} if ($btypewriter room0) {$result=mysql_query (" select rootid,typeid,depth,orders,parentstr from b_mtype where typeid='$btype' "); $aa=mysql_fetch_array ($result); $rootid=$aa ['rootid']; / / echo" aaaaaaaaaaa "; $parentid=$aa [' typeid']; $depth=$aa ['depth']; $orders=$aa [' orders']; $parentstr=$aa ['parentstr']; / / echo $rootid If (($aa ["depth"] + 1) > 20) {die ("this classification limit is limited to 20 levels of classification");}} if ($ntid = = $btype) {echo "

< script language='javascript'>

"; echo" alert ('duplicate typeid value you specified!') ; "; echo" location.href='?'; "; echo"

< /script>

"; die ();} if ($btypewriter 0) {$depth=$depth+1; $rootid=$rootid; $orders= $ntid; $parentid= $btype; / / $child= $child; if ($parentstr==" 0 ") {$parentstr=$btype;} else {$parentstr=$parentstr.", ".$ btype;}} else {$depth=0; $rootid=$ntid; $orders=1; $parentid=0; $child=0; $parentstr=0 } / / insert category $query=mysql_query ("insert into b_mtype values ('$ntid','$tn','$parentid','$parentstr','$depth','$rootid','','$orders')"); / / for debugging echo "insert into b_mtype values ('$ntid','$tn','$parentid','$parentstr','$depth','$rootid','','$orders')" If ($btypeclassific0) {if ($depth > 0) {/ / update the number of pages and related sort for of its parent class (or parent class) when the parent classification depth is greater than 0.

< =$depth;$i++){ //更新其父类版面数 if ($parentid!=""){ $query=mysql_query("update b_mtype set child=child+1 where typeid='$parentid'"); } //得到其父类的父类的版面ID $result=mysql_query("select parentid from b_mtype where typeid='$parentid'"); $par=mysql_fetch_array($result); if ($par['parentid']!=""){ $parentid=$par['parentid']; } //当循环次数大于1并且运行到最后一次循环的时候直接进行更新 if ($i==$depth && $parentid!=""){ $query=mysql_query("update b_mtype set child=child+1 where typeid='$parentid'"); } }//for循环结束 //更新该版面排序以及大于本需要和同在本分类下的版面排序序号 $query=mysql_query("update b_mtype set orders=orders+1 where rootid='$rootid' and orders>

'$orders' "); / / $orders1=$orders+1; / / echo" orders1= ". $orders1; $query=mysql_query (" update b_mtype set orders='$orders'+1 where typeid='$ntid' ") } else {/ / corresponds to if ($depth > 0). When the classification depth of the superior is 0, you only need to update the page number of the superior classification and the sorting number of the page $query=mysql_query ("update b_mtype set child=child+1 where typeid='$btype'"); $result=mysql_query ("select max (orders) from b_mtype where typeid='$ntid'"); $ord=mysql_fetch_array ($result) $query=mysql_query ("update b_mtype set orders='$ord [0]'+ 1 where typeid='$ntid'");}} echo "

< script language='javascript'>

"; echo" alert ('category added successfully!') ; "; echo" location.href='?'; "; echo"

< /script>

";}? >

< ?PHP ////修改设置 function edit(){ //global $db,$editid,$tn,$arr; $editid=$_REQUEST["editid"]; $result=mysql_query("select * from b_mtype where typeid='$editid'"); $tn=mysql_fetch_array($result); ?>

< form name="form2" action ="?ToDo=saveedit" method="post">

< input type="hidden" name="editid" value="< ?php echo $editid;?>

">

< table width="90%" border="0" align=center cellpadding="3" cellspacing="1" bgcolor="#CCCCCC">

< tr>

< th height=24 colspan=2 bgcolor="#698FC7" class="STYLE2">

Edit Category:

< ?PHP echo $tn["typename"];?>

< /th>

< /tr>

< tr>

< td width="44%" height=30 bgcolor="#FFFFFF">

Category name

< /td>

< td width="56%" bgcolor="#FFFFFF">

< input type="text" name="typename" size="35" value="< ?php echo $tn["typename"];?>

">

< /td>

< /tr>

< tr>

< td width="44%" height=30 bgcolor="#FFFFFF">

< p>

Category

< /p>

< p>

< span class="STYLE1">

Special hint:

< /span>

< br />

The category to which it belongs cannot specify the current category (that is, itself) as the parent category

< BR>

The category to which it belongs cannot specify that the subcategory of the current category is the parent category

< /p>

< /td>

< td width="56%" bgcolor="#FFFFFF">

< select name="class">

< option value="0">

Do the main category

< /option>

< ? $query=mysql_query("select * from b_mtype order by rootid,orders"); while($arr=mysql_fetch_array($query)) { ?>

< option value="< ?php echo $arr[typeid]?>

"

< ?php if ($tn["parentid"] == $arr["typeid"]) { echo "selected"; } ?>

>

< ? if ($arr["depth"]>

0) {? >

< ?for ($i=1;$i< =$arr["depth"];$i++){ echo "-";}?>

< ? } ?>

< ?php echo $arr["typename"]?>

< /option>

< ? } ?>

< /select>

< /td>

< /tr>

< tr>

< td width="44%" height=24 bgcolor="#FFFFFF">

< /td>

< td width="56%" bgcolor="#FFFFFF">

< input type="submit" name="Submit" value="提交修改">

< /td>

< /tr>

< /table>

< /form>

< ? } ?>

< ?php /////保存修改 function saveedit(){ //global $db,$aa,$bb,$cc,$dd,$ee,$ff,$gg,$ii,$jj,$kk,$ll,$mm,$nn,$qq,$rr; $editid=$_REQUEST["editid"]; $btype=$_REQUEST["class"]; $tn=$_REQUEST["typename"]; if($editid == $btype ){ echo "< script language='javascript'>

"; echo" alert ('the category to which you belong cannot specify the current category (that is, yourself) as the parent category!') ; "; echo" location.href='?'; "; echo"

< /script>

"; die ();} $result=mysql_query (" select * from b_mtype where typeid='$editid' "); $aa=mysql_fetch_array ($result); $newtypeid=$aa [" typeid "]; $typename=$aa [" typename "]; $parentid=$aa [" parentid "]; $iparentid=$aa [" parentid "]; $parentstr=$aa [" parentstr "]; $depth = $aa [" depth "]; $rootid = $aa [" rootid "]; $child = $aa [" child "] $orders = $aa ["orders"]; / determine whether the specified category is its subordinate category if ($parentid = = 0) {if ($btypewriter = 0) {$result=mysql_query ("select rootid from b_mtype where typeid='$btype'"); $b=mysql_fetch_array ($result); if ($rootid = = $bb ['rootid']) {echo "

< script language='javascript'>

"; echo" alert ('the category to which you belong cannot specify the subcategory of the current category as the parent category!') ; "; echo" location.href='?'; "; echo"

< /script>

"; die ();} else {$result=mysql_query (" select typeid from b_mtype where parentstr like'% $parentstr%' and typeid='$btype' "); $cc=mysql_fetch_array ($result); if ($cc [0]) {echo"

< script language='javascript'>

"; echo" alert ('the category to which you belong cannot specify the subcategory of the current category as the parent category!') ; "; echo" location.href='?'; "; echo"

< /script>

"; die ();} if ($parentid= = 0) {$parentid=$editid; $iparentid=0;} mysql_query (" update b_mtype set typename='$tn',parentid='$btype' where typeid='$editid' "); $result1=mysql_query (" select max (rootid) from b_mtype "); $ss=mysql_fetch_array ($result1); $maxrootid=$ss [" rootid "] + 1; if (! $maxrootid) {$maxrootid=1 } / / if you change your category / / need to update its original layout information, including depth, parent ID, number of layouts, sorting, inheriting moderator, etc. / / need to update current layout information / / inherit master data need to update another function to update-cancel Typeid in parentstr can be used at the front desk to obtain if ($parentid! = $btype & &! ($iparentid==0 & & $btype==0)) {/ / if it is not a first-level classification, change it to a first-level category / / echo "ggg" If ($iparentid > 0 & & $btype==0) {/ / update current layout data mysql_query ("update b_mtype set depth=0,orders=0,rootid='$editid',parentid=0,parentstr='0' where typeid='$newtypeid'"); $parentstr=$parentstr. ","; $result=mysql_query ("select count (*) from b_mtype where parentstr like'% $parentstr%'"); $dd=mysql_fetch_array ($result); $postcount=$dd [0] If (emptyempty ($postcount)) {$postcount=1;} else {$postcount=$postcount+1;} / / updates the number of pages of its original category mysql_query ("update b_mtype set child=child-'$postcount' where typeid='$iparentid'"); / / updates its original category data, which is equivalent to pruning without considering for.

< =$depth;$i++) { ////得到其父类的父类的版面ID $result2=mysql_query("select parentid from b_mtype where typeid='$iparentid'"); $ee=mysql_fetch_array($result2); if (!$ee[0]){ $iparentid=$ee[0]; mysql_query("update b_mtype set child=child-'$postcount' where typeid='$iparentid'"); } } //for end if ($child >

0) {/ / M1 / / Update its subordinate category data / / have subordinate categories, sort without consideration, update subordinate category depth and first-level sorted ID (rootid) data / / update current layout data $iSuppli 0; $query=mysql_query ("select * from b_mtype where parentstr like'% $parentstr%'"); while ($arr=mysql_fetch_array ($query)) {$ifolio + $mParentStr=strtr ($arr ['parentstr'], $parentstr, "); mysql_query (" update b_mtype set depth=depth-'$depth',rootid='$maxrootid',parentstr='$mParentStr' where typeid='$arr [typeid] ") }} / / M1 end} elseif ($iparentid > 0 & & $btype > 0) {/ / move a subcategory to another subcategory / / get information about the specified category $result=mysql_query ("select * from b_mtype where typeid='$btype'"); $gg=mysql_fetch_array ($result); / / get the number of its subordinate pages $parentstr=$parentstr. "," $iparentstr=$parentstr.$editid; echo $iparentstr; $result1=mysql_query ("select count (*) from b_mtype where parentstr like'% $iparentstr%'"); $ii=mysql_fetch_array ($result1); $postcount=$ii [0]; if (emptyempty ($postcount)) {$postcount=1 } / / update the category sorted data $query=mysql_query after the specified category is obtained after obtaining the number of pages moved; / / update the current layout data If ($update b_mtype set orders=orders+'$postcount'+1 where rootid='$ [parentstr] = "0") {/ / $idepth=$ [depth] + 1 / / $iorders=$ g [orders] + 1; mysql_query ("update b_mtype set depth='$ g [depth]'+ 1 charge orderswords $[where typeid='$newtypeid']'+ 1); Else {$aparentstr=$gg ['parentstr'].", ". $gg [' typeid']; $idepth=$gg ['depth'] + 1; $iorders=$gg [' orders'] + 1 Mysql_query ("update b_mtype set depth='$idepth',orders='$iorders',rootid='$ g [roving]', parentid='$btype',parentstr='$aparentstr' where typeid='$editid'");} $iTun1; / / update subordinate layout data / / depth to the original depth plus the depth of the current category $iparentstr=$parentstr.$newtypeid if any $query=mysql_query ("select * from b_mtype where parentstr like'% $iparentstr%' order by orders"); while ($arr=mysql_fetch_array ($query)) {/ / m2 $iTunes; If ($gg ['parentstr'] = = "0") {$iParentStr=$gg [' typeid']. "," .strtr ($arr ['parentstr'], $parentstr, "") } Else {$iParentStr=$gg ["parentstr"]. ",. $gg [" typeid "]. ",". Strtr ($arr ['parentstr'], $parentstr, "");} $query=mysql_query ("update b_mtype set depth=depth+'$ [depth]' -'$depth'+1,orders='$ [orders]'+'$parentstr='$iParentStr' where typeid='$ arr [typeid]'");} / / m2 end $parentid=$btype If ($rootid==$gg ['rootid']) {/ m3 / / the number of pages in the parent category pointed to by moving / / updating under the same category, I is the number of pages moved this time / / the number of parent pages updated $query=mysql_query ("update b_mtype set child=child+'$i' where (! Parentid=0) and typeid='$parentid' "); for ($kumb1)

< =$gg['depth'];$k++){ //得到其父类的父类的版面ID $result=mysql_query("select parentid from b_mtype where (! parentid=0) and typeid='$parentid'"); $vv=mysql_fetch_array($result); if ($vv[0]){ $parentid=$vv[0]; //更新其父类的父类版面数 mysql_query("update b_mtype set child=child+'$i' where (! parentid=0) and typeid='$parentid'"); } } // for end //更新其原父类版面数 mysql_query("update b_mtype set child=child-'$i' where (! parentid=0) and typeid='$iparentid'"); //更新其原来所属类别数据 for ($k=1;$k< =$depth;$k++){ //得到其原父类的父类的版面ID $result1=mysql_query("select parentid from b_mtype where (! parentid=0) and typeid='$iparentid'"); $zz=mysql_fetch_array($result1); if ($zz[0]){ $iparentid=$zz[0]; //更新其原父类的父类版面数 mysql_query("update b_mtype set child=child-'$i' where (! parentid=0) and typeid='$iparentid'"); } }//for end }else{ ////m3 end //更新所指向的上级类别版面数,i为本次移动过来的版面数 //更新其父类版面数 mysql_query("update b_mtype set child=child+'$i' where typeid='$parentid'"); for ($k=1;$k< =$gg["depth"];$k++){ //得到其父类的父类的版面ID $result2=mysql_query("select parentid from b_mtype where typeid='$parentid'"); $yy=mysql_fetch_array($result2); if ($yy[0]){ $parentid=$yy[0]; //更新其父类的父类版面数 mysql_query("update b_mtype set child=child+'$i' where typeid='$parentid'"); } } //for end //更新其原父类版面数 mysql_query("update b_mtype set child=child-'$i' where typeid='$iparentid'"); //更新其原来所属类别数据 for ($k=1;$k< =$depth;$k++){ //得到其原父类的父类的版面ID $query=mysql_query("select parentid from b_mtype where typeid='$iparentid'"); while($arr=mysql_fetch_array($query)) { if ($arr[0]){ $iparentid=$arr[0]; //更新其原父类的父类版面数 mysql_query("update b_mtype set child=child-'$i' where typeid='$iparentid'"); } } } //for end } ///m3 end }else{ //如果原来是一级类别改成其他类别的下属类别 //得到所指定的类别的相关信息 $result=mysql_query("select * from b_mtype where typeid='$btype'"); $gg=mysql_fetch_array($result); echo $rootid; $result1=mysql_query("select count(*) from b_mtype where rootid='$rootid'"); $qq=mysql_fetch_array($result1); $postcount=$qq[0]; //更新所指向的上级类别版面数,i为本次移动过来的版面数 $parentid=$btype; //更新其父类版面数 mysql_query("update b_mtype set child=child+'$postcount' where typeid='$parentid'"); for ($k=1;$k< =$gg['depth'];$k++){ //得到其父类的父类的版面ID $result2=mysql_query("select parentid from b_mtype where typeid='$parentid'"); $rr=mysql_fetch_array($result2); if ($rr[0]){ $parentid=$rr[0]; //更新其父类的父类版面数 mysql_query("update b_mtype set child=child+'$postcount' where typeid='$parentid'"); } } ///for end //在获得移动过来的版面数后更新排序在指定类别之后的类别排序数据 mysql_query("update b_mtype set orders=orders+'$postcount'+1 where rootid='$gg[rootid]' and orders>

'$g [orders]'); $iorders; $query=mysql_query ("select * from b_mtype where rootid='$rootid' order by orders"); while ($arr=mysql_fetch_array ($query)) {$iorders; if ($arr ['parentid'] = = 0) {if ($gg [' parentstr'] = "0") {$parentstr=$gg ['typeid'] } else {$parentstr=$gg ['parentstr']. ",". $gg [' typeid'];} mysql_query ("update b_mtype set depth=depth+'$ GG [depth]'+ 1) } else {if ($gg ['parentstr'] = = "0") {$parentstr=$gg [' typeid']. $arr ['parentstr'];} else {$parentstr=$gg [' parentstr']. ",". $gg ['typeid']. $arr ['parentstr'];} mysql_query ("update b_mtype set depth=depth+'$ g [depth]' + 1 charge orderswords $ggs [orders]'+'$itemized training $ggg [parentstr']', parentstr='$parentstr' where typeid='$ arr [typeid]'");}} / while end} / / else end} echo "

< script language='javascript'>

"; echo" alert ('Category modified successfully') ; "; echo" location.href='?'; "; echo"

< /script>

";}? >

< ?php function del(){ ////更新其上级版面类别数,如果该类别含有下级类别则不允许删除 $editid=$_REQUEST["editid"]; $result=mysql_query("select parentstr,child,depth from b_mtype where typeid='$editid'"); $aa=mysql_fetch_array($result); if ($aa[0]!="") { if ($aa[1]>

0) {echo "

< script language='javascript'>

"; echo" alert ('this category contains subordinate categories, which must be deleted before this category can be deleted!') ; "; echo" location.href='?'; "; echo"

< /script>

"; die ();} / / if there is a superior layout, update the data if ($aa [2] > 0) {$query=mysql_query (" update b_mtype set child=child-1 where typeid in ($aa [0]) ");} $query=mysql_query (" delete from b_mtype where typeid='$editid' ");} echo"

< script language='javascript'>

"; echo" alert ('Category deleted successfully') ; "; echo" location.href='?'; "; echo"

< /script>

";}? >

< /body>

< /html>

Try this infinite rating category!

This is the end of the complete code and comments on creating an infinitely hierarchical class of PHP. I hope the above content can be of some help and learn more knowledge. If you think the article is good, you can share it for more people to see.

Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.

Views: 0

*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.

Share To

Development

Wechat

© 2024 shulou.com SLNews company. All rights reserved.

12
Report