|
|
|
| Добрый день. Возникла такая проблема, хочу сделать вывод данных но не всех, т.е. берем например из базы 6 строк, выводим только 3, а остальные по бокам, т.е. являются ссылками, что бы можно было их потом открыть в полный размер.
Вот не могу додуматься, как это можно сделать? может кто поможет....
Я хочу сделать фото галерею и что бы вывод был большой фотографии, а снизу превьюшки по которым можно щелкать и открывать их в полный размер. | |
|
|
|
|
|
|
|
для: Aidaho
(18.09.2009 в 07:36)
| | Не очень понятно, что вызывает сложность? Разметка страницы? Или что-то другое? | |
|
|
|
|
|
|
|
для: cheops
(18.09.2009 в 08:42)
| | вызывает сложность сам алгоритм, т.е. если я щелкаю на первую строчку, то должны появится ссылки на 2 и 3-ю строчки. А если я например щелкаю на 3-ю, то появляются ссылки на 1,2 и 4,5 строчки, что то вроде постраничной навигации, только с фотографиями... | |
|
|
|
|
|
|
|
для: Aidaho
(18.09.2009 в 07:36)
| | Могу предложить вот такой вариант вывода первых трех строчек одним методом и вывод остальных другим методом
$db = mysql_connect(.........);
$result = mysql_query(.........);
//Цикл, в котором выводим первые три строчки
$i = 0;
while($i < 3)
{
$i++;
$myrow = mysql_fetch_array($result);
......................
}
//Цикл, в котором выводим остальные строчки
while($myrow = mysql_fetch_array($result))
{
..........................
}
|
| |
|
|
|
|
|
|
|
для: Alexey_Tihonenko
(18.09.2009 в 08:50)
| | а если мне надо будет например вывести не первые 3, а начиная с 10-ой? | |
|
|
|
|
автор: temp (18.09.2009 в 09:05) |
|
|
для: Aidaho
(18.09.2009 в 08:56)
| | Тогда в запросе к бд использовать конструкцию LIMIT с двумя параметрами | |
|
|
|
|
|
|
|
для: temp
(18.09.2009 в 09:05)
| | это понятно, но как мне определить барьеры? дело в том, что в базе есть значения с разных категорий выборка происходит по id категории...
что бы было понятней, сейчас все это выглядит так:
$q = "select id_album,foto,descrip,date from gal_foto where id='$_GET[id]'";
$res = mysql_query($q) or die(mysql_error());
echo "<div class=content>";
$fotoBig = mysql_fetch_array($res);
echo "<center><img src=\"$fotoBig[foto]\" alt=\"$bigFoto[4]\" class=\"foto\"></center><br />
$fotoBig[descrip]<br /><br />
Добавлена $fotoBig[date]<hr /><br />";
$qu = "select count(id) from gal_foto where id_album='$fotoBig[id_album]'";
$resu = mysql_query($qu) or die(mysql_error());
$countId = mysql_fetch_array($resu);
$q = "select * from gal_foto where id_album='$fotoBig[id_album]' limit $countId[0]";
$res = mysql_query($q) or die(mysql_error());
while($alb = mysql_fetch_array($res)) {
echo "<a href=http://$_SERVER[HTTP_HOST]$_SERVER[PHP_SELF]?id=$alb[Id] title=\"Просмотреть\"><img src=\"$alb[prev]\" alt=\"$alb[descrip]\" class=\"foto\"></a>
";
}
echo "</div>";
}
|
| |
|
|
|
|
|
|
|
для: Aidaho
(18.09.2009 в 09:15)
| | limit $countId[0] у Вас с какой целью приделан?
вместо него разумнее как раз барьеры поставить. | |
|
|
|
|
|
|
|
для: Aidaho
(18.09.2009 в 08:56)
| | А те строчки, что до 10-й вам в этом случаи будут нужны или будут нужны только те, что после 10-й? | |
|
|
|
|
|
|
|
для: Alexey_Tihonenko
(18.09.2009 в 09:13)
| | да, будут нужны, предположительно около 2-4 строк | |
|
|
|
|
|
|
|
для: Aidaho
(18.09.2009 в 09:16)
| | Тогда можно вот как сделать:
$db = mysql_connect(.........);
mysql_select_db(...............);
// Выводим первую тройку миниатюр
$result = mysql_query("SELECT * FROM foto WHERE id > ($_GET['id'] -4 ) and id < $_GET['id'] ");
while($myrow = mysql_fetch_array($result))
{
//Собственно вывод миниатюр
.........................................
}
//Выводим большую картинку
$result = mysql_query("SELECT * FROM foto WHERE id = $_GET['id']");
$myrow = mysql_fetch_array($result);
//Собственно вывод картинки
...................................................
// Выводим вторую тройку миниатюр
$result = mysql_query("SELECT * FROM foto WHERE id > $_GET['id'] and id < ($_GET['id'] + 4) ");
while($myrow = mysql_fetch_array($result))
{
//Собственно вывод миниатюр
.........................................
}
|
| |
|
|
|
|
|
|
|
для: Alexey_Tihonenko
(18.09.2009 в 10:06)
| | не подходит.. потому что id картинок идет не по прядку.... т.е. картинки с id 22 и 23 могут быть в разных альбомах... | |
|
|
|
|
|
|
|
для: Aidaho
(18.09.2009 в 10:47)
| | Тогда опишите по какому принципу должна формироваться лента из картинок.
У вас все картинки находятся в одной таблице?
А я пока съезжу на обед) | |
|
|
|
|
|
|
|
для: Alexey_Tihonenko
(18.09.2009 в 10:55)
| | да, все картинки в одной таблице
структура таблицы такая:
id-фотографии, айди альбома, фото, превью, описание, дата
вот и из нее надо как то выдирать...
приятного аппетита )) | |
|
|
|
|
|
|
|
для: Aidaho
(18.09.2009 в 11:51)
| | Спасибо))
Тогда модифицируем последний вариант:
$db = mysql_connect(.........);
mysql_select_db(...............);
// Выводим первую тройку миниатюр из нужно альбома
$result = mysql_query("SELECT * FROM foto WHERE id < $_GET['id'] and album_id = $_GET['album_id'] ODRED BY id DESC LIMIT 3");
while($myrow = mysql_fetch_array($result))
{
//Собственно вывод миниатюр
.........................................
}
//Выводим большую картинку
$result = mysql_query("SELECT * FROM foto WHERE id = $_GET['id']");
$myrow = mysql_fetch_array($result);
//Собственно вывод картинки
...................................................
// Выводим вторую тройку миниатюр из нужного альбома
$result = mysql_query("SELECT * FROM foto WHERE id > $_GET['id'] and album_id = $_GET['album_id'] ODRED BY id LIMIT 3");
while($myrow = mysql_fetch_array($result))
{
//Собственно вывод миниатюр
.........................................
}
|
| |
|
|
|
|
|
|
|
для: Alexey_Tihonenko
(18.09.2009 в 13:17)
| | Спасибо, в принципе работает, но как то странно )))
картинки которые должны быть слево(меньше айди активной картинки) не выводит больше 3-ех первых...
как я понял это из-за конструкции лимит, он находит записи меньше нынешнего айди и выводит их, но т.к. лимит говорит, что бы он выводил только первые 3, то он только их и выводит и выше не поднимается...
вот это и была перво начальная проблема, из-за чего я сюда и написал )) | |
|
|
|
|
|
|
|
для: Alexey_Tihonenko
(18.09.2009 в 13:17)
| | в общем решил я проблему... вот так:
$q = "select id_album,foto,descrip,date from gal_foto where id='$_GET[id]'";
$res = mysql_query($q) or die(mysql_error());
$fotoBig = mysql_fetch_array($res);
... большая картинка
//вот это сделал, что бы лимит правильно выводил
$quer = mysql_query("SELECT count(id) FROM gal_foto WHERE Id < '$_GET[id]' and id_album = '$fotoBig[id_album]'");
$res = mysql_fetch_row($quer);
$a = $res['0'] -2;
$q = "SELECT * FROM gal_foto WHERE Id < '$_GET[id]' and id_album = '$fotoBig[id_album]' LIMIT $a,2";
$res = mysql_query($q) or die(mysql_error());
while($alb = mysql_fetch_array($res)) {
... вывод левой части...
}
$q = "SELECT * FROM gal_foto WHERE Id >= '$_GET[id]' and id_album = '$fotoBig[id_album]' ORDER BY id LIMIT 3";
$res = mysql_query($q) or die(mysql_error());
while($alb = mysql_fetch_array($res)) {
... вывод правой части картинок...
}
|
| |
|
|
|
|
|
|
|
для: Aidaho
(18.09.2009 в 16:12)
| | Рад, что у вас получилось решить проблему!
На будущее совет: Описывайте поподробнее свою проблему(задачу), иначе тяжело понять, какая конкретная задача перед вами стоит и что именно не получается) | |
|
|
|