在PHP中水平旋转表的查询,获取tbody的另一个表的thead

时间:2017-12-09 21:45:14

标签: php mysqli while-loop

没有人知道如何从表连接中旋转结果表吗?

更好地解释

This is my result

This is what i want

最后这是我的代码:

<div id="encuesta">
<?php
$y = 0;
$Query1 = $Conexion->query("SELECT ID_Encuesta,Encuesta_Nombre FROM encuestas");
while($row1 = $Query1->fetch_assoc())
{
    $y++;
    $x = 0;
    ?>
    <h4><?php echo $y; ?> - <?php echo $row1['Encuesta_Nombre']; ?></h4>
    <table class="table table-bordered" id="table<?php echo $row1["ID_Encuesta"]; ?>">
        <tbody>
            <?php
            $Query2 = $Conexion->query("SELECT ID_Pregunta,Pregunta_Nombre,Pregunta_Pregunta,Pregunta_Tipo FROM preguntas WHERE pregunta_encuesta = '$row1[ID_Encuesta]'");
            while($row2 = $Query2->fetch_assoc())
            {
                echo '<tr>';
                echo '<td class="bg-primary" style="color:white;">'.$row2['Pregunta_Nombre'].' </td>';
                $Query3 = $Conexion->query("
                        SELECT 
                        (
                            CASE 
                                WHEN A.Pregunta_Tipo = '1' THEN C.Etiqueta_Numero
                                WHEN A.Pregunta_Tipo = '2' THEN B.Respuesta_Respuesta 
                                WHEN A.Pregunta_Tipo = '3' THEN B.Respuesta_Respuesta 
                                WHEN A.Pregunta_Tipo = '4' THEN C.Etiqueta_Numero
                                ELSE 1
                            END) AS Respuesta
                        FROM preguntas AS A
                        JOIN respuestas AS B
                        ON A.ID_Pregunta = B.Respuesta_Pregunta
                        LEFT JOIN etiquetas AS C
                        ON B.Respuesta_Respuesta = C.ID_Etiqueta
                        WHERE B.Respuesta_Pregunta = '$row2[ID_Pregunta]'
                ");
                while($row3 = $Query3->fetch_assoc())
                {
                    echo '<td>'.$row3['Respuesta'].'</td>';
                }
                echo '</tr>';
            }
            ?>
        </tbody> 
    </table>
    <?php
}
?>

好吧,为了解释我的代码,第一个$Query1是对encuestas表的咨询,以获取thead以及与$Query2的关系,

$Query3以获取我需要在tbody上显示的值。

这是我的数据库SQL Fidle

2 个答案:

答案 0 :(得分:0)

您有两个选择:

您可以更改查询

或者您可以更改您的PHP代码。

            while($row3 = $Query3->fetch_assoc())
            {
                echo '<td>'.$row3['Respuesta'].'</td>';
            }

要更改查询,我需要查看数据库的外观等等。

对于php代码

您可以将代码推送到数组列表中。 然后将arraylist推入表格。

我建议您更改查询。

答案 1 :(得分:0)

您需要使用结果创建一个数组并调用此方法,它将转置数组,然后再次打印表格,请查看此示例https://3v4l.org/v9VsV

function transposeArray($array)
{
    $i         = 0;
    $transpose = [];
    while ($columns = array_column($array, $i++))
    {
        $transpose[] = $columns;
    }
    return $transpose;
}