2015-06-29 19 views
5

Tôi đang cố gắng điền bảng HTML với dữ liệu đến từ cơ sở dữ liệu của tôi. Ở đây tôi đã lưu trữ "dịch vụ" trong bảng của tôi. Mỗi dịch vụ có thể có nhiều hình ảnh. Vì vậy, khi populating bảng nó phải có 3 bảng cells một cho "tên dịch vụ" và thứ hai cho "mô tả" và thứ ba cho hình ảnh.Điền bảng HTML với dữ liệu MySQL (nhiều hình ảnh cho ô bảng)

này được truy vấn SQL của tôi trông giống như:

$prep_stmt = " SELECT s.id 
        , s.name 
        , s.description 
        , i.image 
        , i.image_path 
       FROM services s 
       LEFT JOIN images i ON i.service_id = s.id"; 

Đây là cách nhìn của tôi while như thế này:

while ($stmt->fetch()) {   
    $html = "<tr>\n"; 
    $html .= " <td><input type='checkbox'></td>\n";  
    $html .= " <td>\n";  
    $html .= "  <a href='' class='name'>{$name}</a>\n";  
    $html .= " </td>\n"; 
    $html .= " <td class='view_html'>{$description}</td>\n"; 
    $html .= " <td>\n";  
       --- My images should be display here ---- 
    $html .= " </td>\n"; 
    $html .= "</tr>\n";     

    //Add output to array 
    $output[] = $html; 
} 

Vấn đề của tôi là thế nào tôi hiển thị nhiều hình ảnh trong một ô trong bảng? Nếu một dịch vụ chỉ có một hình ảnh thì tôi có thể thực hiện, nhưng nó có nhiều hình ảnh thì tôi không chắc chắn làm thế nào để thực hiện nó.

+0

cửa hàng đầu tiên những giá trị trong một mảng, sau đó sử dụng mảng để tạo ra các bảng html –

+0

@FerozAkbar , Cảm ơn bình luận của bạn. Nhưng tôi không chắc chắn làm thế nào để làm điều đó. Bạn có thể vui lòng chỉ cho tôi một ví dụ không? Cảm ơn bạn. – user3733831

+1

Tôi sẽ tham gia. Kéo tất cả các dịch vụ rồi truy vấn tất cả các hình ảnh khi tạo HTML khi cần. Như bạn sẽ nhận được nhiều hàng cho mỗi ID, mà tôi không nghĩ rằng bạn muốn. – chris85

Trả lời

7

Thay đổi mã sql của bạn như dưới đây và thử

$prep_stmt = " SELECT s.id 
        , s.name 
        , s.description 
        , (select group_concat(i.image_path,'/',i.image) from images i where i.service_id = s.id) as img 
       FROM services s"; 

Sau đó sử dụng mã Html này

while ($stmt->fetch()) {   
    $html = "<tr>"; 
    $html .= " <td><input type='checkbox'></td>";  
    $html .= " <td>";  
    $html .= "  <a href='' class='name'>{$name}</a>";  
    $html .= " </td>"; 
    $html .= " <td class='view_html'>{$description}</td>"; 

    $html .= " <td>"; 
    $img_array=explode(",",$img); 
    foreach($img_array as $im){ 
     if($im==''){ 
     $html .= " <img src='default.jpg'>"; 
     }else{ 
     $html .= " <img src='{$im}'>"; 
     } 
    } 
    $html .= " </td>"; 

    $html .= "</tr>";     

    //Add output to array 
    $output[] = $html; 
} 
+0

GROUP_CONCAT thật tuyệt. Tôi không biết bạn có thể trả về một mảng như thế. – Codeguy007

+0

Sau đó truy vấn của tôi chỉ tìm nạp một hàng ... – user3733831

+0

Tôi đã thử nó với 'INNER JOIN' nhưng vấn đề là giống nhau – user3733831

Các vấn đề liên quan