в общем в БД имеются записи (например их 6)
хочу вывести их циклом в таблицу по 2 колонки
типа такого
<table>
<tr>
<td>Запись 1 с бд</td>
<td>Запись 2 с бд</td>
</tr>
<tr>
<td>Запись 3 с бд</td>
<td>Запись 4 с бд</td>
</tr>
<tr>
<td>Запись 5 с бд</td>
<td>Запись 6 с бд</td>
</tr>
</table>
при этом чтоб не на страницу выводилось только 6 таких колонок а остальные уже на 2 странице.
кто нить объяснит как это осуществить или "ТКНЕТ(лицом в готовое решение)" ?
Спустя 3 минуты (10.07.2010 - 21:32) qpayct написал(а):
ну вопервых вывод в 2 столбца явно надо циклом делать. ключевое условие
if($a%2==0)(как раз обсуждалось в другой теме), а в остальном тебе надо почитать про "постраничный вывод" (поиск надеюсь сам найдёшь....)
Спустя 13 часов, 5 минут, 12 секунд (11.07.2010 - 10:37) blade написал(а):
нашёл решение как вывести в две таблицы(целую ночь гуглил)
а как этот код переделать чтобы можно было выводить и в большее количество столбцов ?
<?php
$result = mysql_query("запрос");
if($result && mysql_num_rows($result) > 0)
{
echo"<table align='center' width='90%' border='0'>";
$i=false;
while($res = mysql_fetch_assoc($result))
{
if(!$i) echo'<tr>';
echo "<td align='center' width='50%'>".$res['id']."</td>";
if($i)echo'</tr>';
$i=!$i;
}
echo'</table>';
}
}
?>
а как этот код переделать чтобы можно было выводить и в большее количество столбцов ?
Спустя 16 минут, 26 секунд (11.07.2010 - 10:54) inpost написал(а):
$num = x; // тут устанавливаешь число столбцов
$i = $num;
if ($i == $num) {echo "<tr><td>"; $i--;}
elseif ($i>1) {echo "<td>"; $i--;}
elseif ($i == 1) {echo "<td></tr>; $i=$num;}
Это если именно твой код рассматривать.
Спустя 17 минут, 32 секунды (11.07.2010 - 11:11) blade написал(а):
Цитата (inpost @ 11.07.2010 - 07:54) |
Это если именно твой код рассматривать. |
А как это все прикрутить к моему коду ? а то вставляю в цикл но ничего не выводит
Вот к этому коду
<?php
$result = mysql_query("запрос");
if($result && mysql_num_rows($result) > 0)
{
echo"<table align='center' width='90%' border='0'>";
$i=false;
while($res = mysql_fetch_assoc($result))
{
if(!$i) echo'<tr>';
echo "<td align='center' width='50%'>".$res['id']."</td>";
if($i)echo'</tr>';
$i=!$i;
}
echo'</table>';
}
}
?>
Спустя 11 минут, 49 секунд (11.07.2010 - 11:23) inpost написал(а):
Покажи, как ты вставляешь! Подумай, зачем каждый раз в самом цикле назначать количество? Тебе надо до цикла назначать, а проверку уже в самом цикле делать
Спустя 4 минуты, 5 секунд (11.07.2010 - 11:27) blade написал(а):
<?php
$result = mysql_query("SELECT * FROM img WHERE status='1'");
if($result && mysql_num_rows($result) > 0)
{
echo"<table align='center' width='90%' border='0'>";
$i=false;
while($res = mysql_fetch_assoc($result))
{
$num = 4; // тут устанавливаешь число столбцов
$i = $num;
if ($i == $num) {echo "<tr><td>"; $i--;}
elseif ($i>1) {echo "<td>".$res['secondhalf'].""; $i--;}
elseif ($i == 1) {echo "<td></tr>"; $i=$num;}
}
echo'</table>';
}
}
?>
так ?
Спустя 14 минут, 29 секунд (11.07.2010 - 11:41) inpost написал(а):
Зачем в цикле каждый раз писать, что $num = 4 ?
Вот структура цикла:
$num = 4, $i = 4, 4 - 1 = 3 (Новое значение $i =3), и снова цикл повторяется... $i = 4!!! Эти 2 значения надо выносить за цикл.
В твоем коде где закрывающиеся </td> ??? Ты условие внимательнее просмотри, там, где написано <td>, надо вставлять полностью код твоей ячейки, от начала до конца!
П.С. немножко понянчусь с тобой... сделай этот код как я сказал, если не получается, показывай код снова
Вот структура цикла:
$num = 4, $i = 4, 4 - 1 = 3 (Новое значение $i =3), и снова цикл повторяется... $i = 4!!! Эти 2 значения надо выносить за цикл.
В твоем коде где закрывающиеся </td> ??? Ты условие внимательнее просмотри, там, где написано <td>, надо вставлять полностью код твоей ячейки, от начала до конца!
П.С. немножко понянчусь с тобой... сделай этот код как я сказал, если не получается, показывай код снова
Спустя 5 минут, 37 секунд (11.07.2010 - 11:47) blade написал(а):
вот как сделал выводит все в 1 колонку
использую же твой код и выводит все в строку . у тебя в коде нет же закрывающегося </td>
<?php
$result = mysql_query("SELECT * FROM img WHERE status='1'");
if($result && mysql_num_rows($result ) > 0)
{
echo "<table align='center' width='90%' border='1'>";
$num = 4; // тут устанавливаешь число столбцов
$i = $num;
while($res = mysql_fetch_assoc($result ))
{
if ($i == $num) {echo "<tr><td>"; $i--;}
elseif ($i>1) {echo "".$res['id'].""; $i--;}
elseif ($i == 1) {echo "</td></tr>"; $i=$num;}
}
echo "</table>";
}
?>
использую же твой код и выводит все в строку . у тебя в коде нет же закрывающегося </td>
Спустя 4 минуты, 37 секунд (11.07.2010 - 11:52) blade написал(а):
может все таки лучше объяснить что и куда чтоб не мучатся вдалбливая мне что и почему ?
)

