Нужно сделать таблицу циклом. Помогите пожалуйста.

12
seosniks
На сайте с 13.08.2007
Offline
389
926

Добрый вечер.

Есть такая проблемма

В цикле выводятся картинки

$Q1 = mysql_query("SELECT * FROM lot    ORDER BY id desc  LIMIT $start,$per_page");

} if(mysql_num_rows($Q1) >0) {
while($r = mysql_fetch_array($Q1)) {
$f_mg= $r['lot_img'];

echo '<table>';
for($i=1;$i<=1;$i++){
echo'<tr id="'.$i.'">';
for($j=1;$j<=1;$j++){
echo"<td id=".$j."><img src='".$img."' alt='".$title_n."' align=\"left\" width='140' height='173'></td>";
}
echo'</tr>';
echo '</table>';

Но картинки выводяться в столб.

там где выделено красным цифра 1

так вот если изменить ее на 2 и 2

я получу по 2 одинаковые картинки

а мне надо чтоб было так

бука к это картинка из цикла

к1 к2 к3

к4 к5 к6

к7 к8 к9

и так далее.

Подскажите пожалуйста как это сделать

ewg777
На сайте с 04.06.2007
Offline
225
#1

$Q1 = mysql_query("SELECT * FROM lotORDER BY id descLIMIT $start,$per_page");


if(mysql_num_rows($Q1) >0) {
while($r = mysql_fetch_array($Q1)) {
$title_n[] = $r['lot_title'];
$cpu[] = $r['cpu'];
$f_mg= (!epmty($r['lot_img'])) ? $r['lot_img'] : "no.gif";
}
}

$i = 0;
$echo = "<table>";
$counter = count($title_n) - 1;

foreach($title_n as $key=>$value){
if($i=="0") {
$echo .= "<tr>";
}elseif($i=="4"){
$echo .= "<tr>";
$i = 0;
}else{
$i++;
}

$full_news .= бла-бла-бла. Например: $cpu[$key] или $value; // тут понятно

if($i=="4") {
$echo .= "</tr>";
}elseif($counter==$key) {
$echo .= "</tr>";
}else {
$i++;
}
}
$echo .= "</table>";
xpert13
На сайте с 15.09.2008
Offline
127
#2

Я бы сделал одним циклом, только когда $i кратно 3, то ставил <tr></tr> (новый рядок)

seosniks
На сайте с 13.08.2007
Offline
389
#3
xpert13:
Я бы сделал одним циклом, только когда $i кратно 3, то ставил <tr></tr> (новый рядок)

Вот я так и хочу но что то не выходит.

ewg777 отписал Вам в лс

M
На сайте с 23.01.2009
Offline
12
#4


$r = 0;
echo '<table border = "1">';
while( $r < count( $r_img ) )
{
//
// здесь оптимизируй
//
$m = ( count( $r_img ) - $r < 3 ) ? count( $r_img ) - $r : 3;

echo '<tr>';
for( $c = 0; $c < $m ; $c++ )
echo '<td>' . $r_img[ $r + $c ] . '</td>';
echo '</tr>';
$r += 3;
}
echo '</table>';

Должно помочь

написание скриптов... icq 377816882
Алексей Барыкин
На сайте с 04.02.2008
Offline
272
#5

А если картинкам сказать что они float:left? :)

И не надо будет табличек...

echo "<img src='".$img."' alt='".$title_n."' align='left' width='140' height='173' style='float:left'>";
Linkpusher
На сайте с 28.12.2007
Offline
176
#6

[cоlor="Red"]1[/colоr]

вот этот момент пофиксите реальной записью...

а вот это


echo '<table>';
for($i=1;$i<=1;$i++){
echo'<tr id="'.$i.'">';
for($j=1;$j<=1;$j++){
echo"<td id=".$j."><img src='".$img."' alt='".$title_n."' align=\"left\" width='140' height='173'></td>";
}
echo'</tr>';
echo '</table>';

меняем на:


<?
$inline = 3; // пикс в строке, можно унести в общую кучу переменных
?>

<table>
<tr>
<?
for($i=1;$i<=1;$i++) // да-да, тут тот самый глюк вылез. тут (1) переменная с количеством картинок всего, короче
{
if ($counter >= $inline)
{
echo '</tr><tr>';
$counter = 0;
}
?>
<td id="<?=$j?>"> <!-- кстати, id может быть 1, более - юзайте class. работает, но не валидно-->
<img src="<?=$img?>" alt="<?=$title_n?>" align="left" width="140" height="173">
</td>
<?
++$counter;
}

for ($compensator = ($inline - $counter); $compensator > 0; --$compensator)
{
echo '<td>&nbsp;</td>';
}
?>
</tr>
</table>

и css само просится :)

Точу ножи. Буквально. Есть отзывы. Заказать заточку в МСК и Подольске можно через Телеграмм.
M
На сайте с 23.01.2009
Offline
12
#7

Немного доработал :)


$Q1 = mysql_query( "SELECT * FROM lot ORDER BY id desc LIMIT $start, $per_page" );
if( mysql_num_rows( $Q1 ) > 0 )
{
for ( $r_img = array(); $row = mysql_fetch_assoc( $Q1 ); $r_img[] = $row );
$r = 0;
$count = count( $r_img );
echo '<table border = "1">';
while( $r < $count )
{
$m = ( $count - $r < 3 ) ? $count - $r : 3;
echo '<tr>';
for( $c = 0; $c < $m ; $c++ )
echo '<td>' . $r_img[ $r + $c ]['_название_поле_'] . '</td>';
echo '</tr>';
$r += 3;
}
echo '</table>';
}
seosniks
На сайте с 13.08.2007
Offline
389
#8
Алексей Барыкин:
А если картинкам сказать что они float:left? :)
И не надо будет табличек...

