【问题标题】:Printing a table with php and html: all the results are in the same column用php和html打印表格:所有结果都在同一列
【发布时间】:2022-01-18 13:49:50
【问题描述】:

这里是初学者!我想使用 PHP 和 HTML 打印一个表格,但我在同一列中得到所有结果,我无法识别错误。你能给我一些建议吗?完整的代码在上面。我也在使用 CSS 来“更漂亮”。谢谢。

<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="utf-8">

    <link rel="stylesheet" type="text/css" href="./style.css">

    <title>:: Coefficient de corrélation ::</title>
</head>
<body>


<?php

set_time_limit(0);


$handle = fopen("dados.csv", "r");


//------------------------------------Variable

    $_colonne_matrice_1 = array();
    $_colonne_matrice_2 = array();
    $_colonne_matrice_3 = array();
    $_colonne_matrice_4 = array();
    $_colonne_matrice_5 = array();
    $_colonne_matrice_6 = array();
    $_colonne_matrice_7 = array();
    $_colonne_matrice_8 = array();
    $_colonne_matrice_9 = array();
    $_colonne_matrice_10 = array();
    $_colonne_matrice_11 = array();
    $_colonne_matrice_12 = array();
    $_colonne_matrice_13 = array();
    $_colonne_matrice_14 = array();
    $_colonne_matrice_15 = array();
    $_colonne_matrice_16 = array();
    $_colonne_matrice_17 = array();
    $_colonne_matrice_18 = array();
    $_colonne_matrice_19 = array();
    $_colonne_matrice_20 = array();


    $_colonne_1 = 0;
    $_colonne_2 = 0;
    $_colonne_3 = 0;
    $_colonne_4 = 0;
    $_colonne_5 = 0;
    $_colonne_6 = 0;
    $_colonne_7 = 0;
    $_colonne_8 = 0;
    $_colonne_9 = 0;
    $_colonne_10 = 0;
    $_colonne_11 = 0;
    $_colonne_12 = 0;
    $_colonne_13 = 0;
    $_colonne_14 = 0;
    $_colonne_15 = 0;
    $_colonne_16 = 0;
    $_colonne_17 = 0;
    $_colonne_18 = 0;
    $_colonne_19 = 0;
    $_colonne_20 = 0;



    $sommeT = 0;
    $sommeQ = 0;
    $sommeQQ = 0;
    $sommeQ2 = 0;
    $d = 0;
    $m = array();
    $m0 = array();
    $m1 = array();
    $m2 = array();

    $row = 0;

//-------------------------------Fin des variables

//-------------------------------Manipulation du csv

while ($cols = fgetcsv($handle, 0, ";"))
{

    if ($row++ < 1)
    {
        continue;
    }

//--------------------------------somme de chaque colonne

        $_colonne_1 += $cols[1];
        $_colonne_2 += $cols[2];
        $_colonne_3 += $cols[3];
        $_colonne_4 += $cols[4];
        $_colonne_5 += $cols[5];
        $_colonne_6 += $cols[6];
        $_colonne_7 += $cols[7];
        $_colonne_8 += $cols[8];
        $_colonne_9 += $cols[9];
        $_colonne_10 += $cols[10];
        $_colonne_11 += $cols[11];
        $_colonne_12 += $cols[12];
        $_colonne_13 += $cols[13];
        $_colonne_14 += $cols[14];
        $_colonne_15 += $cols[15];
        $_colonne_16 += $cols[16];
        $_colonne_17 += $cols[17];
        $_colonne_18 += $cols[18];
        $_colonne_19 += $cols[19];
        $_colonne_20 += $cols[20];



//----------------------matrice - conserve les valeurs lues dans les "colonnes"

        $_colonne_matrice_1[] = $cols[1];
        $_colonne_matrice_2[] = $cols[2];
        $_colonne_matrice_3[] = $cols[3];
        $_colonne_matrice_4[] = $cols[4];
        $_colonne_matrice_5[] = $cols[5];
        $_colonne_matrice_6[] = $cols[6];
        $_colonne_matrice_7[] = $cols[7];
        $_colonne_matrice_8[] = $cols[8];
        $_colonne_matrice_9[] = $cols[9];
        $_colonne_matrice_10[] = $cols[10];
        $_colonne_matrice_11[] = $cols[11];
        $_colonne_matrice_12[] = $cols[12];
        $_colonne_matrice_13[] = $cols[13];
        $_colonne_matrice_14[] = $cols[14];
        $_colonne_matrice_15[] = $cols[15];
        $_colonne_matrice_16[] = $cols[16];
        $_colonne_matrice_17[] = $cols[17];
        $_colonne_matrice_18[] = $cols[18];
        $_colonne_matrice_19[] = $cols[19];
        $_colonne_matrice_20[] = $cols[20];

    }

    $diviseurArithmetique = $row - 1;

