【问题标题】:PHP/MySQL - Make a "tree" from table values by categoryPHP/MySQL - 按类别从表值中创建一个“树”
【发布时间】:2014-11-14 22:04:31
【问题描述】:

在 MySQL 数据库中,我有 3 列:类别、名称和电话。表看起来像这个例子:

Work       David     777444555
School     Susan     776457333
Work       Peter     743234556
Work       Diana     765432456
Hockey     Ben       786432567
School     Tom       765434566
School     John      765457865
etc...

那么如何从这个表中用 PHP 做一个“树”结果(从 A 到 Z 排序)?我需要这样的例子:

Hockej:
 - Ben, 786432567
 - etc.
School:
 - John, 765457865
 - Susan, 776457333
 - Tom, 765434566
Work:
 - David, 777444555
 - Diana, 765432456
 - Peter, 743234556

【问题讨论】:

  • 您尝试过什么了吗?请发布您的代码。

标签: php mysql


【解决方案1】:
SELECT category,
       GROUP_CONCAT(CONCAT(Name, ', ', Phone) ORDER BY Name SEPARATOR ';' ) Names
FROM
    yourtable
GROUP BY category

【讨论】:

    【解决方案2】:

    我写了这段代码,它似乎可以工作,但是请检查一下,如果没有可能造成麻烦的错误:-)

    $DBSERVER = 'server';
    $DBUSER = 'user';
    $DBPASS = 'password';
    $DB = 'database';
    
    $login = mysql_connect($DBSERVER, $DBUSER, $DBPASS) or die("Could not connect: " . mysql_error()); 
    mysql_select_db($DB, $login) or die ('Can\'t use database : ' . mysql_error()); 
    mysql_query("SET NAMES UTF8");
    
    
    
    $query = "SELECT * FROM tree ORDER BY category, name"; 
    $result = mysql_query($query); 
    
    if(!$result){ 
      echo  mysql_error() . " - " . mysql_errno(); 
    } 
    
    else{ 
      $memory = '';
      while ($row = mysql_fetch_assoc($result)){
        if ($row['category'] != $memory){
          $memory = $row['category'];
          echo "<b>".$memory."</b><br>";
        }
        echo " - ".$row['name'].", ".$row['phone']."<br>";
      }
    }
    

    这段代码可以没有错误吗?

    【讨论】:

      猜你喜欢
      • 2021-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 2014-11-17
      • 1970-01-01
      相关资源
      最近更新 更多