Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:表示查询结果_Php_Html_Css - Fatal编程技术网

PHP:表示查询结果

PHP:表示查询结果,php,html,css,Php,Html,Css,这很简单,很抱歉打扰您,但我一直在思考如何做,我无法想出解决方案:( 我的数据库查询正在抛出: ID – NAME – LASTNAME – SONG — ALBUM 12 –Bryan – Ferry – Rescue Me – Taxi 12 –Bryan – Ferry – Just One Look –Taxi 99 – Nick – Cave – Wonderful Life – Nocturama 我需要在我的网页中显示它的方式是: Bryan Ferry

这很简单,很抱歉打扰您,但我一直在思考如何做,我无法想出解决方案:(

我的数据库查询正在抛出:

ID – NAME – LASTNAME –  SONG —    ALBUM
12 –Bryan – Ferry –  Rescue Me –   Taxi 
12 –Bryan – Ferry –  Just One Look –Taxi 
99 – Nick – Cave –   Wonderful Life – Nocturama
我需要在我的网页中显示它的方式是:

Bryan Ferry

救救我(出租车)

只看一眼(出租车)

Nick Cave

精彩生活(夜曲)

我在我的php脚本中,在while查询结果循环中,但我不知道如何继续

while ($row=mysqli_fetch_assoc($result))
{
//what do I have to do here to get the format I need ?? 
}

非常感谢!!

如果你想在PHP中使用它,我会这样做的

$oldid = -999;
while($row = mysql_fetch_assoc($result)) {
    if ($row["id"] != $oldid) {
        echo($row["name"]." ".$row["lastname"]."<br />");
        $oldid = $row["id"];
    }
    echo($row["song"]." (".$row["album"].")<br />");
}
$oldid=-999;
while($row=mysql\u fetch\u assoc($result)){
如果($row[“id”!=$oldid){
echo($row[“name”]。$row[“lastname”]。”
); $oldid=$row[“id”]; } echo($row[“song”]。”(“$row[“album”]。”)
); }

每次循环时,只需对照上次的艺术家ID检查艺术家ID。如果不同,请打印艺术家名称并更新$oldid,否则只需打印歌曲标题

这取决于您想要的是丑陋的模拟解决方案还是专业的解决方案。使用前者,您只需立即以HTML打印结果(编辑请参见下文/EDIT)或者在打印+1之前将其放入艺术家的助手中!这是一个好问题!为什么它被否决了?我也对这种情况下的专业解决方案感兴趣。ken clark的答案是可以的,但对我来说它看起来有点脏。一定有更好的答案answer@Alexxus这是最低限度的采用。如果不使用OOP,则应d也可以被模仿,为分离关注点打下良好的基础。特定于显示的代码进入所谓的视图,特定于数据库的代码进入它们自己的模块,等等。业务逻辑实际上应该没有任何特定于环境的代码(您使用的数据库、您打印结果的内容和格式、它的“驱动力”等等).每个模块应尽可能独立于其他模块(通过间接方式).@Powerslave OOP是一个解决方案,我同意。另一个解决方案是编写一个函数,将查询结果分组到多维数组中。我不是说MVC。对我来说,人们应该使用它是不言自明的。@Alexus好吧,很高兴看到它对您来说是不言自明的,但不幸的是,这不是必要的对每个人来说都是如此(对大多数人来说)。用过程代码模拟OOP通常是可行的,并且通过子程序实现功能的基本解耦。不过,专业解决方案将采用OOP,并且很可能有一个表示层、一个应用层、一个业务层和一个数据访问(基础设施)层。避免硬编码和魔法值以及使用SoC在helloworld之外的任何事情中都是非常重要的-嗯…也许我会写一个关于这个主题的系列哈,哈。“丑陋的模拟解决方案”,“不专业的”,“肮脏的”。它简单,有效,并且符合(公认的简短)说明@kenclark这有什么好笑的?@kenclark好笑的是,
有效!=好的
。这是一个快速而肮脏的问题答案,但你至少应该提到这个事实,它在生产代码中的使用通常是不被鼓励的。对于初学者来说,编写这样的代码并“在生产中工作”似乎是合适的,但如果您尝试任何严肃的事情,它最终将成为一场噩梦。然而,非常遗憾的是,几乎没有任何PHP学习材料提到好的实践,而不是最常在各地推广的坏的实践;这导致您不知道编写这样的代码所犯的错误。@kenclark举几个问题:1您的正在对PHP和数据库数字类型之间的兼容性进行假设。记录可能会丢失。2
mysql_blah
已被弃用。3使用的数据库引擎的硬接线对您没有好处。如果您需要切换到,例如,SQLite,您是否要重写所有内容?4硬编码的数据库结构迫使您在需要时重写所有内容e表格会改变。5硬编码和内联HTML。你现在如何呈现,比如说,对应用程序的JSON-RPC访问?复制粘贴编辑?不是一个好主意。6你会重写所有内容来改变HTML外观吗?7etc@Powerslave:那么完美的代码不起作用会是一个更好的答案吗?这很有趣,但经过30年的开发和支持i'v我从来没有遇到过一个客户不介意它是否有效。虽然说真的,当然有一些框架和方法可以使用,也许应该使用,但我是在请求者的层面上给出答案的。如果他们用MVC或OOPs术语提出问题,我会以实物形式给出答案。我期待看到您的“最佳答案”在不久的将来练习解决这个问题的方法。