//---------------------------------------------------médias

    $_moyenne_colonne_1 = $_colonne_1 / $diviseurArithmetique;
    $_moyenne_colonne_2 = $_colonne_2 / $diviseurArithmetique;
    $_moyenne_colonne_3 = $_colonne_3 / $diviseurArithmetique;
    $_moyenne_colonne_4 = $_colonne_4 / $diviseurArithmetique;
    $_moyenne_colonne_5 = $_colonne_5 / $diviseurArithmetique;
    $_moyenne_colonne_6 = $_colonne_6 / $diviseurArithmetique;
    $_moyenne_colonne_7 = $_colonne_7 / $diviseurArithmetique;
    $_moyenne_colonne_8 = $_colonne_8 / $diviseurArithmetique;
    $_moyenne_colonne_9 = $_colonne_9 / $diviseurArithmetique;
    $_moyenne_colonne_10 = $_colonne_10 / $diviseurArithmetique;
    $_moyenne_colonne_11 = $_colonne_11 / $diviseurArithmetique;
    $_moyenne_colonne_12 = $_colonne_12 / $diviseurArithmetique;
    $_moyenne_colonne_13 = $_colonne_13 / $diviseurArithmetique;
    $_moyenne_colonne_14 = $_colonne_14 / $diviseurArithmetique;
    $_moyenne_colonne_15 = $_colonne_15 / $diviseurArithmetique;
    $_moyenne_colonne_16 = $_colonne_16 / $diviseurArithmetique;
    $_moyenne_colonne_17 = $_colonne_17 / $diviseurArithmetique;
    $_moyenne_colonne_18 = $_colonne_18 / $diviseurArithmetique;
    $_moyenne_colonne_19 = $_colonne_19 / $diviseurArithmetique;
    $_moyenne_colonne_20 = $_colonne_20 / $diviseurArithmetique;



    $nEchantillons = $diviseurArithmetique - 1;


