php 进阶:实现无限分类(3)
3.程序控制
------------------------------------------------------------
实现无限分类这个功能中就属这一步最为复杂辛苦,首先看看程序需要完成的步骤:
1)创建分类上传;
2)创建信息上传;
3)明确显示各分类及其之间的关系;
4)处理查询功能;
5)如何处理编辑和删除的功能;
而这五步中最为困难的就是第五个步骤,因为对分类的编辑和删除涉及到一至性的问题.
下面我就逐一描述 php 的程序控制:
1)创建分类上传
在介绍这个功能前,先介绍一下 explode( ) 这个函数,这是个字串处理函数,用来分解字串的,具体的用法,例:
分解"0:1:2:3:4"里的数字
$val='0:1:2:3:4';
$rid=explode(":",$val);
经过 explode( ) 函数处理,$val 内的所有数字都分解到 $rid 数组中了,要引用时只需打印:echo '$rid[0],$rid[1],$rid[2]..."; 就行了.explode( ) 函数在整个分类处理中起着非常重要的作用,好现在开始介绍无现分类的程序控制.
可以假设个总分类 0 ,所有的分类都是它的子孙分类,现在来建立第一个分类'系统',来看看它在数据库的存储形式:
id | uid | type | rout_id | rout_char
1 | 0 | 系统 | 0:1 | 系统
接着又在下面分'Linux':
id | uid | type | rout_id | rout_char
2 | 1 | Linux| 0:1:2 | 系统:Linux
以上就是数据库存储的形式,现在就来完成 php 的代码,这与论坛的代码很相似,我们所要做的就是将分类的 id 放入 uid,而父分类的 uid 就放 0,下面来看看代码:
.....
.....
//设置默认页
if (empty($func)) $func=='showtype';
//设置父分类的 uid
if (empty($uid)) $uid=0;
//数据库存储************************************************
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=="") {
//取得父分类的 route_id
if ($uid!=0) {
$result = mysqlquery("select * from type where id=$uid");
$route_id=mysql_result($result,0,"route_id");
} else {
$routr_id='0';
}
$fields .= ",route_id";
//形成自己的 route_id
$route_id="$route_id:$id";
$values.=",'$route_id'";
}
//形成自己的 route_char
if ($route_char!="") {
$fields .= ",route_char";
$route_char="$route_char:$type";
$values.=",'$route_char'";
} else {
$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("insert into type ($fields) values ($values)");
...
endif; /* end save */
//分类上传************************************************
if ($func=='createtype'):
//取得自己的 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;
}
//判断分类的状态
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='父分类';
}
echo "
endif; /* end createtype */
//显示分类************************************************
if ($func=='showtype'):
echo "
创建分类 |
$type |
"; echo "$type"; echo " |
endif; /* end showtype */
.....
.....
?>

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Ubuntu가 모바일 하드 디스크를 마운트할 때 오류가 발생합니다: mount:knownfilesystemtype'exfat' 처리 방법은 Ubuntu13.10 또는 install exfat-fuse: sudoapt-getinstallexfat-fuseUbuntu13.04 이하 sudoapt-add-repositoryppa:relan입니다. /exfatsudoapt-getupdatesudoapt-getinstallfuse- exfatCentOS CentOS에서 extfa를 로드하기 위한 Linux 마운트 exfat 형식 USB 디스크 오류 솔루션

Go에서 Type 키워드의 사용법에는 새로운 유형 별칭 정의 또는 새로운 구조 유형 생성이 포함됩니다. 자세한 소개: 1. 유형 별칭. 기존 유형에 대한 별칭을 생성하려면 "type" 키워드를 사용하십시오. 이 별칭은 새 유형을 생성하지 않고 기존 유형에 대한 새 이름만 제공하여 코드 가독성을 향상시킵니다. 2. 구조 유형을 사용하여 새 구조 유형을 생성합니다. 구조는 여러 필드 등을 포함하는 사용자 정의 유형을 정의하는 데 사용할 수 있습니다.

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

이 가이드에서는 Linux의 "type" 명령에 대해 자세히 알아봅니다. 전제 조건: 이 가이드에 설명된 단계를 수행하려면 다음 구성 요소가 필요합니다. 올바르게 구성된 Linux 시스템. 테스트 및 학습 목적으로 LinuxVM을 생성하는 방법을 알아보세요. 명령줄 인터페이스에 대한 기본 이해 Linux의 Type 명령은 다른 Linux 관련 명령(예: ls, chmod, shutdown, vi, grep, pwd 등)과 다릅니다. "type" 명령은 내장되어 있습니다. 인수로 표시되는 Bash 함수입니다. 제공된 명령 유형에 대한 정보입니다. $type Bash 외에도 다른 쉘(Zsh, Ksh 등)도 함께 제공됩니다.

듀얼 네트워크 카드 구성: 호스트 전용 모드의 가상 머신 설정에서 네트워크 카드를 추가한 후 /etc/udev/rules.d/70-pertant-net.rule에서 새 MAC 주소를 생성합니다. eth0에서 eth1로 UUID를 제거하고 올바른 MAC 주소를 수정하고 구성 파일을 수정합니다. BOOTPROTO={static|none|dhcp|bootp}: 정적 주소를 사용하려면 dhcp를 사용하는 것을 의미합니다. 주소를 얻기 위한 DHCP 서버; IPADDR=:IP 주소 NETMASK=: 서브넷 마스크 GATEWAY=: 두 개의 네트워크 카드에 대해 하나만 설정할 수 있습니다.

Abstract Redis는 다양한 시나리오에서 널리 사용되는 오픈 소스 고성능 키-값 데이터베이스입니다. Redis에서는 데이터 유형(type)과 인코딩(encoding)이 매우 중요한 개념입니다. 이 블로그에서는 Redis에서 지원하는 데이터 유형과 해당 인코딩 방법 및 기본 구현 원칙을 자세히 소개합니다. Redis 키의 내부 인코딩을 보려면 Redis 명령 OBJECTENCODINGkey를 사용할 수 있습니다. 그 중 key 는 조회하려는 키 이름입니다. 예를 들어 mykey라는 키의 내부 인코딩을 쿼리하려면 다음 명령을 실행할 수 있습니다. 127.0.0.1:6379>objectencodin

모두가 오늘의 Windows 1123H2 릴리스를 기대하고 있습니다. 실제로 마이크로소프트는 공식 출시 단계 전 가장 가까운 채널인 릴리즈 프리뷰에 대한 업데이트를 막 출시했다. 빌드 22631로 알려진 마이크로소프트는 지난 몇 달 동안 다른 내부 채널에서 테스트를 거친 새로운 브랜드의 채팅 앱, 전화 링크, 플레이 투게더 위젯을 출시할 예정이라고 밝혔습니다. "이 새로운 업데이트는 Windows 11 버전 22H2와 동일한 서비스 분기 및 코드 기반을 가지며 Windows의 Copilot(미리 보기)을 포함하여 새로 발표된 모든 기능과 함께 누적될 것입니다."라고 Microsoft는 약속합니다. 레드몬드 관계자 추가

请问如何修改url某一参数的参数值呢?是要拆开了再拼回去吗?那么请问如何修改url某一参数的参数值呢?是要拆开了再拼回去吗?http://127.0.0.1/myo/newuser.php?mod=search&type=fastone比如现在我要修改mod=new要怎么做呢?------解决方案--------------------发送了请求
