Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wyciągnięcie pozycji na podstawie ID
Forum PHP.pl > Forum > Bazy danych > MySQL
DooBLER
Witam
Szukam już 2 godziny i nie mogę znaleźć odpowiedzi na moje pytanie (moze źle szukam sad.gif )

Mam takie zapytanie:
  1. SELECT * FROM `galeria` WHERE gal_id='".$id_fotki."' LIMIT 0, 1

Chcę zmienić to zapytanie na takie:
  1. SELECT * FROM `galeria`ORDER BY gal_dataDodania DESC LIMIT ".$pozycja_fotki.", 1

Jakie zapytanie powinienem napisać żeby podając $id_fotki otrzymać pozycję dla LIMIT przy sortowaniu takim jak powyżej?

Pozdrawiam
dr_bonzo
Policz ile jest rekordow o wiekszym-rownym gal_dataDodania + 1 i to bedzie pozycja tej fotki przy takim sortowaniu jak w drugim zapytaniu.

--------------
edit: oczywiscie pozycja w sortowabniu nie zmieni sie tak dlugo az nie dodasz i gdy uzywasz sortowania stabilnego (tzn. zachowa poczatkowa kolejnosc elementow o takiej samej dacie dodania)

Twoje rozwiazanie jest po prostu zle: przy kazdym wyciaganiu obrazka musisz sortowac tabele (masz chociaz indeks zalozony na kolumne gal_dataDodania?questionmark.gif) i po kazdym dodaniu/usunieciu obrazka, musisz wyliczac jego nowa pozycje -- albo przez ponowne sortowanie albo przez dodawanie 1 lub -1 w zaleznosci od daty obrazka ktory usunales.

Po co zmieniasz zapytanie?questionmark.gif
DooBLER
No więc tak mam jedną stronę z miniaturkami i każda z tych miniaturek jest linkiem do strony z powiększonym obrazkiem, link ten zawiera ID tegoż obrazka.

Na stronie z powiększonymi obrazkami mam przyciski [następny], [poprzedni] itd pod tymi przyciskami nie chce mieć konkretnych ID obrazków tylko pozycje którą zajmują przy danym sortowaniu

I teraz tak:
Przy przejściu od miniaturek mam podane ID (i taka sytuacja występuje tylko raz) potem operuję już tylko pozycjami i zapytaniami LIMIT

Niema jakiegoś prostego sposobu na wyciągnięcie numeru rekordu? gdzieś czytałem kiedyś że podczas sortowania baza tworzy sobie dodatkową ukrytą kolumnę z ponumerowanymi po kolei rekordami i właśnie ten numerek by mnie pewnie interesował (niestety zapomnialem gdzie o tym czytałem) :/

Dzięki za odpowiedzi
Pozdrawiam
spenalzo
Cytat(DooBLER @ 6.09.2006, 09:50:05 ) *
Na stronie z powiększonymi obrazkami mam przyciski [następny], [poprzedni] itd pod tymi przyciskami nie chce mieć konkretnych ID obrazków tylko pozycje którą zajmują przy danym sortowaniu

A dlaczego? Jak dla mnie twój pomysł jest bez sensu... najprostsze i najlepsze wyjście to wyciągnięcie ID następnego i poprzedniego, uwzględniając sposób sortowania.
DooBLER
no ale jak będę miał więcej przycisków np tak:

[-10][-5][-4][-3][-2][poprzedni][następny][+2][+3][+4][+5][+10]

to od razu dochodzi wyciąganie ID tych wszystkich rekordów z bazy

lepiej chyba wyciągnąć sobie w jednym zapytaniu jedną wartość (aktualną pozycję)
przekazać tą wartość do szablonu (używam smarty) i już w szablonie wygenerować sobie przyciski przy użyciu prostych obliczeń...

Nie chcę używać innych sposobów bo ten mam już przemyślany w miarę...

Dzięki
Pozdrawiam

Poradziałem sobie "na około" dzięki php:
  1. <?php
  2. $this->zap = "
  3. SELECT gal_id FROM `galeria`
  4. ORDER BY gal_dataDodania DESC
  5. ";
  6. $this->result = $this->m_objBaza->Execute($this->zap);
  7.  
  8. $this->licznik='0';
  9. while (!$this->result->EOF)
  10. {
  11. $this->licznik++;
  12. if($this->result->fields[gal_id]==$_GET[id])
  13. {
  14. $this->pozycjarekordu=$this->licznik;
  15. }
  16. $this->result->MoveNext();
  17. }
  18. ?>


gdyby ktoś wiedział jak by to wykonać w bazie proszę o jakieś podpowiedzi.

Pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.