//-------------------------------Contrôle les indices et les moyennes des colonnes


    $m[] = '';
    $m[] = $_colonne_matrice_1;
    $m[] = $_colonne_matrice_2;
    $m[] = $_colonne_matrice_3;
    $m[] = $_colonne_matrice_4;
    $m[] = $_colonne_matrice_5;
    $m[] = $_colonne_matrice_6;
    $m[] = $_colonne_matrice_7;
    $m[] = $_colonne_matrice_8;
    $m[] = $_colonne_matrice_9;
    $m[] = $_colonne_matrice_10;
    $m[] = $_colonne_matrice_11;
    $m[] = $_colonne_matrice_12;
    $m[] = $_colonne_matrice_13;
    $m[] = $_colonne_matrice_14;
    $m[] = $_colonne_matrice_15;
    $m[] = $_colonne_matrice_16;
    $m[] = $_colonne_matrice_17;
    $m[] = $_colonne_matrice_18;
    $m[] = $_colonne_matrice_19;
    $m[] = $_colonne_matrice_20;


    $m0[] = '';
    $m0[] = $_colonne_matrice_1;
    $m0[] = $_colonne_matrice_2;
    $m0[] = $_colonne_matrice_3;
    $m0[] = $_colonne_matrice_4;
    $m0[] = $_colonne_matrice_5;
    $m0[] = $_colonne_matrice_6;
    $m0[] = $_colonne_matrice_7;
    $m0[] = $_colonne_matrice_8;
    $m0[] = $_colonne_matrice_9;
    $m0[] = $_colonne_matrice_10;
    $m0[] = $_colonne_matrice_11;
    $m0[] = $_colonne_matrice_12;
    $m0[] = $_colonne_matrice_13;
    $m0[] = $_colonne_matrice_14;
    $m0[] = $_colonne_matrice_15;
    $m0[] = $_colonne_matrice_16;
    $m0[] = $_colonne_matrice_17;
    $m0[] = $_colonne_matrice_18;
    $m0[] = $_colonne_matrice_19;
    $m0[] = $_colonne_matrice_20;


    $m1[] = '';
    $m1[] = $_moyenne_colonne_1;
    $m1[] = $_moyenne_colonne_2;
    $m1[] = $_moyenne_colonne_3;
    $m1[] = $_moyenne_colonne_4;
    $m1[] = $_moyenne_colonne_5;
    $m1[] = $_moyenne_colonne_6;
    $m1[] = $_moyenne_colonne_7;
    $m1[] = $_moyenne_colonne_8;
    $m1[] = $_moyenne_colonne_9;
    $m1[] = $_moyenne_colonne_10;
    $m1[] = $_moyenne_colonne_11;
    $m1[] = $_moyenne_colonne_12;
    $m1[] = $_moyenne_colonne_13;
    $m1[] = $_moyenne_colonne_14;
    $m1[] = $_moyenne_colonne_15;
    $m1[] = $_moyenne_colonne_16;
    $m1[] = $_moyenne_colonne_17;
    $m1[] = $_moyenne_colonne_18;
    $m1[] = $_moyenne_colonne_19;
    $m1[] = $_moyenne_colonne_20;








    $m2[] = '';
    $m2[] = $_moyenne_colonne_1;
    $m2[] = $_moyenne_colonne_2;
    $m2[] = $_moyenne_colonne_3;
    $m2[] = $_moyenne_colonne_4;
    $m2[] = $_moyenne_colonne_5;
    $m2[] = $_moyenne_colonne_6;
    $m2[] = $_moyenne_colonne_7;
    $m2[] = $_moyenne_colonne_8;
    $m2[] = $_moyenne_colonne_9;
    $m2[] = $_moyenne_colonne_10;
    $m2[] = $_moyenne_colonne_11;
    $m2[] = $_moyenne_colonne_12;
    $m2[] = $_moyenne_colonne_13;
    $m2[] = $_moyenne_colonne_14;
    $m2[] = $_moyenne_colonne_15;
    $m2[] = $_moyenne_colonne_16;
    $m2[] = $_moyenne_colonne_17;
    $m2[] = $_moyenne_colonne_18;
    $m2[] = $_moyenne_colonne_19;
    $m2[] = $_moyenne_colonne_20;



//-----------------------------------------------Coefficient

