php - 使用 mysql 从特定用户生成带有 php 的 html 树
问题描述
我想从下表中生成一棵树: TBLPROJECTS Id Name mainprojectid(这是 parentid,默认情况下为 0,除非它是另一个项目的一部分)
TBLUSERPROJECTS userprojectid userid projectid
TBLUSERS id 名称
我现在有以下代码:
require_once 'php/connectie.php';
if (isset($_SESSION['klantid'])){
$klantid = $_SESSION['klantid'];
function categoryParentChildTree($parent = 0, $spacing = '', $category_tree_array = '') {
global $connectie;
global $klantid;
$parent = $connectie->real_escape_string($parent);
if (!is_array($category_tree_array))
$category_tree_array = array();
$sqlCategory = "SELECT id,name,mainprojectid FROM projects WHERE mainprojectid = $parent ORDER BY id ASC";
$resCategory=$connectie->query($sqlCategory);
if ($resCategory->num_rows > 0) {
while($rowCategories = $resCategory->fetch_assoc()) {
$category_tree_array[] = array("id" => $rowCategories['id'], "name" => $spacing . $rowCategories['name']);
$category_tree_array = categoryParentChildTree($rowCategories['id'], ' '.$spacing . '- ', $category_tree_array);
}
}
return $category_tree_array;
}
$categoryList = categoryParentChildTree();
foreach($categoryList as $key => $value){
$name= $value['name'];
$id= $value['id'];
echo '
<form action="" method="post">
<p> '.$name.' <button value="'.$id.'" name="addproject" type="submit">+</button> <button value="'.$id.'" name="checkproject" type="submit">Tijdregistratie</button> </p>
</form> <br> ';
}}
这会生成所有项目的树,但不是来自某个特定用户。当我尝试这个 SQL 时:
SELECT id,name,mainprojectid FROM userproject JOIN projects ON projects.id = userproject.project_id WHERE user_id = 3
它只是进入一个无限循环......所以我现在有点卡住了。
解决方案
尝试左连接
SELECT id,name,mainprojectid FROM userproject left JOIN projects ON projects.id = userproject.project_id WHERE user_id = 3
推荐阅读
- swiftui - SwiftUI:使用锚点调用 scrollTo 方法时崩溃:.center
- flutter - 如何理解页面已经在 Flutter 中看到
- docker - `docker build` 期间的“RTNETLINK 回答:不允许操作”
- java - java.nio.file.Files.delete(path) 方法在创建和使用文件后尝试删除文件时抛出 java.nio.file.FileSystemException
- azure-devops - 如果 Azure 经典发布管道阶段在之前的运行中已经成功,则不会在“阶段后”触发器上触发
- java - 从终端编译时,Maven 项目缺少包
- c# - 如何在每一行代码或类似的东西之后调用方法
- python - 我如何从用户输入中打印最大的数字(python)
- r - 每个组中出现的最高日期
- pygame - 在 Ubuntu 20.04 中找不到 Pygame 示例