Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.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中的重复列 $course=mysql\u query('SELECT cc.name,c.fullname FROM mdl\u course,其中cc.id=c.id'); 回声'; while($row=mysql\u fetch\u数组($course)) { $categoryname=$row['name']; $coursename=$row['fullname']; echo'$categoryname $coursename } 回声';_Php - Fatal编程技术网

PHP中的重复列 $course=mysql\u query('SELECT cc.name,c.fullname FROM mdl\u course,其中cc.id=c.id'); 回声'; while($row=mysql\u fetch\u数组($course)) { $categoryname=$row['name']; $coursename=$row['fullname']; echo'$categoryname $coursename } 回声';

PHP中的重复列 $course=mysql\u query('SELECT cc.name,c.fullname FROM mdl\u course,其中cc.id=c.id'); 回声'; while($row=mysql\u fetch\u数组($course)) { $categoryname=$row['name']; $coursename=$row['fullname']; echo'$categoryname $coursename } 回声';,php,Php,我希望类别名称只显示一次,即,它不应重复您应该添加一个临时变量来保存以前的类别名称,并且仅当它已更改时才打印它。 注意:此解决方案假设您的查询结果按categoryname进行分组 像这样: $course = mysql_query('SELECT cc.name, c.fullname FROM mdl_course WHERE cc.id = c.id'); echo '<table>'; while($row = mysql_fetch_array($course)) {

我希望类别名称只显示一次,即,它不应重复

您应该添加一个临时变量来保存以前的类别名称,并且仅当它已更改时才打印它。 注意:此解决方案假设您的查询结果按categoryname进行分组

像这样:

$course = mysql_query('SELECT cc.name, c.fullname FROM mdl_course WHERE cc.id = c.id');

echo '<table>';
while($row = mysql_fetch_array($course))
{
     $categoryname = $row['name'];
     $coursename   = $row['fullname'];
     echo '<tr><td>$categoryname</td>
               <td>$coursename</td>
           </tr>
}
echo '</table>';

您应该添加一个临时变量来保存以前的类别名称,并且仅当它已更改时才打印它。 注意:此解决方案假设您的查询结果按categoryname进行分组

像这样:

$course = mysql_query('SELECT cc.name, c.fullname FROM mdl_course WHERE cc.id = c.id');

echo '<table>';
while($row = mysql_fetch_array($course))
{
     $categoryname = $row['name'];
     $coursename   = $row['fullname'];
     echo '<tr><td>$categoryname</td>
               <td>$coursename</td>
           </tr>
}
echo '</table>';

已经给出了一些可能的答案。我的想法是保留一个计数器变量来检查它是否是第一次迭代。如果是,则显示类别名称

但除此之外,我真的认为你应该重新检查你的数据库设计。为什么多行具有相同的类别名称?就数据库设计而言,这是错误的。类别应在单独的表格中

通过这种方式,您可以首先循环浏览类别,回显类别名称,然后循环浏览mdl_课程表,并从mdl_课程表中获取pk_类别id等于fk_类别id的所有行

例如:

($prev_name != $categoryname ? $categoryname : '')

已经给出了一些可能的答案。我的想法是保留一个计数器变量来检查它是否是第一次迭代。如果是,则显示类别名称

但除此之外,我真的认为你应该重新检查你的数据库设计。为什么多行具有相同的类别名称?就数据库设计而言,这是错误的。类别应在单独的表格中

通过这种方式,您可以首先循环浏览类别,回显类别名称,然后循环浏览mdl_课程表,并从mdl_课程表中获取pk_类别id等于fk_类别id的所有行

例如:

($prev_name != $categoryname ? $categoryname : '')


请确切地解释一下目前的输出情况,以及为什么您认为它目前正在“重新进食”。此外,问题通常在某个地方有一个
。您的查询
从mdl\U课程中选择cc.name,c.fullname,其中cc.id=c.id
无效-您是否定义了表别名
cc
c
?请准确解释此时输出的内容,以及您认为当前正在“重新生成”的原因。此外,问题通常在某个地方有一个
。您的查询
从mdl\U课程中选择cc.name,c.fullname,其中cc.id=c.id
无效-您是否定义了表别名
cc
c
?如果结果重复但不连续,该怎么办?这不会抓住那个…你是对的。我将编辑答案,这样我就可以清楚地假设结果是按类别名称分组的。谢谢你,MeLight,我按照你的指导得到了解决方案。我想是按排序,而不是按分组?(如果分组,则无法访问各个课程。)耶。你能告诉我我不怎么做数据库吗?;)如果结果是重复的但不是连续的呢?这不会抓住那个…你是对的。我将编辑答案,这样我就可以清楚地假设结果是按类别名称分组的。谢谢你,MeLight,我按照你的指导得到了解决方案。我想是按排序,而不是按分组?(如果分组,则无法访问各个课程。)耶。你能告诉我我不怎么做数据库吗?;)大括号不匹配。不清楚第二个循环是在第一个循环内运行还是在第一个循环完成后运行。我建议不要对两个结果集都使用$cats。此外,一个接一个的循环意味着您无法在其类别旁边显示正确的课程,将一个循环放在另一个循环中会产生相当大的开销。@Inca第二个循环在另一个循环中,最后一个括号由于某种原因从代码标记中掉了出来。此外,嵌套循环不会导致开销。不知道你从哪里弄来的那些废话。尤其是在这种情况下。修复了压痕。嵌套循环不会造成开销,重复查询(即类别数,+1外部查询)通常会造成开销。但是你是对的,我应该用更好的措辞。大括号不匹配。不清楚第二个循环是在第一个循环内运行还是在第一个循环完成后运行。我建议不要对两个结果集都使用$cats。此外,一个接一个的循环意味着您无法在其类别旁边显示正确的课程,将一个循环放在另一个循环中会产生相当大的开销。@Inca第二个循环在另一个循环中,最后一个括号由于某种原因从代码标记中掉了出来。此外,嵌套循环不会导致开销。不知道你从哪里弄来的那些废话。尤其是在这种情况下。修复了压痕。嵌套循环不会造成开销,重复查询(即类别数,+1外部查询)通常会造成开销。但你是对的,我应该用更好的措辞。