Sau khi thực hiện một số nghiên cứu, tôi thử sử dụng phương pháp này nhưng hóa ra bảng chỉ lưu trữ hàng dữ liệu thứ nhất, dữ liệu từ hàng thứ 2 trở đi hiển thị bên ngoài bảng thay vì hiển thị bên trong bảng
ID;
?>
get_results["SELECT * FROM wp8u_wc_order_product_lookup"];
foreach [$woo_orders as $print ]{
$order_id = $print->order_id;
$woo_customer_id = $print->customer_id;
$woo_customer = $wpdb->get_results["SELECT * FROM wp8u_wc_customer_lookup where customer_id=$woo_customer_id"];
foreach[$woo_customer as $print2]{
$current_user_uid = $print2->user_id;
}
$date1 = strtotime[$print->date_created];
$date_created = date['Y-m-d H:i:s', $date1];
$amount = $print->product_net_revenue;
if[$userid == $current_user_uid]{ ?>
Order ID
My ID
Create Date
Amount
Đầu ra
Order ID | My ID | My Customer ID | Create Date | Amount |
126 37 9 2020-06-24 13:45:35 3000 order_id; $woo_customer_id = $print->customer_id; $woo_customer = $wpdb->get_results["SELECT * FROM
wp8u_wc_customer_lookup where customer_id=$woo_customer_id"]; foreach[$woo_customer as $print2]{ $current_user_uid = $print2->user_id; } $date1 = strtotime[$print->date_created]; $date_created = date['Y-m-d H:i:s', $date1]; $amount =
$print->product_net_revenue; if[$userid == $current_user_uid]{ ?>
Order ID
My ID
Create Date
Amount
điểm. 0
Bắt đầu từ mẫu mã đầu tiên của bạn Bạn có thể chỉ cần di chuyển bảng và đặt đầu html bên ngoài vòng lặp
ID;
$woo_orders = $wpdb->get_results["SELECT * FROM wp8u_wc_order_product_lookup"];
echo "table>
Order ID
My Customer ID
Create Date
Amount
";
foreach [$woo_orders as $print ]{
$order_id = $print->order_id;
$woo_customer_id = $print->customer_id;
$woo_customer = $wpdb->get_results["SELECT * FROM wp8u_wc_customer_lookup where customer_id=$woo_customer_id"];
foreach[$woo_customer as $print2]{
$current_user_uid = $print2->user_id;
}
$date1 = strtotime[$print->date_created];
$date_created = date['Y-m-d H:i:s', $date1];
$amount = $print->product_net_revenue;
if[$userid == $current_user_uid]{ ?>
";
}
?>
Thêm câu hỏi với thẻ tương tự
Trong khi viết bài này, tôi đã nghĩ ra một cách để thực hiện nó chỉ với 2 thay vì 3 vòng lặp foreach nhưng nó làm cho mã khó đọc và khó sử dụng lại hơn - hãy cho tôi biết nếu bạn muốn và tôi sẽ đăng nó dưới dạng một câu trả lời khác. ]
Giải trình
Biến $rows trả về một cái gì đó có dạng
$rows = array[
[0] => array['field1_val', 'field2_val', ...], //first result
[1] => array[...], //second result
.. //and so on for however many RECORDS there are
];
Nhưng lặp qua điều này trả về một bản ghi tại một thời điểm, trong khi chúng tôi muốn một trường tại một thời điểm - vì vậy dữ liệu phải được sắp xếp lại thành một mảng như thế này
$new_rows = array[
['field1'] => array['result1_val', 'result2_val', ...], //each record's value for the first field
['field2'] => array[...], //each record's value for the second field
.. //and so on for however many FIELDS there are
];
Vì vậy, bây giờ kích thước của mảng bên ngoài là số lượng trường và các mảng bên trong có cùng kích thước với số lượng bản ghi được trả về - một cách hiệu quả, chúng tôi đã biến biến $ rows ban đầu từ trong ra ngoài. Lặp qua mảng này bằng cách sử dụng foreach cung cấp một mảng các giá trị trường mỗi lần. Đó là mục đích của vòng lặp foreach đầu tiên trong mã của tôi [để tạo một mảng dữ liệu ở dạng này] - Tôi cũng quyết định nhóm 2 trường đầu tiên thành một "hàng" vì cả hai đều muốn xuất hiện trên bảng trong
Vòng lặp foreach tiếp theo bắt đầu bảng - đây là lúc việc sử dụng tên trường làm khóa của mảng trở nên hữu ích;
switch [$key] {
case 0:
$similar_com .= "";
break;
case 1:
$similar_com .= "Width";
.. //etc
}
Sau đó, bên trong vòng lặp đó, bạn cần một vòng lặp foreach thứ 3 sẽ lặp qua từng giá trị của bản ghi cho trường đó và in nó ra