Спустя 4 минуты, 28 секунд (11.07.2010 - 11:56) inpost написал(а):
У цикле есть 3 проверки.
1) Проверяется, является ли это первой ячейкой! Если да, то открывается <tr> После вставляется <td> со всем её содержащим!
2) Проверяется, является ли данная центральной, если да - то выводится содержащее внутри, вставляется лишь ячейка <td>
3) Проверяется, является ли последней, если да - то выводится содержание (td) с закрывающимся </tr>
Ещё раз читай внимательнее, за тебя делать не буду, везде где открываешь, надо закрывать тег <td>, + "где написано <td> (в моем коде), надо вставлять полностью код твоей ячейки, от начала до конца! ВМЕСТО МОЕГО <td>".
Каждый раз в цикле проходит лишь одна из трёх операций (лишь одна), а значит в ней должен быть полностью код ячейки!!!
1) Проверяется, является ли это первой ячейкой! Если да, то открывается <tr> После вставляется <td> со всем её содержащим!
2) Проверяется, является ли данная центральной, если да - то выводится содержащее внутри, вставляется лишь ячейка <td>
3) Проверяется, является ли последней, если да - то выводится содержание (td) с закрывающимся </tr>
Ещё раз читай внимательнее, за тебя делать не буду, везде где открываешь, надо закрывать тег <td>, + "где написано <td> (в моем коде), надо вставлять полностью код твоей ячейки, от начала до конца! ВМЕСТО МОЕГО <td>".
Каждый раз в цикле проходит лишь одна из трёх операций (лишь одна), а значит в ней должен быть полностью код ячейки!!!
Спустя 5 минут, 3 секунды (11.07.2010 - 12:01) blade написал(а):
вывожу так (вроде начало работать)
так работает только вот одна загвоздка чтоб вывело 4 столбца нужно поставить не $num = 4; а $num = 6;
<?php
$result = mysql_query("SELECT * FROM img WHERE status='1'");
if($result && mysql_num_rows($result ) > 0)
{
echo "<table align='center' width='90%' border='1'>";
$num = 6; // тут устанавливаешь число столбцов
$i = $num;
while($res = mysql_fetch_assoc($result ))
{
if ($i == $num) {echo "<tr><td>"; $i--;}
if ($i>1) {echo "".$res['id'].""; $i--;}
if ($i == 1) {echo "</td></tr>"; $i=$num;}
}
echo "</table>";
}
?>
так работает только вот одна загвоздка чтоб вывело 4 столбца нужно поставить не $num = 4; а $num = 6;
Спустя 3 минуты, 55 секунд (11.07.2010 - 12:05) inpost написал(а):
$num = 4; // тут устанавливаешь число столбцов
$i = $num;
while($res = mysql_fetch_assoc($result ))
{
if ($i == $num) {echo "<tr>";}
echo "<td>".$res['secondhalf']."</td>";
if ($i == 1) {echo "</tr>"; $i=$num;} else {$i--;}
}
Держи, лишнее я убрал, этого ты должен был добиться сам, жаль, времени мало у меня, чтоб тебя ещё помучать
Спустя 2 минуты, 13 секунд (11.07.2010 - 12:07) inpost написал(а):
Цитата (blade @ 11.07.2010 - 11:01) |
вывожу так (вроде начало работать)<?php так работает только вот одна загвоздка чтоб вывело 4 столбца нужно поставить не $num = 4; а $num = 6; |
if ($i == $num) {echo "<tr><td>".$res['id']."</td>"; $i--;}
if ($i>1) {echo "<td>".$res['id']."</td>"; $i--;}
if ($i == 1) {echo "<td>".$res['id']."</td></tr>"; $i=$num;}
Сообственно этого я от тебя ждал! Ладно, предыдущий комент мой читай, там я оптимизировал код, лишнее убрал.
Спустя 16 минут, 52 секунды (11.07.2010 - 12:24) Wird_34 написал(а):
Я тут немного по-своему написал, с постраничным выводом, страница задается через переменную page.
<?php
define( "ROWS_ON_PAGE", 6 ); // количество строк в таблице на страницу
define( "NUM_COLS", 2 ); // количество столбцов
$result = mysql_query( "SELECT * FROM img WHERE status='1' LIMIT " . $_GET['page'] * ROWS_ON_PAGE . ", " . ROWS_ON_PAGE );
$num_rows = mysql_num_rows( $result );
if ( $result && $rows ) {
echo "<table align='center' width='90%' border='1'>";
for ( $row_no = 1; $row_no <= ROWS_ON_PAGE; $row_no++ ) {
echo '<tr>';
for ( $col_no = 1; $col_no <= NUM_COLS; $col_no++ ) {
$res = mysql_fetch_assoc( $result );
echo '<td>' . $res['id'] . '</td>';
}
echo '</tr>';
}
echo "</table>";
}
?>
Спустя 3 минуты, 16 секунд (11.07.2010 - 12:27) inpost написал(а):
Wird_34 Для новичка это предельно сложно, врядли он запомнит и поймет сразу твой код, лучше уж как я написал, все предельно ясно и коротко! Обрати внимание на то, что у него даже с обычными if проблемы