Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.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_Mysql - Fatal编程技术网

使用PHP检查前值和当前值(数组)创建表

使用PHP检查前值和当前值(数组)创建表,php,mysql,Php,Mysql,这是我的数据表1。我想把这张桌子改成一张桌子。我必须使用PHP来实现这一点。我使用foreach编写了一些代码,但这不能正常工作。C 表1 我想使用PHP创建类似于table2的内容 表2 **我写了一些这样的。但这并不正常** $output .= "<table border=1> <tr bgcolor=#ffffff><td>SeqNo</td> <td>Student Id</td

这是我的数据表1。我想把这张桌子改成一张桌子。我必须使用PHP来实现这一点。我使用foreach编写了一些代码,但这不能正常工作。C

表1

我想使用PHP创建类似于table2的内容

表2

**我写了一些这样的。但这并不正常**

$output .= "<table border=1>
          <tr bgcolor=#ffffff><td>SeqNo</td>
          <td>Student Id</td>
          <td>maths</td>
          <td>art</td>
          <td>Exam 1</td>
          <td>Exam 2</td></tr>";

          $studentCounter = 0;

foreach($result as $item)
            {
            $output .= "<tr><td>" . ++$studentCounter . " </td>  
                                        <td>" . $item[STUDENT_ID] . "</td>
                                        <td>" . $item[MATHS] . "</td> 
                                        <td>" . $item[ART] . "</td>
                                        <td>" . $item[EXAM_1] . "</td>
                                        <td>" . $item[EXAM_2] . "</td></tr>";

            }
 $output .= "</table>";

这是我的数组数据。我必须使用这个数组创建类似table2的内容。任何人都可以帮助我。

如果我理解正确,您希望表2如图所示,因此基于此,我将回答您的问题

您可以使用下面的HTML,它看起来像您想要的表格

<table border=1>
  <tr bgcolor=#ffffff>
    <td>SeqNo</td>
    <td>Student Id</td>
    <td colspan = "2">maths</td>
    <td colspan = "2">art</td>
    </tr>
    <tr>
    <td colspan = "2"></td>
    <td>Exam 1</td>
    <td>Exam 2</td>
    <td>Exam 1</td>
    <td>Exam 2</td>
  </tr>
      <tr>
    <td></td>
    <td></td>
    <td>Exam 1</td>
    <td>Exam 2</td>
    <td>Exam 1</td>
    <td>Exam 2</td>
  </tr>
</table>

请记住,这是没有SQL的,因此请调整它以满足您的需要,并处于PDO中。

这将是您的表设计:

现在,要使用php显示数据,可以执行以下操作:

$output .= "<table border=1>
          <tr bgcolor=#ffffff>
            <td rowspan="2">SeqNo</td>
            <td rowspan="2">Student Id</td>
            <td colspan = "2">maths</td>
            <td colspan = "2">art</td>
            </tr>
            <tr>
            <td>Exam 1</td>
            <td>Exam 2</td>
            <td>Exam 1</td>
            <td>Exam 2</td>
          </tr>";

          $studentCounter = 0;

foreach($result as $item)
            {
            $output .= "<tr>
                          <td>" . ++$studentCounter . " </td>  
                          <td>" . $item[STUDENT_ID] . "</td>
                          <td>" . $item[MATHS_EXAM_1] . "</td> 
                          <td>" . $item[MATH_EXAM_2] . "</td>
                          <td>" . $item[ART_EXAM_1] . "</td>
                          <td>" . $item[ART_EXAM_2] . "</td>
                        </tr>";
            }

 $output .= "</table>";

现在取决于$result的外观

您可以使用sql by group_concat mysql函数生成结果

SELECT * FROM table1 GROUP_CONCAT(student_id) ORDER BY subject_name DESC
此查询将生成如下结果

student id=>1,subject=>math,exam1=>15,exam2=>20,subject=>art,exam1=>17,exam2=>19

Rowspan告诉单元格要占用多少行,colspan告诉单元格要占用多少列

$output .= "<table border=1>
    <tr bgcolor=#ffffff>
        <td rowspan="2">SeqNo</td>
        <td rowspan="2">Student Id</td>
        <td colspan="2">maths</td>
        <td colspan="2">art</td>
    </tr>
    <tr>
        <td>Exam 1</td>
        <td>Exam 2</td>
        <td>Exam 1</td>
        <td>Exam 2</td>
    </tr>";

$studentCounter = 0;

foreach($result as $item) {
    $output .= "<tr>
        <td>" . $studentCounter++ . " </td>  
        <td>" . $item["STUDENT_ID"] . "</td>
        <td>" . $item["MATHS"] . "</td> 
        <td>" . $item["ART"] . "</td>
        <td>" . $item["EXAM_1"] . "</td>
        <td>" . $item["EXAM_2"] . "</td></tr>";
}

$output .= "</table>";

试一下,我没有检查输出,我假设数组如下

array(
     [
      "STUDENT_ID" => "1", 
     'MATHS' => 
             array( 
                 "EXAM_1" => 'test 1', 
                 "EXAM_2" => 'test2'), 
     'ART' => 
             array( 
                 "EXAM_1" => 'test 1', 
                  "EXAM_2"=> 'test2')
      ],
     [
      "STUDENT_ID" => "2", 
     'MATHS' => 
             array( 
                 "EXAM_1" => 'test 1', 
                 "EXAM_2" => 'test2'), 
     'ART' => 
             array( 
                 "EXAM_1" => 'test 1', 
                  "EXAM_2"=> 'test2')
      ]
     );
`


在我看来,您使用的表结构不正确

这是您要查找的表布局的正确表结构

<table border=1>
    <thead>
        <tr>
            <th rowspan="2">Seq N0</th>
            <th rowspan="2">Student Id</th>
            <th colspan="2">maths</th>
            <th colspan="2">art</th>
        </tr>
        <tr>
            <td>Exam 1</td>
            <td>Exam 2</td>
            <td>Exam 1</td>
            <td>Exam 2</td>  
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>1</td>
            <td>1</td>
            <td>82</td>
            <td>90</td>
            <td>60</td>
            <td>82</td>
        </tr>
        <tr>
            <td>1</td>
            <td>1</td>
            <td>82</td>
            <td>90</td>
            <td>60</td>
            <td>82</td>
        </tr>
    </tbody>
</table>

请核对表1。有相同的学生id将重复。那么这个代码不能正常工作。有没有办法调整你的$result?一个StudentID总是有两个条目吗?不是总是有两个条目,有时一个StudentID有三个条目。您可以调整SQL吗?你应该把数学和艺术考试排成一行。然后,您可以使用foreach获得所需的设计。否则,您必须首先对数组进行排序,然后使用foreach$QI=DBQuery$sql检查数组$结果=DBGet$QI,数组'STUDENT\u ID'=>'STUDENT\u ID','mathematics'=>'mathematics',‌​'艺术“=>”艺术“,”考试1‌​'=>'考试1’,“考试2”‌​=>'考试2'$列=数组'STUDENT_ID'=>'STUDENT ID'、'Mathematics'=>'Mathematics'、'ART'=>'ART'、'EXAM_1'=>'EXAM 1'、'EXAM_2'=>'EXAM 1';这是我的sql数组请检查表1。有相同的学生id将重复。然后这个代码不能正常工作。正如我告诉你的,我给了你一个例子,你没有发布任何SQL或任何其他需要的代码,所以我只是凭直觉。接受这个想法并调整它直到它起作用。我的代码不是复制粘贴并运行它只是一个例子。如何检查repeat student,然后我必须转到另一个记录。按student id对记录进行分组。我想创建PHP代码。我有1000多条记录。不是HTML代码,我想要PHP代码。你必须检查表1。有学生证重复。然后我必须检查,然后再检查另一个主题名称。我该怎么做?你写过任何查询吗?你可能想把你当前的sql添加到OP中。你必须检查表1。有学生证重复。然后我必须检查,然后再检查另一个主题名称。我该怎么做呢?如果可能的话,使用类似于为同一个学生分组所有科目的标记,请参考
SELECT * FROM table1 GROUP_CONCAT(student_id) ORDER BY subject_name DESC
student id=>1,subject=>math,exam1=>15,exam2=>20,subject=>art,exam1=>17,exam2=>19
$output .= "<table border=1>
    <tr bgcolor=#ffffff>
        <td rowspan="2">SeqNo</td>
        <td rowspan="2">Student Id</td>
        <td colspan="2">maths</td>
        <td colspan="2">art</td>
    </tr>
    <tr>
        <td>Exam 1</td>
        <td>Exam 2</td>
        <td>Exam 1</td>
        <td>Exam 2</td>
    </tr>";

$studentCounter = 0;

foreach($result as $item) {
    $output .= "<tr>
        <td>" . $studentCounter++ . " </td>  
        <td>" . $item["STUDENT_ID"] . "</td>
        <td>" . $item["MATHS"] . "</td> 
        <td>" . $item["ART"] . "</td>
        <td>" . $item["EXAM_1"] . "</td>
        <td>" . $item["EXAM_2"] . "</td></tr>";
}

$output .= "</table>";
array(
     [
      "STUDENT_ID" => "1", 
     'MATHS' => 
             array( 
                 "EXAM_1" => 'test 1', 
                 "EXAM_2" => 'test2'), 
     'ART' => 
             array( 
                 "EXAM_1" => 'test 1', 
                  "EXAM_2"=> 'test2')
      ],
     [
      "STUDENT_ID" => "2", 
     'MATHS' => 
             array( 
                 "EXAM_1" => 'test 1', 
                 "EXAM_2" => 'test2'), 
     'ART' => 
             array( 
                 "EXAM_1" => 'test 1', 
                  "EXAM_2"=> 'test2')
      ]
     );
$output .= "<table border=1>
      <tr bgcolor=#ffffff><td>SeqNo</td>
      <td>Student Id</td>
      <td colspan="2">maths</td>
      <td colspan="2">art</td>
      ";

     $studentCounter = 0;

     foreach($result as $item)
        {
        $output .= "<tr><td>" . ++$studentCounter . " </td>  
                       <td>" . $item[STUDENT_ID] . "</td>
                       <td>" . $item[MATHS][EXAM_1] . "</td> 
                       <td>" . $item[MATHS][EXAM_2] . "</td>
                       <td>" . $item[ART][EXAM_1] . "</td>
                       <td>" . $item[ART][EXAM_2] . "</td></tr>";
                     "

        }
   $output .= "</table>";
<table border=1>
    <thead>
        <tr>
            <th rowspan="2">Seq N0</th>
            <th rowspan="2">Student Id</th>
            <th colspan="2">maths</th>
            <th colspan="2">art</th>
        </tr>
        <tr>
            <td>Exam 1</td>
            <td>Exam 2</td>
            <td>Exam 1</td>
            <td>Exam 2</td>  
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>1</td>
            <td>1</td>
            <td>82</td>
            <td>90</td>
            <td>60</td>
            <td>82</td>
        </tr>
        <tr>
            <td>1</td>
            <td>1</td>
            <td>82</td>
            <td>90</td>
            <td>60</td>
            <td>82</td>
        </tr>
    </tbody>
</table>