Bảng php html foreach

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

Chủ Đề