[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывод результатов запроса
mishko_o
Здравствуйте. Я пока начинаю писать на php и у меня возник вопрос, возможно глупый и позорный, но все таки. Есть база данных интернет магазина, в которой есть таблица товар. Периодически туда вносятся какие-то данные - название, описание, артикул, фото и т.д. На странице каталога мне необходимо правильно вывести эти данные. Запрос написан, все выводится, но мне нужно чтобы фотографии товара выводились по 4 штуки в ряду. То есть если всего в базе 14 товаров, должно быть 4 ряда, в последнем - 2 позиции. Что-то вроде таблицы, чтобы фото первого товара располагалось строго над фото 5-ого. Задача простая, но я никак не могу придумать ее решение..

Буду рад Вашим ответам, заранее спасибо.



Спустя 13 минут, 51 секунда (7.07.2010 - 12:50) waldicom написал(а):
В цикле проерять результат (counter % 4), и при необходимости выводить дополнительные </tr><tr>
Counter - это просто переменная, которая счиате количество итераций.

Спустя 1 час, 50 минут, 54 секунды (7.07.2010 - 14:41) mishko_o написал(а):
Вот код после запроса:
while($cat_content=mysql_fetch_array($rez))
{
echo "
<a href='showwear.php?id=
$cat_content[id_wear]' class='theme_link'><img src='$cat_content[image_small]'></a>
"
;
}


Не могли бы вы подсказать, куда именно вставлять counter? И как должен выглядеть код в итоге?

Спустя 43 минуты, 1 секунда (7.07.2010 - 15:24) Slays написал(а):
не лучший вариант на скорую руку, не проверял


$td = 0; // задаем переменную

echo "<table width='95%' border=0>";

$sql = "SELECT ..."; // вывод из базы
$result = mysql_query($sql) or die("ошибка");

while($par = mysql_fetch_assoc($result)){

/*если $td=0, значит это начала новой строк, открываем <tr> */
if ($td == 0)
echo "<tr>";


echo "<td><a href='showwear.php?id=".$cat_content[id_wear]."' class='theme_link'><img src='".$cat_content[image_small]."'></a></td>";

$td++; // прибавляем перменную

/*если у нас уже 4 ячейки <td> закрываем </tr> и обнуляем переменную*/
if ($td == 4){
echo "</tr>";
$td = 0;
}

}

echo "</table>";

Спустя 40 минут, 23 секунды (7.07.2010 - 16:04) waldicom написал(а):
Цитата (mishko_o @ 7.07.2010 - 13:41)
Вот код после запроса:
.....
Не могли бы вы подсказать, куда именно вставлять counter? И как должен выглядеть код в итоге?

Вы не пользуетесь таблицами? Если результаты представляют собой табличные данные, то Вы спокойно можете пользовать таблицы.

что-то типа


<table>
<
tr>
<?php
$counter = 0;
while($cat_content=mysql_fetch_array($rez)){
$counter ++;
echo "<td><a href='showwear.php?id=$cat_content[id_wear]' class='theme_link'><img src='$cat_content[image_small]'></a></td>";
if($counter % 4 == 0){
echo '</tr><tr>';
}
}


?>
</tr>
</
table>

Спустя 11 минут, 21 секунда (7.07.2010 - 16:16) mishko_o написал(а):
Большое спасибо!
А можно ли сохранить эту упорядоченность и в то же время сделать так, чтобы при уменьшении разрешения не появлялась горизонтальная полоса прокрутки, а изображения перескакивали вниз, и в ряду уже становилось не по 4, а по 3 изображения? Таблица тогда здесь не подойдет.

Спустя 8 минут, 15 секунд (7.07.2010 - 16:24) Ineed$ написал(а):
Тогда вопервых забудь про таблицы, во вторых просто делай растягиваэщуэся форму и все внутренние элементы + определи постоянный максимальный размер рамки и дели ячейки относительно рамки процентно с ограниченым минимумом для каждой ячейки. Сделай им всем float:left; и радуйся жизни.

Спустя 19 минут, 41 секунда (7.07.2010 - 16:44) Slays написал(а):
да, я в основном также делаю =)

Спустя 10 минут, 38 секунд (7.07.2010 - 16:54) mishko_o написал(а):
Да, я примерно так же это и представлял. Меня интересует реализация, как реализовать это на php..

Спустя 31 минута, 57 секунд (7.07.2010 - 17:26) Slays написал(а):
в пхп ничего нового, тут суть в css

div#block{
overflow:hidden;
width:100%; /*либо статический рамер*/
}
div#block div{
overflow:hidden;
width:150px;
height:150px
float:left;
}


первый ограничивающий блок, за пределы которого выведенные блоки не выберутся. Внутри этого блока выводишь свои товары в блоках нужных размеров, все что не влезет в один ряд, сами перенесутся на новую строку, т.е. в каждой строке будет столько блоков, сколько влезло в ограничивающий див.


echo "<div id=block>";

while($cat_content=mysql_fetch_array($rez))
{
echo "
<div><a href='showwear.php?id=$cat_content[id_wear]' class='theme_link'><img src='$cat_content[image_small]'></a></div>
";
}

echo "</div>";

Спустя 22 часа, 33 минуты, 28 секунд (8.07.2010 - 16:00) mishko_o написал(а):
Спасибо большое за ответы!
Чтобы не открывать новую тему, задам еще один небольшой вопрос здесь. На сайте есть регистрация посетителей, после того, как пользователь вошел в систему под своим логином, в одном из блоков появляется инфа, типа, "Здраствуйте, Ашот.". В общем на страницах в коде есть следующий фрагмент:

session_start();

if(isset($_SESSION[id]))
{
echo"
Добро пожаловать,
$_SESSION[login]!
}


С помощью require присоединяю файл auth.php с обработчиком авторизации:

if(isset($_POST['ok_auth']))
{
$sql="SELECT * FROM users WHERE login='$_POST[login]'";
$rez=mysql_query($sql);
if(@$users=mysql_fetch_array($rez))
{
$pass=($_POST[pass]);
if($pass==$users[pass])
{
session_register("login", "id");
$_SESSION[login]=$users[login];
$_SESSION[id]=$users[id];

}
}

}

Как только я захожу на сайт под своим логином, высвечивается "Здраствуйте, Admin". При переходе на другую страницу, пропадает логин, остается "Здраствуйте, !". Код идентичный на разных страницах, я имею ввиду, что касается авторизации.
Такие вещи уже не раз делал, но сейчас никак не могу понять, в чем дело.. Как исправить данную проблему?

Тестировал в Денвере - там все корректно отображается.

Спустя 11 минут, 46 секунд (8.07.2010 - 16:11) waldicom написал(а):
А session_start(); на всех страницах?

Спустя 18 часов, 13 минут, 26 секунд (9.07.2010 - 10:25) mishko_o написал(а):
Да, на всех, в том то и дело..
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.