Есть таблица с значениями:
id, meta_k, title, mini_img, cat
Есть файл gall.php
Необходимо следующее.
При переходе на gall.php переменная id (если её нет) становится равной 1, если же есть вытаскивается из адресной строки. Аналогично и с cat.
После чего из бд вытаскиваются значения соответствующие переменым и выводится картинка.
Ниже картинки Две кнопочки:
Следующее изображение в галереи
И предыдущее
Есть код:
$db = mysql_connect ("localhost","mrguest","2222222222");
mysql_select_db("mrguest_p",$db);
if (isset($_GET['cat'])) {$cat = $_GET['cat']; }
if (!isset($cat)) {$cat = 1;}
if (isset($_GET['id'])) {$id = $_GET['id']; }
$result = mysql_query("SELECT * FROM pictures WHERE id='$id'",$db);
$myrow = mysql_fetch_array($result);
$result2 = mysql_query("SELECT * FROM pictures WHERE cat='$cat'",$db);
$myrow2 = mysql_fetch_array($result2);
$old_id = $myrow2["id"] - 1;
$new_id = $myrow2["id"] + 1;
$random=rand(1,1000);
printf ("
%s
<img src='%s'></a>
<br>
<a title='Предыдущее изображение' href='gall.php?id=%s&cat=%s'><img src='Images/leftarrow.gif'/></a>
<a title='Следующее изображение' href='gall.php?id=%s&cat=%s'><img src='Images/rightarrow.gif'/> <br>
<a href='gall.php?id=%s&cat=%s' class='contentlink'>Случайное фото</a> <br><a href='%s' class='contentlink'>Скачать картинку</a>
</p></td>
</tr>
<table>
", $myrow2["title"], $myrow2["mini_img"], $old_id, $cat, $new_id, $cat, $random, $cat, $myrow2["mini_img"]);
?>
Собственно проблема в следующем.
Как сделать ссылку на предыдущее и следующее изображение, чтобы учитывалась открытая пользователем категория?
Заранее плюсую и благодарю :)
Спустя 54 минуты, 35 секунд (17.10.2011 - 18:34) kovaldm написал(а):
Цитата |
Как сделать ссылку на предыдущее и следующее изображение, чтобы учитывалась открытая пользователем категория? |
Передача параметров GETом.
Вперед
<a href="gall.php?id=3&cat=%s">
Назад
<a href="gall.php?id=1&cat=%s">
Спустя 8 минут, 11 секунд (17.10.2011 - 18:42) wmasternikita написал(а):
Так и было сделано.
Объясню поточнее.
Требуется вытащить каким-то образом из дб следующий и предыдущий id относительно текущего С ТЕМ ЖЕ параметром cat, что задал пользователь. Вроде понятно :)
И ещё такой вопросец. По какой причине id всегда становится равным единице, даже когда переходишь допустим по адресу: "gall.php?id=4&cat=1"?
Вроде вытаскивает его из адресной строки, или я не прав?
$old_id = $myrow2["id"] - 1;
$new_id = $myrow2["id"] + 1;
Объясню поточнее.
Требуется вытащить каким-то образом из дб следующий и предыдущий id относительно текущего С ТЕМ ЖЕ параметром cat, что задал пользователь. Вроде понятно :)
И ещё такой вопросец. По какой причине id всегда становится равным единице, даже когда переходишь допустим по адресу: "gall.php?id=4&cat=1"?
if (isset($_GET['id'])) {$id = $_GET['id']; }
Вроде вытаскивает его из адресной строки, или я не прав?
Спустя 46 минут, 4 секунды (17.10.2011 - 19:28) kovaldm написал(а):
Цитата |
Требуется вытащить каким-то образом из дб следующий и предыдущий id относительно текущего С ТЕМ ЖЕ параметром cat, что задал пользователь. |
"SELECT id FROM tbl_name WHERE cat = $_GET['cat']"
Получится массив с id шниками данной категории.
Вот это
if (isset($_GET['cat'])) {$cat = $_GET['cat']; }
if (!isset($cat)) {$cat = 1;}
замени на
$cat = (empty($_GET['cat']))? 1 : $_GET['cat'];
Спустя 21 час, 12 минут, 11 секунд (18.10.2011 - 16:40) wmasternikita написал(а):
Благодарю, почти получилось. :)
Теперь следующий вопрос:
Как в этом моменте при отсутствующем id сделать его равным не единице, а минимальному id с параметром cat='$cat'?
Аналогично, как сделать кнопку следующее/предыдущее изображение?
Например есть изображения с cat 1 и id
1 2 3 5 6
А у изображения с id= 4 - cat= 2.
Как узнать следующий и предыдущий id относительно переменной $id из определённой категории и вывести их?
Надеюсь понятно объяснил
Теперь следующий вопрос:
$id = (empty($_GET['id']))? 1 : $_GET['id'];
Как в этом моменте при отсутствующем id сделать его равным не единице, а минимальному id с параметром cat='$cat'?
Аналогично, как сделать кнопку следующее/предыдущее изображение?
Например есть изображения с cat 1 и id
1 2 3 5 6
А у изображения с id= 4 - cat= 2.
Как узнать следующий и предыдущий id относительно переменной $id из определённой категории и вывести их?
Надеюсь понятно объяснил
Спустя 4 минуты, 56 секунд (18.10.2011 - 16:45) imbalance_hero написал(а):
WHERE `id` > $_GET['id'] ORDER BY `id` LIMIT 1;
WHERE `id` < $_GET['id'] ORDER BY `id` DESC LIMIT 1;
Спустя 1 минута, 26 секунд (18.10.2011 - 16:47) imbalance_hero написал(а):
wmasternikita
"Как в этом моменте при отсутствующем id сделать его равным не единице, а минимальному id с параметром cat='$cat'?"
"Как в этом моменте при отсутствующем id сделать его равным не единице, а минимальному id с параметром cat='$cat'?"
if(empty)
тут запрос на MIN(`id`)
else
$_GET['id']
Спустя 14 минут, 43 секунды (18.10.2011 - 17:02) kovaldm написал(а):
Цитата |
Как в этом моменте при отсутствующем id сделать его равным не единице, а минимальному id с параметром cat='$cat'? |
SELECT MIN(id) FROM tbl_name WHERE cat = $cat
Спустя 2 часа, 2 минуты, 3 секунды (18.10.2011 - 19:04) wmasternikita написал(а):
Парни, нереальное спасибо. Почти всё дописал.
Последнее "но"
Вроде id должно браться из адресной строки, если не получается из дб, однако оно попросту обращется в 0. В чём ошибка?
Последнее "но"
if(empty($id))
{
$result4 = mysql_query ("SELECT MIN(id) FROM pictures WHERE cat='$cat'",$db);
$myrow4 = mysql_fetch_array($result4);
$id = $myrow4['id'];
}
else
{
$id = $_GET['id'];
}
Вроде id должно браться из адресной строки, если не получается из дб, однако оно попросту обращется в 0. В чём ошибка?
Спустя 17 минут, 37 секунд (18.10.2011 - 19:21) imbalance_hero написал(а):
$id = $myrow4['id']; - возвращает FALSE, а не id.
echo '<pre>'.print_r($myrow4,1).'</pre>';
Сделай, сразу после $id = myrow4['id']; и ты увидешь, что MIN(id) возвращает не `id`. :)
Как правильно записать - сейчас не подскажу, сначала сам проверь, а потом возвращайся.
Спустя 48 минут, 59 секунд (18.10.2011 - 20:10) kovaldm написал(а):
Запрос такой сделай
Здесь лутше так
"SELECT MIN(id) AS id FROM pictures WHERE cat=". $cat
Здесь лутше так
$myrow4 = mysql_fetch_assoc($result4);
Спустя 1 час, 1 минута, 36 секунд (18.10.2011 - 21:12) imbalance_hero написал(а):
kovaldm
Вот приблизительно тоже самое я хотел написать уже после того, как человек запустит и проверит, какие данные у него были выбраны из БД
Вот приблизительно тоже самое я хотел написать уже после того, как человек запустит и проверит, какие данные у него были выбраны из БД
Спустя 8 минут, 58 секунд (18.10.2011 - 21:21) kovaldm написал(а):
Опередил.
Спустя 5 минут, 19 секунд (18.10.2011 - 21:26) imbalance_hero написал(а):
kovaldm
Нее, я просто ждал ответа на мой вопрос
Нее, я просто ждал ответа на мой вопрос
Спустя 13 часов, 8 минут, 56 секунд (19.10.2011 - 10:35) wmasternikita написал(а):
imbalance_hero, проверил. осознал что возвращается далеко не id, а нечто странное))
kovaldm, сенк, сделал так:
Но id всегда обращается в еденицу на странице. Почему? :)
kovaldm, сенк, сделал так:
if(empty($id))
{
$result4 = mysql_query ("SELECT MIN(id) AS id FROM pictures WHERE cat=". $cat);
$myrow4 = mysql_fetch_assoc($result4);
$id= $myrow4['id'];
}
else
{
$_GET['id'];
}
Но id всегда обращается в еденицу на странице. Почему? :)
Спустя 5 часов, 58 минут, 2 секунды (19.10.2011 - 16:33) imbalance_hero написал(а):
Может быть потому что минимальная запись = 1 ?
Спустя 16 минут, 11 секунд (19.10.2011 - 16:49) kovaldm написал(а):
Покажите какой код получился.
Спустя 30 минут, 43 секунды (19.10.2011 - 17:20) Guest написал(а):
а нет, вру.
не в еденицу, а в MIN(id) из указанной категории.
хотя такое должно происходить только когда id отсутствует.
не в еденицу, а в MIN(id) из указанной категории.
хотя такое должно происходить только когда id отсутствует.
Спустя 6 минут, 46 секунд (19.10.2011 - 17:27) Guest написал(а):
imbalance_hero, именно так. но оно должно принимать значение минимальной записи только тогда, когда в адресной строке нет переменной, а если же там есть id, GETaть его оттуда.
Код.
$db = mysql_connect ("localhost","gegegge","egegeg");
mysql_select_db("mrguest_pophone",$db);
$cat = (empty($_GET['cat']))? 1 : $_GET['cat'];
if(empty($id))
{
$result4 = mysql_query ("SELECT MIN(id) AS id FROM pictures WHERE cat=". $cat);
$myrow4 = mysql_fetch_assoc($result4);
}
else
{
$_GET['id'];
}
$result = mysql_query("SELECT * FROM pictures WHERE id='$id' AND cat='$cat'",$db);
$myrow = mysql_fetch_array($result);
Код.
Спустя 21 минута, 4 секунды (19.10.2011 - 17:48) kovaldm написал(а):
Ну дык он нигде не идентифицируется.
Спустя 5 минут, 58 секунд (19.10.2011 - 17:54) imbalance_hero написал(а):
WHERE id='$id'
Но я не вижу в скирпте, откуда ПОЯВИЛАСЬ $id, её попросту нет!
Но я не вижу в скирпте, откуда ПОЯВИЛАСЬ $id, её попросту нет!
Спустя 6 минут, 31 секунда (19.10.2011 - 18:00) wmasternikita написал(а):
Сделал так:
Всё равно id всегда равно MIN(id) WHERE cat=$cat,
даже когда в адресной строке
gall.php?id=6&cat=1
if(empty($id))
{
$result4 = mysql_query ("SELECT MIN(id) AS id FROM pictures WHERE cat=". $cat);
$myrow4 = mysql_fetch_assoc($result4);
$id = $myrow4['id'];
}
else
{
$id = $_GET['id'];
}
Всё равно id всегда равно MIN(id) WHERE cat=$cat,
даже когда в адресной строке
gall.php?id=6&cat=1
Спустя 9 минут, 2 секунды (19.10.2011 - 18:09) imbalance_hero написал(а):
Вернёмся на начало, перед условием откуда у тебя появляется $id ? Я не нашел инициализацию переменной.
Может быть ты путаешь её с суперглобальной переменной $_GET['id'], хотя врядли, они же имеют абсолютно разные правописания
Может быть ты путаешь её с суперглобальной переменной $_GET['id'], хотя врядли, они же имеют абсолютно разные правописания
Спустя 20 минут, 34 секунды (19.10.2011 - 18:30) wmasternikita написал(а):
Точно. Вот задать её я забыл.
Правильно?
Хотя всё равно id не принимает значение из адресной строки.
<?
$db = mysql_connect ("localhost","mrguest","5224551");
mysql_select_db("mrguest_pophone",$db);
$cat = (empty($_GET['cat']))? 1 : $_GET['cat'];
$id = 0;
if(empty($id))
{
$result4 = mysql_query ("SELECT MIN(id) AS id FROM pictures WHERE cat=". $cat);
$myrow4 = mysql_fetch_assoc($result4);
$id = $myrow4['id'];
}
else
{
$id = $_GET['id'];
}
$result = mysql_query("SELECT * FROM pictures WHERE id='$id' AND cat='$cat'",$db);
$myrow = mysql_fetch_array($result);
?>
Правильно?
Хотя всё равно id не принимает значение из адресной строки.
Спустя 2 минуты, 38 секунд (19.10.2011 - 18:32) Winston написал(а):
Цитата (wmasternikita @ 19.10.2011 - 18:30) |
Хотя всё равно id не принимает значение из адресной строки. |
А написать
print_r($_GET);
И передать в адресную строку, потом посмотрите, что выдаст.
Спустя 11 минут, 44 секунды (19.10.2011 - 18:44) kovaldm написал(а):
$id = 0;
if(empty($id))
{
$result4 = mysql_query ("SELECT MIN(id) AS id FROM pictures WHERE cat=". $cat);
$myrow4 = mysql_fetch_assoc($result4);
$id = $myrow4['id'];
}
else
{
$id = $_GET['id'];
}
Проверьте какой блок кода ВСЕГДА будет отрабатывать при
$id = 0;
Спустя 5 минут, 16 секунд (19.10.2011 - 18:49) wmasternikita написал(а):
kovaldm, при id = 0 обрабатывает
игнорируя else.
$result4 = mysql_query ("SELECT MIN(id) AS id FROM pictures WHERE cat=". $cat);
$myrow4 = mysql_fetch_assoc($result4);
$id = $myrow4['id'];
игнорируя else.
Цитата |
И передать в адресную строку |
не совсем понял что имеете в виду.
Спустя 9 минут, 53 секунды (19.10.2011 - 18:59) kovaldm написал(а):
Значит надо как-то по другому инициализировать $id.
Спустя 3 минуты, 50 секунд (19.10.2011 - 19:03) wmasternikita написал(а):
Как например?
Спустя 3 минуты, 16 секунд (19.10.2011 - 19:06) kovaldm написал(а):
Ты присваиваешь $id = 0 и затем проверяешь его на пустоту. Зачем?
Спустя 5 минут, 29 секунд (19.10.2011 - 19:12) wmasternikita написал(а):
kovaldm, опа.
Всё, парни.
Сделал таким образом:
Заместо $_GET ['id'] я пытался проверить по сути своей 0, вот в чём ошибка.
Благодарю kovaldm и imbalance_hero, без Вас бы точно не разобрался во всём этом ;)
Всё, парни.
Сделал таким образом:
$cat = (empty($_GET['cat']))? 1 : $_GET['cat'];
$id = 0;
if(empty($_GET ['id']))
{
$result4 = mysql_query ("SELECT MIN(id) AS id FROM pictures WHERE cat=". $cat);
$myrow4 = mysql_fetch_assoc($result4);
$id = $myrow4['id'];
}
else
{
$id = $_GET['id'];
}
Заместо $_GET ['id'] я пытался проверить по сути своей 0, вот в чём ошибка.
Благодарю kovaldm и imbalance_hero, без Вас бы точно не разобрался во всём этом ;)
Спустя 49 минут (19.10.2011 - 20:01) imbalance_hero написал(а):
$_GET - это суперглобальный массив, который приходит из адресной строки. Обычные переменные к нему не имеют отношения.