galeria

6 отговора 0 прегледа
#1

galeria

Здравейте!
Направих уеб галерия в база данни с mysql. Сега искам като отворя някоя снимка да се появяват бутони напред и назад и така да се разгледат всички снимки в галерията. За съжаление не мога да се сетя как в заявката да определя предишната и следващата снимка. Ясно ми е, че трябва да използвам id-то, но..... толкова.
Ще се радвам, ако някой ми помогне.

Отговор
в отговор на cveti #2

Re: galeria

LIMIT offset, row_count
или в твоя случай
LIMIT $_GET['image_id'],$_GET['image_id']+1
За следваща снимка

Отговор
в отговор на zzzzzzzzzzzzz #3

Re: galeria

това само ако $имаге_ид съдържа строго последователни стойности, което в общия случай лесно се нарушава като условие...

Отговор
в отговор на Blake #4

Re: galeria

Напротив.
Не е нужно стойностите да са последователни.

mysql> use test
Database changed
mysql> create table testlimit (
-> id int not null auto_increment primary key,
-> image varchar(20) not null);
Query OK, 0 rows affected (1.30 sec)

mysql> insert into testlimit(image) values('image1.jpg'),('image2.jpg'),('image3
.jpg'),('image4.jpg');
Query OK, 4 rows affected (0.37 sec)
Records: 4 Duplicates: 0 Warnings: 0

mysql> delete from testlimit where id=3;
Query OK, 1 row affected (0.27 sec)

mysql> select * from testlimit;
+----+------------+
| id | image |
+----+------------+
| 1 | image1.jpg |
| 2 | image2.jpg |
| 4 | image4.jpg |
+----+------------+
3 rows in set (0.05 sec)

mysql> select image from testlimit limit 2,1;
+------------+
| image |
+------------+
| image4.jpg |
+------------+
1 row in set (0.07 sec)


Така ... аз съм го написал също грешно. Това е станало от бързане,
Трябва да е LIMIT $_GET['image_id'],1

Но в случая първия аргумент задава стартов ред, а втория елемент задава номер на редове които да бъдат върнати в заявката

Отговор
в отговор на zzzzzzzzzz #5

Re: galeria

LIMIT $_GET['image_id'],1
А за sql injection да си чувал?
$limit = 'LIMIT ' . mysqli_real_escape_string($_GET['image_id'] ). ',1';

Отговор
в отговор на cveti #6

Re: galeria

Next ->
SELECT imagepath FROM images WHERE imageID>$currentImageID ORDER BY imageID limit 0,1

Prev ->
SELECT imagepath FROM images WHERE imageID<$currentImageID ORDER BY imageID DESC limit 0,1

Или нещо подобно
Освен това трябва да имаш проверка за минимално ИД и за максимално ИД, все някога ще стигнеш края на галерията...

Отговор
в отговор на пxп шмaтka #7

Re: galeria

$limit = 'LIMIT ' . mysqli_real_escape_string($_GET['image_id'] ). ',1';

Всъщност при аутоинкремент на id-то в MySQL-а е достатъчно
$limit = 'LIMIT ' .(int) $_GET['image_id']. ',1';

root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy
Отговор