Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Шаблоны (TPL) » Вывод данных из всех строк таблицы бд списком в нужном формате?

Вывод данных из всех строк таблицы бд списком в нужном формате?


     02.07.2016    Шаблоны (TPL), MySQL    1913

вопрос
Доброго всем дня, возникла проблема с выводом данных из бд на страницу. Перечитал схожие вопросы тут - не нахожу ошибку. Ткните носом(
Получается вывести только одну строку из бд, а нужно все (либо с ограничением в N штук) и не получается использовать свой тег для вывода.... только через эхо выводит(
Вводные:
таблица бд: test_potok (где test_ - префикс)
код модуля

if( ! defined( 'DATALIFEENGINE' ) ) {
    die( "Hacking attempt!" );
}

include ('engine/api/api.class.php');

$potok=$dle_api->load_from_cache( "potok", 60);

if (!$potok) {

    $sql = $db->query("SELECT * FROM " . PREFIX . "_potok");

    while($row = $db->get_row($sql)){
        $potok = "<tr><td>".$row['id']."</td><td>".$row['status']."</td><td>".$row['name']."</td><td>".$row['date']."</td><td>".$row['potokov']."</td><td>".$row['goods']."</td><td>".$row['bad']."</td></tr>";
    }
    $db->free();
    $dle_api->save_to_cache ( "potok", $potok);
}
$tpl->set ('{potok}', $potok);

Ответил: PunPun


 $potok = "<tr><td>".$row['id']."</td><td>".$row['status']."</td><td>".$row['name']."</td><td>".$row['date']."</td><td>".$row['potokov']."</td><td>".$row['goods']."</td><td>".$row['bad']."</td></tr>";
на
 $potok .= "<tr><td>".$row['id']."</td><td>".$row['status']."</td><td>".$row['name']."</td><td>".$row['date']."</td><td>".$row['potokov']."</td><td>".$row['goods']."</td><td>".$row['bad']."</td></tr>";


Почитайте о конкатенации строк

2 комментария

kolllak
Юзер

kolllak - 2 июля 2016 20:04 -

Так же пробовал другим методом апи, загрузкой таблицы, аналогично только одну строку получается подхватить приходится выводить через echo. Тег заменять не получается.(

include ('engine/api/api.class.php');
$table = 'test_potok';  // название таблицы
$fields  = '*'; // нужные поля, * - все поля
$where = 'status=1'; // условия выборки
$multirow = 0; // забирать ли один ряд или несколько
$start = 0; // начальное значение выборки
$limit = 0; // количество записей для выборки, 0 - выбрать все

$potok=$dle_api->load_from_cache( "potok", 60);

$row = $dle_api->load_table ($table,$fields,$where,$multirow,$start,$limit);
$potok = "<tr><td>".$row['id']."</td><td>".$row['status']."</td><td>".$row['name']."</td><td>".$row['date']."</td><td>".$row['potokov']."</td><td>".$row['goods']."</td><td>".$row['bad']."</td></tr>";
$dle_api->save_to_cache ( "potok", $potok);
echo $potok;
//$tpl->set ('{potok}', '$potok');

kolllak
Юзер

kolllak - 3 июля 2016 14:43 -

спасибо, в итоге сделал форматирование в json через стандартные средства php.
вариант 1 (пробовал его изначально - не разобрался почему выходной формат не тот)
$db->query ( "SELECT * FROM test_potok WHERE status = 1 ORDER BY id DESC LIMIT 30" );
$potok = [];
while ( $row = $db->get_row () ) {
    $potok[] = $row;
}
$data = json_encode(["DATA" => $potok]);


вариант 2 (тот что оптимально подошел)
$db->query ( "SELECT * FROM test_potok WHERE status = 1 ORDER BY id DESC LIMIT 30" );
$potok = [];
while ( $row = $db->get_row () ) {
    $potok[] = array_values($row);
}
$data = json_encode(["DATA" => $potok]);


изначально тоже так пробовал, НО! стоял php 5.3 - он ругается на квадратные скобки, скорее всего есть и для него решение - я просто обновил php до 5.4

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх