it-swarm-vi.com

Làm cách nào để in kết quả một hàng được đặt thành bảng html?

Tôi đang thực hiện một truy vấn cơ sở dữ liệu như thế này:

$db = JFactory::getDbo();
$user = JFactory::getUser();
$query = $db->getQuery(true);
$query->select('*');
$query->from($db->quoteName('#__table_name'));
$query->where($db->quoteName('username') . " = ". $db->quote($user->username));
$db->setQuery($query);

$result = $db->loadResult();

$row = $db->loadrow();
print_r($row); </pre>

Đầu ra mà tôi nhận được trông giống như thế này:

Mảng ([0] => any_username [1] => val_of_col1 [2] => val_of_col2 [3] => val_of_col3)

Làm cách nào để chuyển đổi nó thành bảng HTML?

3
saibbyweb

Thử đi:

$rows = $db->loadrow();

echo '<table>';
echo '<tr>';  
   foreach($rows as $row) {
       // display your results here
   }
echo '</tr>';
echo '</table>';

Trước tiên, bạn lặp lại cấu trúc bảng cơ sở và sau đó hiển thị kết quả của bạn

10
Lodder

Chỉ cần làm sáng tỏ một quan niệm sai lầm có thể có về kịch bản trong câu hỏi ...

$result = $db->loadResult(); không có vai trò hoạt động/cần thiết trong quá trình. $result Không được sử dụng sau khi được khai báo và nó không "thiết lập" loadRow().

Về cách lặp lại từng giá trị cột, tôi sẽ đề xuất implode() là phương thức ngắn gọn nhất. Khi làm như vậy, sẽ không có vấn đề gì nếu bạn xây dựng tập kết quả của mình từ loadRow() hoặc loadAssoc() bởi vì implode() sẽ bỏ qua các phím. Điều quan trọng là các cột mà bạn viết vào mệnh đề SELECT của bạn - điều này sẽ ra lệnh chính xác những cột nào được trình bày. Không chắc là bạn sẽ muốn hiển thị TẤT CẢ các cột vì vậy * Nên được hoán đổi cho các khai báo cột bằng chữ (dưới dạng một chuỗi được phân tách bằng dấu phẩy hoặc một chuỗi các chuỗi). Đoạn mã cần theo dõi sẽ hoạt động hoàn hảo ngay cả khi bạn chỉ chọn một cột duy nhất (và tạo tập kết quả một chiều).

$db->loadRow() với implode():

if (!$row = $db->loadRow()) {  // declare and check
    echo "No Row Found";
} else {
    echo '<table>';
        echo '<tr>';
            echo '<td>' , implode('</td><td>', $row) , '</td>';
        echo '</tr>';
    echo '</table>';
}

Nếu bạn muốn hiển thị một hàng các tiêu đề cột, thì hãy sử dụng loadAssoc() để tạo tập kết quả. Nếu bạn muốn điều chỉnh một hoặc nhiều tiêu đề cột sẽ được in ra màn hình, hãy sử dụng "bí danh cột" khi thích hợp trong mệnh đề SELECT của truy vấn của bạn.

if (!$row = $db->loadAssoc()) {  // declare and check
    echo "No Row Found";
} else {
    echo '<table>';
        echo '<tr>';
            echo '<th>' , implode('</th><th>', array_keys($row)) , '</th>';
        echo '</tr>';
        echo '<tr>';
            echo '<td>' , implode('</td><td>', $row) , '</td>';
        echo '</tr>';
    echo '</table>';
}
0
mickmackusa