完整的新闻无限级分类代码,可添加,删除,移动,修改

 更新时间:2016年11月25日 17:11  点击:2068

<?php教程


//连接数据库教程
$link = mysql教程_connect('localhost','root','密码') or die(mysql_error());
mysql_select_db('sortclass',$link);
mysql_query("set names 'gbk'");
//无限分类类库
class sortclass{

var $data = array();
var $child = array(-1=>array());
var $layer = array(-1=>-1);
var $parent = array();
var $link;
var $table;
function sortclass($link, $table){
$this->setnode(0, -1, '顶极节点');
$this->link = $link;
$this->table = $table;
$node = array();
$results = mysql_query('select * from '.$this->table.'',$this->link);
while($node = mysql_fetch_assoc($results)){
$this->setnode($node['cid'],$node['pid'],$node['cname']);
}
}
function setnode ($id, $parent, $value){
$parent = $parent?$parent:0;
$this->data[$id] = $value;
$this->child[$id] = array();
$this->child[$parent][] = $id;
$this->parent[$id] = $parent;
$this->layer[$id] = !isset($this->layer[$parent])? 0 : $this->layer[$parent] + 1;
}
function getlist (&$tree, $root= 0){
foreach ($this->child[$root] as $key=>$id){
$tree[] = $id;
if ($this->child[$id]) $this->getlist($tree, $id);
}
}
function getvalue ($id){return $this->data[$id];}
function getlayer ($id, $space = false){
return $space?str_repeat($space, $this->layer[$id]):$this->layer[$id];
}
function getparent ($id){return $this->parent[$id];}
function getparents ($id){
while ($this->parent[$id] != -1){
$id = $parent[$this->layer[$id]] = $this->parent[$id];
}
ksort($parent);
reset($parent);
return $parent;
}
function getchild ($id){return $this->child[$id];}
function getchilds ($id = 0){
$child = array($id);
$this->getlist($child, $id);
return $child;
}
function addnode($name,$pid){
mysql_query("insert into $this->table (`pid`,`cname`) values ('$pid','$name')",$this->link);
}
function modnode($cid, $newname){
mysql_query("update $this->table set `cname`='$newname' where `cid` = $cid",$this->link);
}
function delnode($cid){
$allchilds = $this->getchilds($cid);
$sql ='';
if(empty($allchilds)){
$sql = "delete from $this->table where `cid` = $cid";
}else{
$sql = 'delete from '.$this->table.' where `cid` in ('.implode(',',$allchilds).','.$cid.')';
}
mysql_query($sql,$this->link);
}
function movenode($cid, $topid){
mysql_query("update $this->table set `pid`=$topid where `cid` = $cid", $this->link);
}
}
//函数
function back(){
echo '<script language="网页特效">window.location.href="class.php?"+new date().gettime();</script>';
exit;
}
//生成select
function makeselect($array,$formname){
global $tree;
$select = '<select name="'.$formname.'">';
foreach ($array as $id){
$select.='<option value="'.$id.'">'.$tree->getlayer($id, '|-').$tree->getvalue($id)."</option>";
}
return $select.'</select>';
}
$tree = new sortclass($link,'`class`');
$op = !empty($_post['op']) ? $_post['op'] : $_get['op'];
if(!empty($op)){

if($op=='add'){
$tree->addnode($_post['cname'],$_post['pid']);
back();
}

if($op=='mod'){
$tree->modnode($_post['cid'],$_post['cname']);
back();
}

if($op=='del'){
$tree->delnode($_get['cid']);
back();
}

if($op=='move'){
$tree->movenode($_post['who'],$_post['to']);
back();
}
}
$category = $tree->getchilds();
?>
<style type="text/css教程">
body{font-size:12px;}
ul{list-style:none;}
a{cursor:pointer;}
input{ margin-top:8px;}
</style>
<script language="javascript">
function $(e){return document.getelementbyid(e);}
function mod(cid){
$('cid').value=cid;
$('op').value='mod';
$('name').style.border='1px solid red';
}
</script>
<h3>添加分类</h3>
<form action="class.php" method="post">
名称:<input type="text" id="name" name="cname" /> 添加到:<?=makeselect($category,'pid')?><br />
<input type="hidden" id="op" name="op" value="add" />
<input type="hidden" id="cid" name="cid" />
<input type="submit" value="添加分类" />
</form>
<h3>移动分类</h3>
<form action="class.php" method="post">
<?=makeselect($category,'who')?>移动到:<?=makeselect($category,'to')?>
<input type="hidden" id="op" name="op" value="move" />
<input type="submit" value="移动" />
</form>
<ul>
<?php
foreach ($category as $id){
echo '<li>'.$tree->getlayer($id, '|- ').$tree->getvalue($id).' <a href="class.php?op=del&cid='.$id.'">del</a> <a onclick="mod('.$id.')">edit</a> </li>';
}
?>
</ul>
完整的新闻无限级分类代码,可添加,删除,移动,修改


