БД выглядит примерно следующим образом:
-------------------------------------------------------------
id | name | surname
-------------------------------------------------------------
1 | Вася | Пупкин
2 | Петя | Уткин
3 | Саша | Барашкин
-------------------------------------------------------------
Нужно вывести их в циклах, желательно в while ну или в любой другой компактный цикл (база данных очень большая, нужен минимум запросов в базу). Для каждого столбца нужен отдельный цикл. Если кто работал со Smarty - за готовый пример буду вечно благодарен. Времени в обрез, очень нужна помощь, хотя бы в простом PHP виде.
Вот так работают циклы в Smarty http://www.smarty.net/manual/en/language.f...ion.section.php [очень маленький пример]
Спустя 1 час, 12 минут, 25 секунд (22.08.2010 - 04:24) waldicom написал(а):
Вот коротенький пример (много вырезано).
Для чего "...Для каждого столбца нужен отдельный цикл..."?
{section name=i loop=$products_to_show}
<tr>
<th width="14" class="pr_l"><img src="img/line_01.png" width="14" height="27" border="0" alt="" class="" /></th>
<th width="108"><div>{$products_to_show[i].country}{$products_to_show[i].country_new}</div></th>
<th width="25%">Артикул:
{if $products_to_show[i].product_code}
{$products_to_show[i].product_code}
{/if}
</th>
<th>{$CD_styles[i].st}</th>
<th width="20%">{$smarty.const.STRING_DATE}: {$products_to_show[i].date}</th>
<th width="50" class="center">
............
{/section}
Для чего "...Для каждого столбца нужен отдельный цикл..."?
Спустя 11 минут, 15 секунд (22.08.2010 - 04:35) xxxLOGIATxxx написал(а):
Цитата (waldicom @ 22.08.2010 - 01:24) |
Вот коротенький пример (много вырезано).{section name=i loop=$products_to_show} Для чего "...Для каждого столбца нужен отдельный цикл..."? |
Благодарю, сейчас начну тестить.
Нужно отдельно вывести переменные, одна отвечает за id аватары, вторая адрес, третья имя и тд., я сейчас в документации выкопал пару сведений по тому что хватит и одной, но как "плохознающий" PHP мне тяжело с этим, пока на стадии обучения, буду рад если покажете свой вариант вывода
Спустя 1 день, 12 минут, 28 секунд (23.08.2010 - 04:48) xxxLOGIATxxx написал(а):
Вот пример PHP и кода из TPL
Ничего не отображается, а если и отображается, так по одной букве на каждую строку. В чём моя ошибка?
Как правильно вывести цикл?
$query = "SELECT * FROM se_profilecomments WHERE profilecomment_user_id='2' ORDER BY profilecomment_id";
$result = mysql_query($query);
$all_comments = mysql_fetch_array($result);
$total_comments = $all_comments['profilecomment_body'];
$smarty->assign('custid',$total_comments);
{section name=customer loop=$custid}
Link {$custid[customer]} <br />
{/section}
Ничего не отображается, а если и отображается, так по одной букве на каждую строку. В чём моя ошибка?
Как правильно вывести цикл?
Спустя 3 часа, 12 минут, 38 секунд (23.08.2010 - 08:00) Семён написал(а):
А у тебя собственно массив хоть есть?
Выведи его:
И я обычно с массивами работаю в Smarty примерно так:
Выведи его:
echo "<pre>";
print_r($total_comments);
echo "</pre>";
И я обычно с массивами работаю в Smarty примерно так:
{foreach key=key item=n from=$categories_data}
<div class="ct-block">
<img src="{$n.ct_image_icon}" style="float:left;">
<div><a href="/shop/catalog/{$n.id}/1/{$n.ct_name}.html">{$n.ct_name}</a></div>
<div><small>описание</small></div>
</div>
{/foreach}
Спустя 43 минуты, 31 секунда (23.08.2010 - 08:44) xxxLOGIATxxx написал(а):
echo "<pre>";
print_r($total_comments);
echo "</pre>";
Вот что вывел:
Array
(
[0] => 61
[profilecomment_id] => 61
[1] => 1
[profilecomment_user_id] => 1
[2] => 1
[profilecomment_authoruser_id] => 1
[3] => 1282352746
[profilecomment_date] => 1282352746
[4] => Write Something...
[profilecomment_body] => Write Something...
)
А так:
while($row=mysql_fetch_array($result))
{
$total_comments = $row['profilecomment_body'];
echo $total_comments;
}
Выводит всё как надо...
Не пойму в чём проблема...
Спустя 9 минут, 15 секунд (23.08.2010 - 08:53) Семён написал(а):
Для начала подготовьте корректный массив прежде чем его выводить.
Спустя 4 минуты, 4 секунды (23.08.2010 - 08:57) xxxLOGIATxxx написал(а):
Можешь сделать семпл? Книг до фига, не могу найти ничего толкового по массивам, всё познаётся на практике =)
Спустя 42 минуты, 38 секунд (23.08.2010 - 09:40) Семён написал(а):
$result = mysql_query("SELECT * FROM mp_users");
while($row = mysql_fetch_assoc($result)) {
$array[] = $row;
}
$smarty->assign("myarray",$array);
Debug:
echo "<pre>";
print_r($array);
echo "</pre>";
Array
(
[0] => Array
(
[id] => 1
[user_name] => Semen
[user_password] => abc
)
[1] => Array
(
[id] => 2
[user_name] => Vasya
[user_password] => abcd
)
[2] => Array
(
[id] => 3
[user_name] => Petr
[user_password] => abcde
)
[3] => Array
(
[id] => 4
[user_name] => Filipp
[user_password] => mypass
)
[4] => Array
(
[id] => 5
[user_name] => TEST
[user_password] => TEST
)
)
Smarty Template
{foreach key=key item=n from=$myarray}
{$n.user_name}
{/foreach}
Совет используй в связке DBSimple, тогда такие преобразования массивов будут исключены из кода.
Спустя 24 минуты, 28 секунд (23.08.2010 - 10:04) xxxLOGIATxxx написал(а):
Благодарю, буду тестить
Спустя 9 минут, 1 секунда (23.08.2010 - 10:13) xxxLOGIATxxx написал(а):
И снова пустота, хоть дебаг и отображает всё как надо, ничего не понимаю...
В любом случае благодарю за попытку, буду искать в чём причина
В любом случае благодарю за попытку, буду искать в чём причина
Спустя 55 минут, 16 секунд (23.08.2010 - 11:09) Семён написал(а):
На шаблоне своём попробуй
{$твоя_переменная|print_r}
{$твоя_переменная|print_r}
Спустя 43 минуты, 57 секунд (23.08.2010 - 11:53) xxxLOGIATxxx написал(а):
Вывел по две записи с каждого столба:
6161111112823527461282352746Write Something...awfWrite Something...awfArray
6161111112823527461282352746Write Something...awfWrite Something...awfArray
Спустя 1 минута, 59 секунд (23.08.2010 - 11:55) Семён написал(а):
Показывай как ты получил и отобразил на шаблоне.
Спустя 12 часов, 44 минуты, 35 секунд (24.08.2010 - 00:39) xxxLOGIATxxx написал(а):
PHP:
TPL (отображает по две записи):
TPL вариант с переменной $allcomments (отображает просто цифру 1)
$query = "SELECT * FROM se_profilecomments WHERE profilecomment_user_id='{$user->user_info['user_id']}' ORDER BY profilecomment_id";
$result = mysql_query($query);
$all_comments = mysql_fetch_array($result);
$smarty->assign('custid',$all_comments);
TPL (отображает по две записи):
{$custid|print_r}
TPL вариант с переменной $allcomments (отображает просто цифру 1)
{$all_comments|print_r}
Спустя 13 минут, 32 секунды (24.08.2010 - 00:53) xxxLOGIATxxx написал(а):
Вот пример запроса из другого файла:
Может запрос не так построил?
Документации к движку к сожалению нет, не пойму что и откуда
// LOOP OVER USER LEVELS
$levels = $database->database_query("SELECT level_id, level_name FROM se_levels ORDER BY level_name");
while($level_info = $database->database_fetch_assoc($levels)) {
$level_array[$level_info['level_id']] = array( 'level_id' => $level_info['level_id'],
'level_name' => $level_info['level_name']
);
}
return $level_array;
Может запрос не так построил?
Документации к движку к сожалению нет, не пойму что и откуда
Спустя 57 минут, 20 секунд (24.08.2010 - 01:50) xxxLOGIATxxx написал(а):
Копировал, переписал переменные:
Выводит выбранные данные (как и задумывал), а цикл не работает, хоть и присутствует while, выводит по одному результату...
// LOOP OVER USER LEVELS
$query = $database->database_query("SELECT * FROM se_profilecomments WHERE profilecomment_user_id='{$user->user_info['user_id']}' ORDER BY profilecomment_id");
while($comments = $database->database_fetch_assoc($query)) {
$comments_array[$comments['profilecomment_user_id']] = array( 'profilecomment_user_id' => $comments['profilecomment_user_id'],
'profilecomment_body' => $comments['profilecomment_body']
);
}
$smarty->assign('custid',$comments_array);
{section name=customer loop=20}
{$custid[customer].profilecomment_user_id} <br />
{$custid[customer].profilecomment_body} <br />
{/section}
Выводит выбранные данные (как и задумывал), а цикл не работает, хоть и присутствует while, выводит по одному результату...
Спустя 2 часа, 53 минуты, 31 секунда (24.08.2010 - 04:43) xxxLOGIATxxx написал(а):
Ну вот вроде почти правильный код, правда с вопросом.
А теперь, собсно, вопрос. Почему через echo всё выводится как подобает, а в Smarty выводит по одному символу из каждой строчки? Причём, выводится всего один раз...
Например, есть запись в $profilecomment_body : Напишите что-нибудь...
Выводит:
Н
а
п
и
ш
и
и тд.
В чём на этот раз я ошибся?
/// Запрос в базу
$query = $database->database_query("SELECT * FROM se_profilecomments WHERE profilecomment_user_id='{$user->user_info['user_id']}' ORDER BY profilecomment_id");
///Цикл + присвоение каждому типу записи отдельной переменной
while($row = $database->database_fetch_assoc($query))
{
$profilecomment_id = $row['profilecomment_id'];
$profilecomment_user_id = $row['profilecomment_user_id'];
$profilecomment_authoruser_id = $row['profilecomment_authoruser_id'];
$profilecomment_date = $row['profilecomment_date'];
$profilecomment_body = $row['profilecomment_body'];
}
/// Вывод в формат Smarty
$smarty->assign('custid',$result);
$smarty->assign('profilecomment_id',$profilecomment_id);
$smarty->assign('profilecomment_user_id',$profilecomment_user_id);
$smarty->assign('profilecomment_authoruser_id',$profilecomment_authoruser_id);
$smarty->assign('profilecomment_date',$profilecomment_date);
$smarty->assign('profilecomment_body',$profilecomment_body);
/// Запись в TPL файле
{section name=customer loop=30}
1 {$profilecomment_id[customer]} <br />
2 {$profilecomment_user_id[customer] } <br />
3 {$profilecomment_authoruser_id[customer]} <br />
4 {$profilecomment_date[customer]} <br />
5 {$profilecomment_body[customer]} <br />
{/section}
А теперь, собсно, вопрос. Почему через echo всё выводится как подобает, а в Smarty выводит по одному символу из каждой строчки? Причём, выводится всего один раз...
Например, есть запись в $profilecomment_body : Напишите что-нибудь...
Выводит:
Н
а
п
и
ш
и
и тд.
В чём на этот раз я ошибся?
Спустя 5 часов, 36 минут, 33 секунды (24.08.2010 - 10:20) xxxLOGIATxxx написал(а):
Товарищи, пять суток парюсь уже, помогите пожалуйста кто-нибудь...
Спустя 2 часа, 23 минуты, 46 секунд (24.08.2010 - 12:44) xxxLOGIATxxx написал(а):
Сам справился, вот новичкам, как пособие:
$query = $database->database_query("SELECT * FROM se_profilecomments WHERE profilecomment_user_id='{$user->user_info['user_id']}' ORDER BY profilecomment_id");
$result=array();
while($row = $database->database_fetch_assoc($query))
{
$result[]=$row;
}
$smarty->assign('custid',$result);
{section name=test loop=$custid}
{$custid[test].profilecomment_id} <br />
{$custid[test].profilecomment_body} <br />
{/section}