echo "<img src='".$img."' alt='".$title_n."' align='left' width='140' height='173' style='float:left'>";

Алексей. У меня на странице нужно вывести 3 ряда фоток

по горизонту

и не ограничено в низ

Вся проблемма в том что

я вывожу в буфер

уже сформированый контент тоесть все фотки.

А шаблон

имеет код

<table width="100%" border="1" cellspacing="1" cellpadding="3">

<tr>
{ здесь должны быть картинки с уже сформированой таблицей </tr>
<tr>
<td class='theme-index-text'></td>
</tr>
<tr>
<td class="title-line-morelink" align="right"> </td>
</tr>
</table>

Или же надо сделать как то дополнить перед выводом в буфер

код

Просто раньше расчет был только на вставку новостей в <td> </td> И нормально все выводил.

Щас попробую подправить шаблон

чтоб вдавал готовый код картинок в тегах < table></table>

кажись понял как вставить другие значения. Ураааа.

Алексей Барыкин
На сайте с 04.02.2008
Offline
272
#9

Т.е. вывод в таблицу - самоцель?

Тогда дополнять буфер картинок пустышками до кратного 3-м числа и формировать табличку порциями (1 строка = 3 картинки)

Проблема в алгоритме или в php навыках?

seosniks
На сайте с 13.08.2007
Offline
389
#10
modobaks:
Немного доработал :)

$Q1 = mysql_query( "SELECT * FROM lot ORDER BY id desc LIMIT $start, $per_page" );
if( mysql_num_rows( $Q1 ) > 0 )
{
for ( $r_img = array(); $row = mysql_fetch_assoc( $Q1 ); $r_img[] = $row );
$r = 0;
$count = count( $r_img );
echo '<table border = "1">';
while( $r < $count )
{
$m = ( $count - $r < 3 ) ? $count - $r : 3;
echo '<tr>';
for( $c = 0; $c < $m ; $c++ )
echo '<td>' . $r_img[ $r + $c ]['_название_поле_'] . '</td>';
echo '</tr>';
$r += 3;
}
echo '</table>';
}

modobaks

Ваш вариант заработал так как мне надо. Осталось только мелкие штрихи 🍻

убрал echo '<table>';

echo '</table>';

и все стало как надо

Спасибо всем откликнувшимся Вы все мне очень помогли. :2cents::2cents::2cents::2cents::2cents::2cents:

Ато я уж думал капец

seosniks добавил 22.05.2009 в 21:26

Алексей Барыкин:
Т.е. вывод в таблицу - самоцель?
Тогда дополнять буфер картинок пустышками до кратного 3-м числа и формировать табличку порциями (1 строка = 3 картинки)

Проблема в алгоритме или в php навыках?

В навыках скорее всего.

Хотя и занимаюсь PHP но таблицы html не учил

Теперь вопрос такой как из массива получить другие значения

$row['lot_title']; к примеру ?

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий