|
|
|
| Приветствую всех. Прошу помоч.
Задача: из бд нужно выводить изображения таким образом, чтобы они становились в строку по 3 штуки, а в последней строке становились симметрично. т.е. , к примеру дано 8 картинок, выводим первые три в первой строке, вторые три во второй строке, а оставшиеся две в третей строке, но симметрично центру. если 7 штук изначально, то последняя картинка - седьмая должна расположиться по центру. Привожу код:
Если нужны комментарии - сделаю.
Проблема этого кода в том, что если в базе id_p идут не по порядку, то он работает неправильно.
Т.е. если после 7 идёт 9, то ошибка. Помогите исправить этот код или подскажите где найти решение моей задачи.
<?
##
if (isset($_GET['id_p'])) {$id_p = $_GET['id_p'];}
if (isset($_GET['name_p'])) {$name_p = $_GET['name_p'];}
if (isset($_GET['img_index'])) {$img_index = $_GET['img_index'];}
$result = mysql_query("SELECT * FROM `poshiv`");
$num_rows = mysql_num_rows($result);
echo '<p valign = "top"><table width="500" border="1" align="center">';
echo "<tr>";
# мегацикл
#
while ($myrow = mysql_fetch_assoc($result))
{
$a = $myrow["id_p"]%3;
if ($myrow["id_p"] % 3 == 0)
{
if ($num_rows - $myrow["id_p"] == 0)
{
printf ("<td><p><img src='%s' width='120' height='78' alt='фото'>
<a href='edit_lesson.php?id_p=%s'>trt%s</a></p></td>",$myrow["img_index"],$myrow["id_p"],$myrow["name_p"]);
break;
}
printf ("<td width='166'><p><img src='%s' width='120' height='78' alt='фото'>
<a href='edit_lesson.php?id_p=%s'>df%s</a></p></td></tr><tr>",$myrow["img_index"],$myrow["id_p"],$myrow["name_p"]);
}
# float fmod ( float $x , float $y )
# Возвращает дробный остаток от деления десятичных дробей x и y ).
# Остаток (r) определяется так: x = i * y + r, где i - некоторое целое.
# r всегда имеет такоей же знак, как и x и модуль, меньший или равный модулю y .
elseif ($num_rows - $myrow["id_p"] == 0 && fmod($myrow["id_p"], 3) == 1)
{
#echo "<td colspan='3' align='center'>".$myrow['id_p']."</td>";
printf ("<td colspan='3' align='center'><p><img src='%s' width='120' height='78' alt='фото'><br>
<a href='edit_lesson.php?id_p=%s'>797%s</a></p></td></tr><tr>",$myrow["img_index"],$myrow["id_p"],$myrow["name_p"]);
}
elseif ($num_rows - $myrow["id_p"] == 1 && fmod($myrow["id_p"], 3) == 1)
{
/*echo "<td colspan='3'><table width='490' border='1'>
<tr>
<td>".$myrow['id_p']."</td>";*/
printf ("<td colspan='3'><table width='490' border='1'><tr><td><p><img src='%s' width='120' height='78' alt='фото'>
<a href='edit_lesson.php?id_p=%s'>787%s</a></p></td>",$myrow["img_index"],$myrow["id_p"],$myrow["name_p"]);
}
elseif ($num_rows - $myrow["id_p"] == 0 && fmod($myrow["id_p"], 3) == 2)
{
/*echo "<td>".$myrow['id_p']."</td>
</tr>
</table></td>";*/
printf ("<td><p><img src='%s' width='120' height='78' alt='фото'>
<a href='edit_lesson.php?id_p=%s'>77%s</a></p></td></tr></table></td>",$myrow["img_index"],$myrow["id_p"],$myrow["name_p"]);
}
else
{
printf ("<td width='166'><p><img src='%s' width='120' height='78' alt='фото'>
<a href='edit_lesson.php?id_p=%s'>7%s</a></p></td>",$myrow["img_index"],$myrow["id_p"],$myrow["name_p"]);
}
}
echo "</tr></table></p>";
echo "<br>Получено строк: $num_rows";
##
?>
|
| |
|
|
|
|
|
|
|
для: maccamset
(23.12.2009 в 22:39)
| | Что за ошибка? | |
|
|
|
|
|
|
|
для: Valick
(23.12.2009 в 23:45)
| | Спасибо, уже на другом форуме помогли. Ошибка в том что отображалось всё криво, т.е. на 8 место становилась картинка с id_p = 9. Появлялись проблемы с табцицей: незакрытые теги и т.д. решение такое: счётчик объявляем до цикла ($i=1)? инкремент вконце цикла ($i++), и использовать $i вместо $myrow["id_p"] там где я вычисляю место текущей картинки. всё просто оказалось, сам почти дошёл до этого :) | |
|
|
|