顶极节点 del   edit
|- 1级分类del   edit
|- 1级分类 del   edit
|- 1级分类 del   edit
|- |- 2级分类 del   edit
|- |- |- 3级分类 del  edit
|- |- |-|- 4级分类 del  edit
|- 1级分类 del   edit


<!--

create database `sortclass`default charset utf8;
create table if not exists `class` (
`cid` mediumint(8) unsigned not null auto_increment,
`pid` mediumint(8) unsigned not null,
`cname` varchar(50) not null,
primary key (`cid`),
key `pid` (`pid`)
) engine=myisam default charset=utf8;

--->

php教程 图形处理函数imagetypes() imagecreatetruecolor() imagecreate()
//判断当前的gd库是否支持png

if(imagetypes() & img_png)
{
  echo "png support is enabled";
}
else
{
  echo "png support is disabled";
}
/*
int imagetypes ( void )


本函数以比特字段方式返回与当前 php 版本关联的 gd 库所支持的图像格式。将返回以下结果,img_gif | img_jpg | img_png | img_wbmp| img_xpm。 例如要检查是否支持 png

*/

//创建图像
$img=imagecreatetruecolor(300,200);
//取得图像宽度
echo imagesx($img);


/*
看个实例
*/

//建立一幅 100x30 的图像
$im=imagecreate(100,30);
//白色背景和蓝色文本
$bg=imagecolorallocate($im,255,255,255);
$textcolor=imagecolorallocate($im,0,0,255);
//把字符串写在图像左上角
imagestring($im,5,0,0,"hello world!",$textcolor);
//输出图像
header("content-type: image/png");
imagepng($im);


/*
如果你想创建一个png图像*透明*,其中的背景是完全透明的,所有行动发生在借鉴,除此之外,然后执行下列操作:
*/

$png = imagecreatetruecolor(800, 600);
    imagesavealpha($png, true);
    $trans_colour = imagecolorallocatealpha($png, 0, 0, 0, 127);
    imagefill($png, 0, 0, $trans_colour);
   
    $red = imagecolorallocate($png, 255, 0, 0);
    imagefilledellips教程教程e($png, 400, 300, 400, 300, $red);
   
    header("content-type: image/png");
    imagepng($png);
get_headers是获取http头信息,get_meta_tags是获取网页的description,abstract,keywords等信息


*/
$url='http://www.111cn.net';          //定义url
print_r(get_headers($url));         //无格式获取
print_r(get_headers($url,1));         //带上格式获取


/*

array
(
    [0] => http/1.1 200 ok
    [1] => connection: close
    [2] => date: sat, 11 dec 2010 05:43:46 gmt
    [3] => content-length: 69617
    [4] => content-type: text/html
    [5] => content-location: http://www.111cn.net/

    [6] => last-modified: sat, 11 dec 2010 05:19:51 gmt
    [7] => accept-ranges: bytes
    [8] => etag: "e8be4b9f398cb1:6c66"
    [9] => server: microsoft-iis/6.0
    [10] => x-powered-by: asp教程.net
)
array
(
    [0] => http/1.1 200 ok
    [connection] => close
    [date] => sat, 11 dec 2010 05:43:47 gmt
    [content-length] => 69617
    [content-type] => text/html
    [content-location] => http://www.111cn.net/index.html
    [last-modified] => sat, 11 dec 2010 05:19:51 gmt
    [accept-ranges] => bytes
    [etag] => "e8be4b9f398cb1:6c66"
    [server] => microsoft-iis/6.0
    [x-powered-by] => asp.net教程
)

get_meta_tags($url);
获取指定网页的description,abstract,keywords等信息
*/

