Master-X
Регистрация
|
Вход
Форум
|
Новости
|
Статьи
Главная
»
Форум
»
Программинг, Скрипты, Софт, Сервисы
»
Тема:
Хелп нид php
Новая тема
Ответить
цитата
11/04/08 в 10:39
_s_[sov]
сабжик::::
Код:
$file = file_get_contents("./template_m/main.html");
$result = mysql_query("SELECT id,name FROM `content` WHERE type=1");
$ss = $file;
while($al = mysql_fetch_array($result)){
$ss = str_replace(array("{id}","{name}"), array(html_entity_decode($al['id']), html_entity_decode($al['name'])),$ss);
}
echo $ss;
В шаблоне
Код:
<a href="zakoni_{id}.html">{name}</a>
Проблема в том что выводится только ОДИН пост,
Код:
$al['name']
здесь все извлекается но вот
Код:
echo $ss;
выводит только одно, вроде бы понимаю почему но не могу догнать как вывести все???
Всем ответившим по делу максимальный рейтинг.
цитата
11/04/08 в 10:44
wMaster
так попробуй... точечка перед равно.
Код:
while($al = mysql_fetch_array($result)){
$ss .= str_replace(array("{id}","{name}"), array(html_entity_decode($al['id']), html_entity_decode($al['name'])),$ss);
}
Последний раз редактировалось: wMaster (
11/04/08 в 10:45
), всего редактировалось 1 раз
цитата
11/04/08 в 10:44
Teacher-X
echo занеси внутрь фигурной скобки
цитата
11/04/08 в 10:49
wMaster
У тебя здесь еще один косяк, ты $ss присваиваешь шаблон перед циклом.
И этой строкой ты его перезаписываешь в первом же цикле.
$ss = str_replace(array("{id}","{name}"), array(html_entity_decode($al['id']), html_entity_decode($al['name'])),$ss);
так нужно
Код:
$file = file_get_contents("./template_m/main.html");
$ss = '';
$result = mysql_query("SELECT id,name FROM `content` WHERE type=1");
while($al = mysql_fetch_array($result)){
$ss .= str_replace(array("{id}","{name}"), array(html_entity_decode($al['id']), html_entity_decode($al['name'])), $file);
}
echo $ss;
цитата
11/04/08 в 10:52
_s_[sov]
если echo поставить в цикле то выводятся все новости НО каждая новость в отдельной шаблоне, 5 новостей и 5 шабонов на странице одна под другой. если использоваться конкатенацию то вапще беда получаится
терь вот так код исправил:
Код:
$result = mysql_query("SELECT id,name FROM `content` WHERE type=1");
while($al = mysql_fetch_array($result)){
$ss = str_replace(array("{id}","{name}"), array(html_entity_decode($al['id']), html_entity_decode($al['name'])),$file);
}
echo $ss;
опять выводит одну новость, но тока последнию
цитата
11/04/08 в 10:56
wMaster
Поставь сейчас точку перед равно, я привел выше корректный код.
цитата
11/04/08 в 10:59
_s_[sov]
wMaster
с точкой ситуация такая:
1
3
происходит наложение шаблонов
цитата
11/04/08 в 11:07
wMaster
ты в точности сделал как ниже?
Код:
$file = file_get_contents("./template_m/main.html");
$ss = '';
$result = mysql_query("SELECT id,name FROM `content` WHERE type=1");
while($al = mysql_fetch_array($result)){
$ss .= str_replace(array("{id}","{name}"), array(html_entity_decode($al['id']), html_entity_decode($al['name'])), $file);
}
echo $ss;
код верен, не знаю тогда в чем может быть еще дело.
цитата
11/04/08 в 11:07
Teacher-X
тс, я сказал тебе верный вариант по коду, если что-то не так с отображением, то это уже вопросы к реализации шаблона, в студию его, чтоли
цитата
11/04/08 в 11:10
_s_[sov]
Код:
$file = file_get_contents("./template_m/main.html");
$ss = '';
$result = mysql_query("SELECT id,name FROM `content` WHERE type=1");
while($al = mysql_fetch_array($result)){
$ss .= str_replace(array("{id}","{name}"), array(html_entity_decode($al['id']), html_entity_decode($al['name'])), $file);
}
echo $ss;
теперь вот так, каждая новость в отдельном шаблоне.
ну вот конструкция, которая в шаблоне:
Код:
<strong><a href="zakoni_{id}.html">{name}</a></strong>
Teacher-X
точка перед равно или echo за циклом это одно и тоже
цитата
11/04/08 в 11:18
Teacher-X
_s_[sov] писал:
Код:
<strong><a href="zakoni_{id}.html">{name}</a></strong>
Teacher-X
точка перед равно или echo за циклом это одно и тоже
да ладно?
по сабжу: убери из шаблона <strong></strong> и сделай так:
Код:
echo '<strong>';
$file = file_get_contents("./template_m/main.html");
$ss = '';
$result = mysql_query("SELECT id,name FROM `content` WHERE type=1");
while($al = mysql_fetch_array($result)){
$ss .= str_replace(array("{id}","{name}"), array(html_entity_decode($al['id']), html_entity_decode($al['name'])), $file);
echo $ss;
}
echo '</strong>';
цитата
11/04/08 в 11:47
Corex
Если шаблон состоит из одной строки
Код:
<strong><a href="zakoni_{id}.html">{name}</a></strong>
то тут правильно написали, нужна конкатенация.
Если шаблон состоит из нескольких схожих строк:
Код:
<strong><a href="zakoni_{id}.html">{name}</a></strong>
<strong><a href="zakoni_{id}.html">{name}</a></strong>
<strong><a href="zakoni_{id}.html">{name}</a></strong>
<strong><a href="zakoni_{id}.html">{name}</a></strong>
то str_replace заменяет все {id} и {name} каждый раз, а не по очереди в каждой строке, поэтому и выводится только последний пост.
Покажи полностью шаблон, собака точно там зарыта! :-)
цитата
11/04/08 в 11:56
_s_[sov]
Код:
$ss = "";
$result = mysql_query("SELECT id,name FROM `content` WHERE type=1");
while($al = mysql_fetch_array($result)){
$ss1 = str_replace("{id}", html_entity_decode($al['id']), $file);
$ss1 = str_replace("{name}", html_entity_decode($al['name']), $ss1);
$ss.=$ss1;
}
echo $ss;
но это тоже выводит каждую новость в отдельном шаблоне.
Причем тут шаблон?
Ну вот он
Код:
<p align="justify">
<strong><a href="zakoni_{id}.html">{name}</a></strong>
</p>
цитата
11/04/08 в 12:17
Corex
_s_[sov]:
C шаблоном теперь понятно, просто чтобы знать все известные/неизвестные уравнения.
Цитата:
но это тоже выводит каждую новость в отдельном шаблоне.
Т.е., ты хочешь чтобы было примерно так в результате, насколько я понял?
Код:
<p align="justify">
<strong><a href="zakoni_1.html">Name 1</a></strong>
<strong><a href="zakoni_2.html">Name 2</a></strong>
<strong><a href="zakoni_3.html">Name 3</a></strong>
</p>
А шаблон был в одном файле. Если так, то шаблон придётся изменить вот таким образом:
Код:
<strong><a href="zakoni_{id}.html">{name}</a></strong>
А в пыхе вот так:
Код:
$file = file_get_contents("./template_m/main.html");
$result = mysql_query("SELECT id,name FROM `content` WHERE type=1");
$ss = '<p align="justify">';
while($al = mysql_fetch_array($result))
{
$ss .= str_replace(array("{id}","{name}"), array(html_entity_decode($al['id']), html_entity_decode($al['name'])), $file);
}
$ss .= '</p>';
echo $ss;
цитата
11/04/08 в 12:27
_s_[sov]
Этот вариант выводит все в разных шаблонах. Я переделал, получилось вот что
Код:
$ss = ""; $textLnk = "";$textLnk2 = "";
$result = mysql_query("SELECT id,name FROM `content` WHERE type=1");
while($al = mysql_fetch_array($result)){
$textLnk.=html_entity_decode($al['id']);
$textLnk2.=html_entity_decode($al['name']);
$textLnk2.="<br>";
}
$ss = str_replace("{id}", $textLnk, $file);
$ss = str_replace("{name}", $textLnk2, $ss);
echo $ss;
эта беда выводит все в 1 шаблоне, но трабла, все новости под одной линкой и ссылка вида:
http://www.sat.com/zakoni_13.html
вместо
http://www.sat.com/zakoni_1.html
http://www.sat.com/zakoni_3.html
цитата
11/04/08 в 12:39
Corex
Цитата:
эта беда выводит все в 1 шаблоне, но трабла, все новости под одной линкой и ссылка вида
Ты в $textLnk забиваешь все айдиншники в цикле, в $textLnk2 все тайлы и потом делаешь 1 замену всего и получается что строка
Код:
<strong><a href="zakoni_{id}.html">{name}</a></strong>
превращается в:
Код:
<strong><a href="zakoni_123.html">Name1Name2Name3</a></strong>
Я выше вариант написал, чем он не подходит-то? Про результат я правильно понял, нужно чтобы было так?
Код:
<p align="justify">
<strong><a href="zakoni_1.html">Name 1</a></strong>
<strong><a href="zakoni_2.html">Name 2</a></strong>
<strong><a href="zakoni_3.html">Name 3</a></strong>
</p>
цитата
11/04/08 в 12:42
_s_[sov]
да, так. пойду пробовать твой вариант, а то я уже через регулярки стал ссылки делить
цитата
11/04/08 в 12:48
Corex
_s_[sov]:
Попробуй ещё шаблонизаторы, есть довольно лёгкие, простые и удобные, вроде Phemplate или Xtemplate, есть понавороченнее, например известный Smarty. Штука дико удобная и полезная - PHP код не смешивается с HTML, каждую часть можно править отдельно друг от друга, очень просто интегрируется (в твоём случае даже шаблон почти менять не придётся). И не будет возникать такой путаницы с кодом, логика будет простая и прочная!
цитата
11/04/08 в 12:55
_s_[sov]
я щас до того досижу что инсталирую смарти,
Corex
твой вариант выводит все в разных шаблонах.
цитата
11/04/08 в 13:03
Corex
Эт как в разных шаблонах, несколько <p>? У меня всё в одном выводит, точнее сказать результат такой, как я написал.
В шаблоне код тоже нужно же заменить, вынести параграф за шаблон.
Вот этот вариант (вместо шаблона сразу его содержимое, чтобы всё однозначно было) 100% работает как нужно:
Код:
$file = '<strong><a href="zakoni_{id}.html">{name}</a></strong>';
$result = mysql_query("SELECT id,name FROM `content` WHERE type=1");
$ss = '<p align="justify">';
while($al = mysql_fetch_array($result))
{
$ss .= str_replace(array("{id}","{name}"), array(html_entity_decode($al['id']), html_entity_decode($al['name'])), $file);
}
$ss .= '</p>';
echo $ss;
цитата
11/04/08 в 13:14
_s_[sov]
Код:
$ss= "";
$result = mysql_query("SELECT id,name FROM `content` WHERE type=1");
$ss = '<p align="justify">';
while($al = mysql_fetch_array($result)){
$ss .= str_replace(array("{id}","{name}"), array(html_entity_decode($al['id']), html_entity_decode($al['name'])), $file);
}
$ss .= '</p>';
echo $ss;
после "сборки" страницы параграфы вапще не выводятся и даже в коде нет
((
цитата
11/04/08 в 13:26
_s_[sov]
ладно, нефиг чудо изобретать, щас на смарти все по быру сделаю. Спасибо всем ответившим, плюсики паставил!
Новая тема
Ответить
Эта страница в полной версии