从数据库输入后使用PHP对HTML表进行排序

从数据库输入后使用PHP对HTML表进行排序,php,html,mysql,sorting,html-table,Php,Html,Mysql,Sorting,Html Table,我正在创建一个HTML表,其中包含来自MySQL数据库的数据行和一些计算值,如下所示: <?php $connection = mysql_connect('localhost','root','') or die('Connection failed!'); mysql_select_db('MyDB', $connection); $result = mysql_query('SELECT * FROM DB_TABLE'); ?> <table>

我正在创建一个HTML表,其中包含来自MySQL数据库的数据行和一些计算值,如下所示:

    <?php

$connection = mysql_connect('localhost','root','') or die('Connection failed!');
mysql_select_db('MyDB', $connection);
$result = mysql_query('SELECT * FROM DB_TABLE');

?>

<table>
  <tr>
    <th scope="col">Heading 1</th>
    <th scope="col">Tariefplan</th>
    <th scope="col">Abonnementskost</th>
    <th scope="col">Maandelijkse korting</th>
    <th scope="col">Contractduur</th>
    <th scope="col">Inbegrepen in bundel</th>
    <th scope="col">Tarieven buiten bundel</th>
    <th scope="col"></th>

    <th scope="col">Bereken minuten</th>
    <th scope="col">Bereken SMS'en</th>
    <th scope="col">Bereken MB's</th>
    <th scope="col"></th>

    <th scope="col">Totale prijs normaal</th>
    <th scope="col">Totale prijs promotie</th>
    <th scope="col">Totale prijs contract</th>
  </tr>

<?php
while ($data = mysql_fetch_assoc($result)) {
?>
    <tr>
        <th scope="row"><?php echo $data['provider']; ?></th>
        <td><?php echo $data['planname']; ?></td>
        <td>&euro; <?php echo $data['price_normal']; ?> per maand<br />
            <sub>gedurende <?php echo ($data['contract_duration']-$data['promo_duration']); ?> maanden</sub></td>
        <td>- &euro; <?php echo $data['promo_discount']; ?> per maand<br />
            <sub>gedurende <?php echo $data['promo_duration']; ?> maanden</sub><br />
            <sub>promotie geldig tot <?php echo $data['promo_valid']; ?></sub></td>
        <td><?php echo $data['contract_duration']; ?> maanden</td>
        <td>
            <ul>
                <li><?php echo $data['included_min']; ?> minuten</li>
                <li><?php echo $data['included_sms']; ?> SMS'en</li>
                <li><?php echo $data['included_mb']; ?> MB's</li>
                <li>&euro; <?php echo $data['included_value']; ?> belwaarde</li>
            </ul>
        </td>
        <td>
            <ul>
                <li>&euro; <?php echo $data['price_min']; ?> per minuut</li>
                <li>&euro; <?php echo $data['price_sms']; ?> per SMS</li>
                <li>&euro; <?php echo $data['price_mb']; ?> per MB</li>
            </ul>
        </td>
        <td></td>


        <td>
            <?php
                if ($_POST['used_min'] <= $data['included_min']) {
                    $calc_min = 0;
                }
                else {
                    $calc_min = ($_POST['used_min'] - $data['included_min']) * $data['price_min'];
                }
                echo '&euro; ' . $calc_min;
            ?>
        </td>
        <td>
            <?php
                if ($_POST['used_sms'] <= $data['included_sms']) {
                    $calc_sms = 0;
                }
                else {
                    $calc_sms = ($_POST['used_sms'] - $data['included_sms']) * $data['price_sms'];
                }
                echo '&euro; ' . $calc_sms;
            ?>
        </td>
        <td>
            <?php
                if ($_POST['used_mb'] <= $data['included_mb']) {
                    $calc_mb = 0;
                }
                else {
                    $calc_mb = ($_POST['used_mb'] - $data['included_mb']) * $data['price_mb'];
                }
                echo '&euro; ' . $calc_mb;
            ?>
        </td>
        <td></td>


        <td>
            <?php
                $used_total = ($calc_min + $calc_sms + $calc_mb);
                if ($data['included_value'] > $used_total) {
                    $total_price_normal = $data['price_normal'];
                }
                else {
                    $total_price_normal = ($data['price_normal'] + $used_total);
                }
                echo '&euro; ' . $total_price_normal . ' per maand';
            ?>
        </td>
        <td>
            <?php
                $total_price_discount = ($total_price_normal - $data['promo_discount']);
                echo '&euro; ' . $total_price_discount . ' per maand';
            ?>
        </td>
        <td>
            <?php
                $total_price_contract = ($total_price_normal * ($data['contract_duration']-$data['promo_duration'])) + ($total_price_discount * $data['promo_duration']);
                echo '&euro; ' . $total_price_contract . ' per maand ' . $data['contract_duration'] . ' na maanden';
            ?>
        </td>
    </tr>
<?php } ?>
</table>

标题1
塔里埃夫普兰
阿博尼门茨科斯特酒店
马恩德利克塞·科廷
承包人
班德尔的白鹭湾
塔里文大厦
贝雷肯·米努滕
贝雷肯短信
贝雷肯MB's
普瑞斯标准酒店
道达尔普里斯促销酒店
道达尔普里斯合同
&欧元;每maand
格杜伦德马登 -&欧元;每maand
格杜伦德·马登
格尔迪格托特酒店 马兰登
  • 分钟
  • 短信
  • MB的
  • &欧元;贝尔瓦德
  • &欧元;每分钟
  • &欧元;每短信
  • &欧元;每MB
表中的最后一列是一个可变值,用于计算总额。数据库中未列出此项。 我想把这个表输出到一个浏览器页面,让我们对最后一列进行排序

使用PHP
sort()
asort()
函数,该函数无法正常工作

有人有解决办法吗

使用PHP sort()或asort()函数,该函数无法正常工作


如果您的意思是这样排序,您可以使用。

在SQL查询中进行计算,并让数据库处理排序

首先计算值,然后创建表。或者使用一些javascript。所以您必须遍历$result并将计算出的值放入数组中,然后您可以使用值排序并打印到表中,按最后一个值排序

我认为,如果您首先迭代您的结果,进行计算并将所有内容放入一个数组中会更好。然后,您可以使用任何PHP函数对数组进行排序,并将其输出。这种方法最好的一点是,您将有一个更干净的表输出,因为所有的计算和内容都远离HTML输出;)


另一个想法是,您可以像上面那样进行操作,然后使用Javascript/jQuery中的表排序器对行进行排序。

这是可能的,但使用PHP进行排序可能会比较棘手。为了快速修复问题,您可以尝试这个jquery解决方案,它可以满足您的需要,让您快速启动并运行


我该怎么做呢。(对不起,我对PHP不熟悉)这与PHP没有多大关系,都与MySQL有关。这似乎很有趣,而且最简单。但如何将计算出的值放入数组中呢?首先将结果放入$result,然后使用foreach迭代结果数组(e.q.foreach$result作为$key=>$row)。在foreach中,您可以这样做:$result[$key]['table']['someColumn']=calculatedValue;然后可以使用php函数对数组进行排序。