如何正确地从一行中排序数据
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 名称,然后包括 id
、name
、email
等行
您的查询看起来像这样:
$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 :
等
如何从 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 名称,然后包括 id
、name
、email
等行
您的查询看起来像这样:
$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 :
等