【发布时间】:2019-06-09 17:20:35
【问题描述】:
我在 mysql 中的数据库有一个名为“sales”的表,其中有一个字段“products”,其中几个产品在 json 中“出售”,在这个 json 中我只需要获取信息“brand”和“model”将其显示在数据表中,谢谢。
这是我的桌子的图像。
Here is the json [{"id":"312","marca":"NIKON","modelo":"D3400","serie":"8857882","cantidad":"1","stock":"0","precio":"1669","total":"1669"},{"id":"161","marca":"NIKON","modelo":"AF-P NIKKOR 18-55MM 1:3.5-5.6G","serie":"21963658","cantidad":"1","stock":"0","precio":"0","total":"0"}]
public function mostrarTablaSell(){
$item = null;
$valor = null;
$orden = "id";
$ventas = ControladorVentas::ctrMostrarVentas($item, $valor, $orden);
if(count($ventas) == 0){
echo '{"data": []}';
return;
}
$datosJson = '{
"data": [';
for($i = 0; $i < count($ventas); $i++){
/*=============================================
PRODUCTOS
=============================================*/
$here = json_decode($ventas[$i]["productos"], true);
foreach ($here as $key => $value) {
$productos1 = $value['marca'];
$productos2 = $value['modelo'];
}
//$productos0 = $here[0]['categoria'];
//$productos1 = $here[0]['marca'];
//$productos2 = $here[0]['modelo'];
$productos = $productos1 .' '. $productos2;
/*=============================================
TRAEMOS LAS ACCIONES
=============================================*/
if(isset($_GET["perfilOculto"]) && $_GET["perfilOculto"] == "Especial"){
$botones = "<div class='btn-group'><button class='btn btn-warning btnEditarVenta' idVenta='".$ventas[$i]["id"]."'><i class='fa fa-pencil'></i></button><button class='btn btn-danger btnEliminarVenta' idVenta='".$ventas[$i]["id"]." '><i class='fa fa-times'></i></button><button class='btn btn-info btnImprimirFactura' codigoVenta='".$ventas[$i]["codigo"]."'><i class='fa fa-print'></i></button></div>";
}else{
$botones = "<div class='btn-group'><button class='btn btn-warning btnEditarVenta' idVenta='".$ventas[$i]["id"]."'><i class='fa fa-pencil'></i></button><button class='btn btn-danger btnEliminarVenta' idVenta='".$ventas[$i]["id"]." '><i class='fa fa-times'></i></button><button class='btn btn-info btnImprimirFactura' codigoVenta='".$ventas[$i]["codigo"]."'><i class='fa fa-print'></i></button></div>";
}
$datosJson .='[
"'.($i+1).'",
"'.$ventas[$i]["id"].'",
"'.$ventas[$i]["codigo"].'",
"'.$vendedor.'",
"'.$cliente.'",
"'.$ventas[$i]["proviene"].'",
"'.$productos.'",
"'.$ventas[$i]["desp"].'",
"'.$ventas[$i]["adelanto"].'",
"'.$ventas[$i]["total"].'",
"'.$ventas[$i]["estado"].'",
"'.$ventas[$i]["obs"].'",
"'.$ventas[$i]["fecha"].'",
"'.$botones.'"
],';
}
$datosJson = substr($datosJson, 0, -1);
$datosJson .= ']
}';
echo $datosJson;
}
}
【问题讨论】:
-
请避免手动构造json输出字符串。
json_encode()存在是有原因的。两个$botones声明不一样吗?为什么是条件块? -
并添加到@mickmackusa 的评论中,为什么您将产品以 JSON 格式存储在数据库中?您永远无法轻松搜索这些并在 JSON 上使用索引...理想情况下,您应该规范化该数据或使用 NoSQL 数据库。MySQL 是时候支持 JSONB(二进制 JSON)格式和像 PostgreSQL 一样的原生索引支持了。
-
@mickmackusa 我不知道将图像转换为文本的简单方法。
-
我一直在忙于修复代码缩进,而不是实际解决答案,去做吧!
-
[{"id":"312","marca":"NIKON","modelo":"D3400","serie":"8857882","cantidad":"1", "stock":"0","precio":"1669","total":"1669"},{"id":"161","marca":"NIKON","modelo":"AF-P尼克尔 18-55MM 1:3.5-5.6G","serie":"21963658","cantidad":"1","stock":"0","precio":"0","total":"0 "}]