Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> wyciągnięcie pozycji na podstawie ID
DooBLER
post
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 7.08.2006

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
dr_bonzo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


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


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
DooBLER
post
Post #3





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 7.08.2006

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
spenalzo
post
Post #4





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


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.


--------------------

Go to the top of the page
+Quote Post
DooBLER
post
Post #5





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 7.08.2006

Ostrzeżenie: (0%)
-----


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

Ten post edytował DooBLER 10.09.2006, 16:20:05
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 01:54