首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用php按类别显示Mysql数据库中的所有数据

使用php按类别显示Mysql数据库中的所有数据
EN

Stack Overflow用户
提问于 2014-09-05 15:49:58
回答 1查看 1.9K关注 0票数 0

目前,在我的php代码中,我从mysql表中获取了所有的keywords,并将其显示在td列上。它看起来就像下面的图片中的那个。

每个关键字都有一个唯一的关键字类型。例如,它可能包含Web 关键字类型下的php、html、css、js。

所以现在,我只打印所有的关键字,而不是他们的关键字类型

我需要在每个关键字类型下显示关键字。所以应该是这样的:

代码语言:javascript
复制
Keyword Type1     Keyword Type2    Keyword Type3   Keyword Type4  and so on...           
html              wp               js              php 
mysql             html5            jquery          c
css               css3             xml             c++

如何在php中显示这一点?

我现有的php代码如下:

代码语言:javascript
复制
<?php
$query =  mysql_query("SELECT keywords . *, keyword_type . * FROM keywords LEFT JOIN keyword_type ON keywords.keyword_typeID = keyword_type.keyword_typeID  ORDER BY kid DESC");
echo "<div id='keywordBox'>";

echo '<table border="0" cellpadding="0" cellspacing="0" width="1055">';
$count = 0;
while($result =  mysql_fetch_array($query)){

  if($count%6==0 && $count!=0){    
    echo "</tr><tr>";
  }elseif($count==0)
    echo "<tr>";

    $kid = $result['kid'];
    $keywordName = ucfirst($result['keywordName']);
    $keyword_short_name = ucfirst($result['keyword_short_name']); // keyword type
    $keyword_full_name = ucfirst($result['keyword_full_name']);  // keyword type full name 

    $query2 =  mysql_query("SELECT kid FROM userkeywords WHERE cdid = '$cdid' AND kid='$kid'");
    $num=mysql_num_rows($query2);

    if($num > 0){
        $class = "keywordHigligh";  
    }else{
        $class = "";
    }

    echo "<input type='hidden' id='kid' value='$kid'/>";    
    echo "<input type='hidden' id='cdid' value='$cdid'/>";  
    echo "<td width='400' onclick='keywordclick($kid,$cdid)' class='$class'><strong>$keywordName</td>";

    $count++;  
}

echo '</table>';
echo "</div>";
echo "<a href='../index.php?redcdid=$cdid'><input type='submit' value='Save' class='submit' /></a>"
?>

注:

代码语言:javascript
复制
$keyword_short_name = ucfirst($result['keyword_short_name']); // keyword type
$keyword_full_name = ucfirst($result['keyword_full_name']);  // keyword type full name 

谢谢你的建议和帮助。-施比尔

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-05 18:09:30

尝试在另一个数组上执行转换,如下所示:

代码语言:javascript
复制
$output = array();
foreach($keywords as $keyword) {
    $output[$keyword["type"]][] = $keyword["name"];
}

var_dump($output);

编辑我很无聊所以我写了这个。这是评论,但如果你想让我澄清一些事情,请告诉我。

代码语言:javascript
复制
<?php

$keywords = array(
    array("name" => "html", "type" => "front-end"),
    array("name" => "css", "type" => "front-end"),
    array("name" => "css", "type" => "front-end"),
    array("name" => "php", "type" => "back-end"),
    array("name" => "java", "type" => "back-end"),
    array("name" => "analytics", "type" => "marketing"),
    array("name" => "algebra", "type" => "maths"),
);

// Here we're looking to go from the above format to something like this:
// array("front-end" => array("html", "css"), "back-end" => array("php", "java") ...)
$keywordTypes = array();
foreach($keywords as $keyword) {
    $keywordTypes[$keyword["type"]][] = $keyword["name"];
}

// Not every keyword type will have the same number of keywords so we need a height that we will all fill them to
// array_map will create an array with a count for every keyword type and max will take the longest.
$nbRows = max(array_map("count", $keywordTypes));
?>
<table>
<thead>
    <tr>
        <!-- We iterate over all the keyword types in order to write our table headings -->
        <?php foreach($keywordTypes as $keywordType => $relatedKeywords): ?>
        <th><?php echo $keywordType ?></th>
        <?php endforeach; ?>
    </tr>
</thead>
<tbody>
    <!-- We know how many rows we are working with so let's use a for loop -->
    <?php for($i = 0; $i < $nbRows; ++$i): ?>
    <tr>
        <!-- This foreach will display one of each keyword type as we are writing row by row -->
        <?php foreach($keywordTypes as $keywords): ?>
            <!-- If we do not have a keyword, let's still add a placeholder so the table looks right -->
            <td><?php if(isset($keywords[$i])) { echo $keywords[$i]; } ?></td>
        <?php endforeach; ?>
    </tr>
    <?php endfor; ?>
</tbody>
</table>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25689655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档