如何正确地从一行中排序数据

How to order Data from a row properly

如何从 mysql 行中排序结果。目前我的代码是这样的:

require 'dbconnect.php';

// Query the database
$resultSet = $conn->query("SELECT * FROM wp_wppizza_orders");

    if($resultSet->num_rows != 0){
        // Turn the results into an Array
         while($rows = $resultSet->fetch_assoc())
         {
            $id = $rows['id'];
            $klantgegevens = $rows['customer_details'];   
            $bestelling = $rows['order_details'];   
            $statusbetaling = $rows['payment_status'];   
            $printed = $rows['printed'];
            if ($printed == 1){
               $printed = "FINISHED";
            } else {
               $printed = "NEW";
            }
            echo "<p class = 'orders'>";
            echo "<b>Klant gegevens:</b> $klantgegevens <br /><b>Bestelling:</b> $bestelling<br /> <b>Betaal Status:</b> $statusbetaling <br /> <b>Order Status:</b> $printed <br /> <a href='delete.php?del=$id'>Delete</a> <a href='update.php?del=$id'>Bon</a>";
            echo "</p>";
         }

结果是这样的:

Klant gegevens(客户详细信息):姓名:Swag 电子邮件:EnesDemirICT@gmail.com 地址:Florisvosstraat 56 电话:+31685035990 评论:嗨,我叫杰森伯恩.

畅销: 1x 披萨 A 中号 [£ 7.45] £ 7.45 1x 披萨 B 中号 [£ 7.45] £ 7.45 1x 披萨 C 中号 [£ 7.45] £ 7.45 您的商品 £ 22.35 免费送货总计 £ 22.35

测试状态:已完成

订单状态:已完成

删除 Bon

如您所见,客户详细信息乱七八糟,我该如何订购才能使它看起来整洁。我有这样的想法:

姓名:姓名

电子邮件:电子邮件

地址:地址

电话:电话

评论:评论

编者注:问题是数据全部存储在数据库的一个变量中,无法重构数据库。需要把数据从一个变量中拉出来,按照上面的方法重组。

您的所有详细信息都在 $klantgegevens 中,并且该数据全部显示在一行中。那会给你带来麻烦。

您似乎没有规范化数据库中的数据。我建议创建一个类似于 customerDetails 的 table 名称,然后包括 idnameemail 等行

您的查询看起来像这样:

$resultSet = $conn->query("SELECT * FROM wp_wppizza_orders w
                           JOIN customerDetails c
                           ON w.id = c. id");

这样当您 运行 您的查询时,每一个都会出现在单独的行中,如下所示:

$name = $rows['name']; 
$email = $rows['email']; 

这样当你回显行时,它会像这样正确地分隔它们:

     while($rows = $resultSet->fetch_assoc()) {

            echo 'Name: '.$name.'<br/>';
            echo 'email: '.$email.'<br/>';
     }

编辑: :由于您被迫拆分一行文本,您可能需要使用正则表达式做一些事情。下面是如何为 name 创建变量的示例。试试这个。你应该能够修改你的代码来处理这样的事情。

$klantgegevens = "Name : Swag Email : EnesDemirICT@gmail.com Address : Florisvosstraat 56 Telephone : +31685035990 Comments : Hi my name is jason bourne";
$names = preg_split('/Name :/', $klantgegevens);
array_shift($names);
echo "<pre>";
$name = print_r($names[0]);

echo $name;

您可以对剩余的行执行类似的操作。

再次编辑:这是一个更好的方法。 我们只是抓取标签 "Name" 和 "Email" 之间的行。比处理 preg_split 容易得多。下面的通配符只显示为 (.*?)

$klantgegevens = "Name : Swag Email : EnesDemirICT@gmail.com Address : Florisvosstraat 56 Telephone : +31685035990 Comments : Hi my name is jason bourne";
preg_match("'Name : (.*?)Email :'s", $klantgegevens, $name);
echo $name[1];

要获取其他变量,唯一需要做的就是更改字符串,例如将 Name : 更改为 Email :,然后将 Email : 更改为 Address :