echo ('<div class="container">');

    echo ('<div class="linha">');

        for ($t = 65; $t < 85; $t++)
        {
            echo ('<div class="header borda">&#'.$t.';</div>');
        }
    
    echo ('</div>');


    echo ('<div class="colStamps">');

        for ($t = 65; $t < 85; $t++)
        {
            echo ('<div class="colAb bordaRight">&#'.$t.';</div>');
        }

    echo ('</div>');


    for ($s = 1; $s < 21; $s++)
    {
        for ($f = 1; $f < 21; $f++)
        {
            echo ('<div class="col">');

            for ($ii = 0; $ii < $diviseurArithmetique; $ii++)
            {
                $sommeT += (($m[$s][$ii] - $m1[$s]) * ($m0[$f][$ii] - $m2[$f]) );

                $sommeQ += (($m[$s][$ii] - $m1[$s]) ** 2 );

                $sommeQQ += (($m0[$f][$ii] - $m2[$f]) ** 2 );
            }

            $sommeQ2 = sqrt($sommeQ * $sommeQQ);
            $d = $sommeT / $sommeQ2;

            if ($d == 1)
            {
                echo ('<span class="destaque">'.$d.'</span>');
            }
            else
            {
                echo (number_format($d,2,",","."));
            }

            $sommeT = 0;
            $sommeQ = 0;
            $sommeQQ = 0;
            $sommeQ2 = 0;
            echo ('</div>');
        }
    }

echo ('</div>');

?>

</body>
</html>

我希望将结果显示在不同的列中。 此代码的目的是关联 data.csv 中收集的用户偏好,其中每一列代表一个用户,每个用户对行中表示的不同产品给出 1 到 5 之间的分数。

【问题讨论】:

  • 您是否尝试过使用“常规”表格?毕竟是表格数据
  • 你试过 和 元素吗?而不是只使用 div?

标签: php html css csv


【解决方案1】:
<?php

/**
 * If I understand you correctly, the data.csv file looks like:
 *          ; User 1; User 2; User 3
 * Product A;      1;      1;      1
 * Product B;      2;      2;      2
 *
 * Then the easiest thing to do is convert it to an array that looks like:
 * $data[
 *     [
 *         'user' => 'User 1',
 *         'products' => [
 *             [
 *                 'product' => 'Product A',
 *                 'score' => 1
 *             ],
 *             [
 *                 'product' => 'Product B',
 *                 'score' => 2
 *             ]
 *         ]
 *     ],
 *     // Etc...
 * ];
 */
$fp = fopen('data.csv', 'r');
$firstRow = true;
$firstColumn = true; // Assuming first column/row is empty

$users = [];

while (($line = fgetcsv($fp, 0, ';')) !== false) {
    // Built user list from columns in first row.
    if ($firstRow) {
        foreach ($line as $user) {
            // Skip first empty column.
            if ($firstColumn) {
                $firstColumn = false;
                continue;
            }

            $users[] = [
                'user' => $user,
                'products' => []
            ];
        }
        $firstRow = false;
        continue;
    }

    // Remove product from line.
    $product = array_shift($line);

    // Reset indexes.
    $line = array_values($line);

    foreach ($line as $userIndex => $userScore) {
        $user[$userIndex]['products'][] = [
            'product' => $product,
            'score' => $userScore
        ];
    }
}

?>
<!DOCTYPE html>
<html>
<head>
    <title>test</title>
</head>
<body>
    <!-- And then print the array (with table or div) -->
    <table>
        <thead>
            <tr>
                <th>&nbsp;<!-- First empty (top left) --></th>
                <?php
                foreach ($users as $user) {
                    echo '<th>' . $user['user'] . '</th>';
                }
                ?>
            </tr>
        </thead>
        <tbody>
        <?php
            // Grab list of products from first entry.
            $products = $users[0]['products'];
            
            // Loop through all products.
            foreach ($products as $index => $product) {
                // Grab product name (first column).
                echo '<tr><th>'.$product['product'].'</th>';

                // Loop through all users and grab score for selected product.
                foreach ($users as $user) {
                    echo '<td>' . $user['products'][$index]['score'] . '</td>';
                }
                
                // Close row.
                echo '</tr>';
            }
        ?>
        </tbody>
    </table>
</body>
</html>
<?php

fclose($fp);

【讨论】:

  • 感谢您的帮助,但我不是打印 csv 本身,而是以表格格式打印我在代码中计算的相关性。
猜你喜欢
  • 2013-08-07
  • 1970-01-01
  • 2017-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-13
  • 1970-01-01
相关资源
最近更新 更多