|
|
|
| Кто подскажет как практически это реализовать...В 1 колонку вывести не проблема, т.к. стоит раз в цикле таблицу прогнать..а как вывести в 2 колонки..чтобы было примерно так:
Барсетки, портфели Блокноты, визитницы
Брелки Бутылки
Ключницы, сигаретницы
|
и тд...
и еще чтобы соблюдало алфавитный порядок с лева направо... | |
|
|
|
|
|
|
|
для: TetRiska
(01.08.2009 в 16:35)
| |
for($i=0;$i<20;$i++){
echo ($i&1)? 'right':'left';
}
|
| |
|
|
|
|
|
|
|
для: EXP
(01.08.2009 в 16:39)
| | а можно по подробней насчет - 'right':'left' . не совсем понятен ход | |
|
|
|
|
|
|
|
для: TetRiska
(01.08.2009 в 17:07)
| |
<?php
header('Content-type:text/plain');
$a = array(1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7);
for($i=0;$i<count($a);$i++)
echo ($i&1)? "\t". $a[$i] ."\n": $a[$i] ."\t";
?>
| например | |
|
|
|
|
|
|
|
для: EXP
(01.08.2009 в 17:21)
| | выведет же все в строку, а надо 2 колонки | |
|
|
|
|
|
|
|
для: TetRiska
(01.08.2009 в 17:53)
| | В дримвивере тестите ?)
вставьте вместо header(......) просто echo '<pre>'; | |
|
|
|
|
|
|
|
для: TetRiska
(01.08.2009 в 16:35)
| | >т.к. стоит раз в цикле таблицу прогнать
если я правильно понял про таблицу, то можно и так:
<?php
echo "<table width=\"96%\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\" bgcolor=\"#F3F3F3\">";
echo "<tr>";
for($i=0;$i<count($a);$i++)
{
// выводите ячейку
echo "<td>$a[$i]</td>";
// указываете сколько ячеек будет в одном ряду, к примеру 3
// если ряд заполнен, закрываете его, открываете новый
if($i%3==0){echo "</tr><tr>";}
}
echo "</tr></table>";
|
| |
|
|
|
|
|
|
|
для: Рома
(01.08.2009 в 17:59)
| | В первом варианте могут быть проблемы с выводом первого ряда. В этом случае можно сделать вот так:
<?php
echo "<table width=\"96%\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\" bgcolor=\"#F3F3F3\">";
echo "<tr>";
$temp=0; // объявляете новую переменную
for($i=0;$i<=count($a);$i++)
{
$temp++; // теперь она уже равна 1
// выводите ячейку
echo "<td>$a[$i]</td>";
// указываете сколько ячеек будет в одном ряду, к примеру 3
// если ряд заполнен, закрываете его, открываете новый
if($temp%3==0){echo "</tr><tr>";}
}
echo "</tr></table>";
|
| |
|
|
|
|
|
|
|
для: Рома
(01.08.2009 в 17:59)
| | if($i%2/=0){echo "</tr><tr>";}
сделает так что последний элемент tr останется пустым
(не видел добавленного)
и + откутствие в нижнем ряду недостающих элементов td в случае нечётного размера массива | |
|
|
|
|
 15 Кб |