$tags=get_meta_tags('http://www.111cn.net/');      //提取meta标签
print_r($tags)            //输出数组全部内容

/*

array
(
    [description] => 网页制作教程网提供专业网页设计教程与网页制作教程包括有photoshop教程,flash,html,css教程,dreamweaver,fireworks,asp,php教程,jsp教程,asp.net,网站建设,网站开发,网页特效,平面设计,个人网站,网页素材
    [abstract] => 提供最新的网页制作教程、网页设计教程、网页特效,为个人网站提供网页素材模板和网页视频学习。
    [keywords] => 网页设计教程,网页制作教程,网页学习,photoshop,flash,html,css,dreamweaver,fireworks,asp,php,jsp,asp.net,网页特效,平面设计,网页素材
)

注意:使用该函数需要把 php.ini里面的allow_url_fopen = on,才能使用

COOKIE 是在网页内容发送之前。先发送出去的信息。也就是说。在这之前不能有任何的 HTML 代码和 echo 等,即使是一个空格也是不允许的。。

在php教程中,要用 setcookie 函数来注册 cookie 变量,你上面的代码没有注册 cookie 变量。怎么可能送得过去呢。正确的写法如下:

*/
$status=0;                //定义状态
if(isset($_cookie['mytstcky'])&&($_cookie['mytstcky']=="chocchip")) $status=1; //如果已经设置变量
if(!isset($_get['cchk']))             //如果没有设置变量
{
  setcookie("mytstcky","chocchip");          //发送cookie信息
  header("location:$php_self?cchk=1");         //发送标头
  exit;                //结束php代码
}
?>
<html>
<head><title>cookie check</title></head>
<body bgcolor="#ffffff" text="#000000">
cookie check status:
<?php
printf('<font color="#%s">%s</font><br>;',$status ? "00ff00" : "ff0000",$status ? "passed!" : "failed!");               //根据条件输出不同内容
?>
</body>
</html>

mt_rand ( int $min , int $max )函数用于生成随机整数,其中$min–$max为ascii码的范围,这里取33-126,可以根据需要调整范围,如ascii码表中97–122位对应a–z的英文字母,具体可参考ascii码表;chr ( int $ascii )函数用于将对应整数$ascii转换成对应的字符。

  代码:

function create_password($pw_length = 8)
{
    $randpwd = '';
    for ($i = 0; $i < $pw_length; $i++)
    {
        $randpwd .= chr(mt_rand(33, 126));
    }
    return $randpwd;
}
// 调用该函数,传递长度参数$pw_length = 6
echo create_password(6);


  方法二:

  1、预置一个的字符串$chars,包括a–z、a–z、0–9以及一些特殊字符;

  2、在$chars字符串中随机取一个字符;

  3、重复第二步n次,可得长度为n的密码。

  代码:

function generate_password( $length = 8 ) {
    // 密码字符集,可任意添加你需要的字符
    $chars = 'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()-_ []{}<>~`+=,.;:/?|';
    $password = '';
    for ( $i = 0; $i < $length; $i++ )
    {
        // 这里提供两种字符获取方式
        // 第一种是使用 substr 截取$chars中的任意一位字符;
        // 第二种是取字符数组 $chars 的任意元素
        // $password .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
        $password .= $chars[ mt_rand(0, strlen($chars) - 1) ];
    }
    return $password;
}

[!--infotagslink--]

