@GooseTheDestroyer

Как вывести данные из бд, при использовании Smarty?

Добрый день.
Учусь работать со Smarty 3.
В связи с отсутствием примера в гугле нужной мне структуры, который бы мне помог понять указанный в заголовке момент, прошу вас уделить мне 10 минут.
Уточню еще раз - примеров много, но нужной мне структуры (чтобы было понятно) я не нашел.
Посему прошу сделать мне конкретный пример по моим условиям.

Есть БД "base", в ней таблица "table" с столбцами "col1", "col2", "col3". Располагается на localhost, данные для подключения root, 123456.

Код index.php
<?php
include 'configs/config.php';
***
$smarty->assign('col1', $row);
$smarty->assign('col2', $row);
$smarty->assign('col3', $row);
$display = $smarty->display('index.tpl');


Код config.php
<?php
$mysqli = new mysqli("localhost", "root", "123456", "base");
$mysqli->set_charset("utf8");
if (mysqli_connect_errno()) {
    printf("Ошибка соединения: %s\n", mysqli_connect_error());
    exit();
}
define('SMARTY_DIR', '/usr/share/php/smarty3/');
require_once(SMARTY_DIR . 'Smarty.class.php');
$smarty = new Smarty();


Код index.tpl
<html>
    <head>
        <title>Главная</title>
        <meta charset="utf-8" />
    </head>
    
    <body>
Значение столбца col1 {$col1}.
Значение столбца col2 {$col2}.
Значение столбца col3 {$col3}.
    </body>
</html>


Распишите, пожалуйста, какой код необходимо добавить вместо ***, чтобы данный пример заработал.
Сам не могу понять никак структуру :(
  • Вопрос задан
  • 549 просмотров
Решения вопроса 1
iqw
@iqw
Serior Software Engineer
Сматри всего лишь шаблонизатор для данных, он не умеет фетчить данные из базы, это за рамками его ответственности. В Вашем случае нужно сначала выполнить запрос, который вернет вам 1 запись из базы (используя заранее созданное подключение mysqli), потом эти данные указать в $smarty->assign (вообще assign по факту прикрепляет переменную в шаблон, первый параметр - название этой переменной в шаблоне, второе - ее значение, которое должно там вывестись).
Если сделать более универсально - можно вытянуть 1 запись из бд, получить ее в виде assoc массива и выполнить примерно следующее:
$row = //код выборки записи из базы//;

foreach ($row as $column => $value) {
        $smarty->assign($column, $value);
}


таким образом Вы динамически назначите шаблону столбцы из записи в базе в виде переменных.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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