@TOC无限极列表 数据操作的实现方法
环境:php 7.3.4 phpstudy composer1.8
效果图
连接数据库
class dbCon{
public function connec(){
//POD 连接数据库
global $servername;
global $username;
global $password;
global $dbnames;
$username="root";
$password="root";
$dbnames="relessdb";
//$dbnames="school";
try {
$conn=new PDO("mysql:host=$servername;",$username,$password);
//创建数据库
// $sql="create DATABASE relessdb";
// $conn->exec($sql);
// echo "创建数据库 ok";
$connec=new PDO("mysql:host=$servername;dbname=$dbnames",$username,$password);
// 设置 PDO 错误模式,用于抛出异常
$connec->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
// $sqll="
// CREATE TABLE reless(
// id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
// name VARCHAR(30) NOT NULL,
// pid VARCHAR(30) NOT NULL
// )";
// $connec->exec($sqll);
// echo "数据表 reless 创建成功\n\n";
// 获取数据
$tem=$connec->prepare("SELECT id,name,pid FROM reless");
$tem->execute();
// 设置结果集为关联数组
$tem->setFetchMode(PDO::FETCH_ASSOC);
$div = $tem->fetchAll();
}catch (PDOException $e){
// echo $e->getMessage();
// echo $sql."<br>".$e->getMessage();
// echo $sqll."<br>".$e->getMessage();
echo $tem."<br>".$e->getMessage();
}
return $div;
}
}
树状图
function getTree($array,$pid=0,$level=0){
static $tree=array();
foreach ($array as $key=>$value){
if($value['pid']==$pid){
$value['level']=$level;
$tree[]=$value;
unset($array[$key]);//去除该节点,节省空间
$value['children']=getTree($array,$value['id'],$level+1);
}
}
return $tree;
}
建立表单
<form method="get" action="" id="form">
{{--<form onsubmit="login()" id="form">--}}
@csrf
<table name="sele">
<tr>
<td>id</td>
<td><input type="text" id="id" name="id_"></td>
</tr>
<tr>
<td>name</td>
<td><input type="text" id="name" name="name_"></td>
</tr>
<tr>
<td>pid</td>
<td><input type="text" id="pid" name="pid_"></td>
</tr>
{{-- <tr><td><input type="button" id="button" onclick="login()" ></td>--}}
{{-- <tr><td><input type="button" id="button" ></td>--}}
<td><input type="radio" name="select" <?php if (isset($select) && $select=="edit") echo "checked";?> value="edit"> 修改</td>
<td><input type="radio" name="select" value="delet"> 删除</td>
<td><input type="radio" name="select" value="add"> 新增 </td>
<td> <input type="radio" name="select" value="diplay"> 展示</td>
<td><input type="submit" value="提交"></td>
</tr>
</table>
</form>
操作执行
$ids=$_REQUEST['id_'];
$names=$_REQUEST['name_'];
$pids=$_REQUEST['pid_'];
$selects=$_REQUEST['select'];
$connec=new PDO("mysql:host=$servername;dbname=$dbnames",$username,$password);
// 设置 PDO 错误模式,用于抛出异常
$connec->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
if($selects=='add'){
// $sql=$connec->prepare("insert into reless(id,name,pid) value($ids,'$names',$pids)");
$sql=$connec->prepare("insert into reless(name,pid) value('$names',$pids)");
$sql->execute();
echo "新增数据成功.\n";
}
if($selects=='delet'){
$sql=$connec->prepare("delete from reless where name='$names' ");
$sql->execute();
// 设置结果集为关联数组
echo "删除数据成功\n";
}
if($selects=='edit'){
$sql=$connec->prepare("update reless set name=$names,pid=$pids where id=$ids");
$sql->execute();
// 设置结果集为关联数组
echo "插入数据成功\n";
}
$c=new dbCon();
$s=$c->connec();//获取封装好的函数 值
$list=getTree($s);
//数据打印
foreach ($list as $value){
// echo str_repeat('--',$value["level"]).$value["name"]."\n";
echo str_repeat('--',$value["level"]).$value["name"].$value["id"]."\n";
}
$conn = null;//关闭连接
/** * */
?>
备注:删除操作按名字查询。
有参考网络其他代码。
自己的练习成果,请指教。