相关文章

  • pycharm 实现光标快速移动到括号外或行尾的操作

    这篇文章主要介绍了pycharm 实现光标快速移动到括号外或行尾的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-06
  • PHP实现无限级分类(不使用递归)

    无限级分类在开发中经常使用,例如:部门结构、文章分类。无限级分类的难点在于“输出”和“查询”,例如 将文章分类输出为<ul>列表形式; 查找分类A下面所有分类包含的文章。1.实现原理 几种常见的实现方法,各有利弊。其中...2015-10-23
  • PHP实现递归无限级分类

    在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性。那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类。 递归,简单的说就是一段程序代码的重复调用,当把...2015-10-23
  • ecshop商品无限级分类代码

    ecshop商品无限级分类代码 function cat_options($spec_cat_id, $arr) { static $cat_options = array(); if (isset($cat_options[$spec_cat_id]))...2016-11-25
  • js实现盒子移动动画效果

    这篇文章主要为大家详细介绍了js实现盒子移动动画效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-08-09
  • javascript 广告移动特效的实现代码

    下面小编就为大家带来一篇javascript 广告移动特效的实现代码。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-07-01
  • winform树形菜单无限级分类实例

    本文介绍了“winform树形菜单无限级分类实例”,需要的朋友可以参考一下...2020-06-25
  • 手机未实名认证被停机了怎么办?中国移动/联通/电信手机号实名认证方法

    ,“手机实名制”就是每一个手机号码对应一个身份证,对应唯一真实的主人。如果不认证可能会陆续遭到停机,这该怎么办呢?手机怎么认证呢?下面就详情来看看移动联通电信手机号实名认证方式吧...2016-11-01
  • 谁最靠谱?中国移动智能手机售后服务排名

    调查,目前手机维修最常见的问题手机屏幕损坏,而屏幕损坏多半是用户不小心摔坏或者碰坏,这种状况通常都不在免费维修内。目前中国移动智能手机售后服务排名已经出炉了,下面我们来看看吧...2016-09-12
  • VS+opencv实现鼠标移动图片

    这篇文章主要为大家详细介绍了VS+opencv实现鼠标移动图片,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-22
  • Oracle dbf文件移动的方法

    这篇文章主要介绍了Oracle dbf文件移动的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-07-11
  • Unity实现移动物体到鼠标点击位置

    这篇文章主要为大家详细介绍了Unity实现移动物体到鼠标点击位置,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-11-03
  • jQuery实现下拉框左右移动(全部移动,已选移动)

    本文主要介绍jQuery中利用appendTo()方法追加元素已实现左右移动的功能,希望对大家有所帮助。...2016-04-18
  • python--shutil移动文件到另一个路径的操作

    这篇文章主要介绍了python--shutil移动文件到另一个路径的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-13
  • 移动手机临时卡在网上办理实名登记的详细教程

    之前收买了张临时卡,没有需要身份证,用了好久了,但是现在进行实名认证了,不能充花费了,该怎么?不想换手机号码,下面分享移动手机临时卡在网上办理实名登记的详细教程,需要的朋友可以参考下...2016-07-04
  • ListView移动到指定位置的例子

    下面我们来看一篇关于ListView移动到指定位置的例子吧,希望文章能够给各位朋友带来帮助,具体的如下介绍. 关于ListView移动到指定位置有两种方法 listview.setSel...2016-11-01
  • 解决PyQt5 无边框后窗口的移动问题

    这篇文章主要介绍了解决PyQt5 无边框后窗口的移动问题,具有很好的参考价值,希望对大家有所帮助,一起跟随小编过来看看吧...2021-03-09
  • C# 无边框窗体之窗体移动实现代码

    这篇文章介绍了C# 无边框窗体之窗体移动实现代码,有需要的朋友可以参考一下...2020-06-25
  • php 无限级分类 获取顶级分类ID

    这篇文章主要介绍了php 无限级分类 获取顶级分类ID的相关代码,需要的朋友可以参考下...2016-03-15
  • java.io.File的renameTo方法移动文件失败的解决方案

    这篇文章主要介绍了java.io.File的renameTo方法移动文件失败的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-07-07