|
|
для: EXP
(01.08.2009 в 18:16)
| | >+ откутствие в нижнем ряду недостающих элементов td в случае нечётного размера массива
Разметку это не потянет. Каждая ячейка будет находиться на своем месте, ведь про rowspan нигде же не упомянается.
Или про colspan, все время путаю. | |
|
|
|
|
|
|
|
для: Рома
(01.08.2009 в 18:31)
| | именно как на рисунке нужен вывод.... только чтобы надпись была снизу...когда я делаю выборку то в массив попадают 2 значения..картинка и надпись..
$res = mysql_query("SELECT * FROM `".PREFIX."catalog`
GROUP BY description ASC") or die ("Ошибка запроса №1 : catalog/index.php" . mysql_error());
while($catrow = mysql_fetch_assoc($res))
{
$catalog .= "<tr>";
$catalog .= "<td width='5%'><div style='margin-top:10px'><a href='".DOMEN."/catalog/id".$catrow['id']."'><img border='0' src='".DOMEN."".$catrow['photo']."'
title='".$catrow['description']."' />
</a></div></td>";
$catalog .= "<td width='95%'><div style='margin-left:10px'>
<a href='".DOMEN."/catalog/id".$catrow['id']."'>".$catrow['description']."</a></div></td>";
$catalog .= "</tr>";
}
|
Вот делал в 1 столбик...сейчас попробую переделать
с цифрами получилось в 3 столбика...в дизайн нормально встало)) теперь как бы вывести картинки и под ними надписи | |
|
|
|
|
|
|
|
для: TetRiska
(01.08.2009 в 18:40)
| |
<?php
/* */
$catalog .= "<tr>"; // не должно быть в цикле
$temp=0;
while($catrow = mysql_fetch_assoc($res))
{
$temp++;
$catalog .= "<td>"; // открываете ячейку один раз за цикл обязательно!
// хотя нет, не обязательно. Попробуйте
$catalog .= "содержимое вашей ячейки, какое хотите";
$catalog .= "можете сделать div`ами,";
$catalog .= "можете написать новую таблицу, если содер-";
$catalog .= "жимое ячейки требует сложной разметки, но ";
$catalog .= "тогда это чревато огромным исходным кодом";
$catalog .= "</td>"; // закрываете ячейку
if($temp%3==0) $catalog .= "</tr><tr>";
}
$catalog .= "</tr>"; // не должно быть в цикле
?>
|
| |
|
|
|
|
|
|
|
для: Рома
(01.08.2009 в 18:56)
| | благодарю за отличную помощь! остается с разметкой побороться :) | |
|
|
|
|
|
|
|
для: Рома
(01.08.2009 в 18:56)
| | >"тогда это чревато огромным исходным кодом"
Как то мы ту развели демагогию по поводоу пользы от шаблонизаторов. Самым сложным моментом в том подходе, за который я ратовал (а именно против таковых), и которым пользуется топикастер, были именно циклы. Что бы не было огромного исходного кода, можно использовать конструкцию include(); Примерно так:
<?php
/* */
$catalog .= "<tr>"; // не должно быть в цикле
$temp=0;
while($catrow = mysql_fetch_assoc($res))
{
$temp++;
include('tpl/row.html');
if($temp%3==0) $catalog .= "</tr><tr>";
}
$catalog .= "</tr>"; // не должно быть в цикле
|
и вынести верстку в шаблон. Но при больших циклах это не очень удачное решение, так как довольно затратно и непроизводительно подключать файлы в цикле.
Вот такой компромисс имеет место(несколько упрощенно):
<?
function get_tpl($tpl,$type = 'html')
{
if(file_exists('./tpl/'. $tpl .'.'. $type))
return file_get_contents('./tpl/'. $tpl .'.'. $type);
}
function parse_tpl($cont,$data)
{
foreach($data as $key => $value)
$$key = $value;
preg_match_all("#<\?php(.*?)\?>#uis",$cont,$code);
$count = count($code[0]);
if($count)
for($i = 0; $i < $count; ++$i)
{
ob_start();
eval($code[1][$i]);
$echo = ob_get_contents();
ob_end_clean();
$cont = str_replace($code[0][$i], $echo, $cont);
}
return $cont;
}
|
Что то похожее на шаблонизатор, но позволяющее использовать в шаблонах обычный php синтаксис.
Вышеупомянутый пример будет выглядеть так:
<?php
/* */
$tpl = get_tpl('row');
$temp=0;
while($row = mysql_fetch_assoc($res))
{
$temp++;
$catalog .= parse_tpl($tpl,$row);
if($temp%3==0) $catalog .= "</tr><tr>";
}
include('show.html')
?>
|
Соответственно вывод переменных в шаблонах примерно так:
row.html
<td>
<?php echo $text; ?>
</td>
|
show.html
<table cellspacing="0" cellpadding="0" border="0">
<tr>
<?php echo $catalog; ?>
</tr>
</table>
|
Два момента.
1. Переменные на выводе должны называться так же, как поля в таблице.
2. Обязательна точка с запятой в этой конструкции <?php echo $catalog; ?>
А дальше можно особо не беспокоится и писать в html файлах даже функции php, коли будет в том нужда.
Скриптик очень скорострельный, так как считывает файл всего единожды. | |
|
|
|