brussens
Мега-мастер
Дата регистрации:
11.10.2011 22:50:07
Сообщений: 438
Михаил, подскажите пожалуйста, как значения из цикла while вывести в tpl???
Ведь там получается конструкция
$cikl = while ($row = mysqli_fetch_array($result)) echo "<input type = 'checkbox' name = 'style[]' value = '" . $row['id'] . "'>" . $row['name'] . "<br />";
$styles = file_get_contents("./templates/reg_form.tpl"
$styles = str_replace("{styles}", $cikl, $styles);
echo $styles;
А это вообще смешно выглядит) Ведь наверное есть какие нибудь способы записи такого цикла?
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
Насколько я понимаю, в $row содержится набор элементов, которые необходимо подставить в reg_form.tpl. Если так, то нужно создать внутри цикла 2 массива: элементов шаблона и соответствующие значения.
Далее вызвать str_replace($el_templates, $el_values, $template); Первые две переменные - это и есть массивы, которые были созданы в цикле.
brussens
Мега-мастер
Дата регистрации:
11.10.2011 22:50:07
Сообщений: 438
Ага, вроде понял))) Пойду пробовать)))
brussens
Мега-мастер
Дата регистрации:
11.10.2011 22:50:07
Сообщений: 438
Михаил, ну значения я понял как сделать в массив, а вот как саму заменяемую строку в tpl файле тогда заменять? Ведь получается, что цикл у меня сам делает код и html
вот примерно код с массивом значений
public function styles() {
$query = "SELECT * FROM styles";
$result = mysqli_query($this->connect, $this->close) or die("Ошибка!!!!"
$styles = file_get_contents("./templates/reg_form.tpl"
while ($row = mysqli_fetch_array($result)) {
$asd[] = "<input type = 'checkbox' name = 'style[]' value = '" . $row['id'] . "'>" . $row['name'] . "<br />";
}
$styles = str_replace("{styles}", $asd[], $styles);
echo $styles;
}
Как заменить этим строку "{styles}"?
Вот код tpl файла
<form name = "form1" action = "obr.php" method = "post">
<input type = "text" name = "name">Имя<br />
{styles}
</form>
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
У Вас проще, чем я думал. Здесь даже массивы не нужны. Достаточно в цикле вместо массива использовать обычную переменную:
$text .= "<input type = 'checkbox' name = 'style[]' value = '" . $row['id'] . "'>" . $row['name'] . "<br />";
Заметьте, она с каждой итерацией увеличивается.
А затем: $styles = str_replace("{styles}", $text, $styles);
brussens
Мега-мастер
Дата регистрации:
11.10.2011 22:50:07
Сообщений: 438
Спасибо, Михаил))))Заработало))) Только вот появился вопрос, что означачет точка перед знаком = ???
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
Это аналогично: $text = $text."какая-то строка";
brussens
Мега-мастер
Дата регистрации:
11.10.2011 22:50:07
Сообщений: 438
аааа, спасибо за инфо)))
brussens
Мега-мастер
Дата регистрации:
11.10.2011 22:50:07
Сообщений: 438
Михаил, а как сделать, что бы в цикле было размещение не
<input type = 'checkbox' name = 'style[]' value = '15'>Acid Breaks<br /><input type = 'checkbox' name = 'style[]' value = '16'>Ambient Breaks<br />
<input type = 'checkbox' name = 'style[]' value = '15'>Acid Breaks<br /><input type = 'checkbox' name = 'style[]' value = '16'>Ambient Breaks<br />
а допустим
<input type = 'checkbox' name = 'style[]' value = '15'>Acid Breaks<br /><input type = 'checkbox' name = 'style[]' value = '16'>Ambient Breaks
<input type = 'checkbox' name = 'style[]' value = '15'>Acid Breaks<br /><input type = 'checkbox' name = 'style[]' value = '16'>Ambient Breaks<br />
То есть через каждые 2 прохода он ставил <br /> в конце?
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
Идея примерно такая:
$i = 0;
while (...) {
$i++;
if ($i % 2 == 0) $text .= с br;
else $text .= без br;
}