Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Porcjowanie inaczej
Forum PHP.pl > Forum > Przedszkole
eS...
witam
mam problem z porcjowaniem zapytań z bazy
jeśli chodzi o porcjowanie np 10 co 10 rekordów to nie mam z tym problemu bo ustawiam sobie prametr LIMIT 0,10

mój problem polega na tym ze chce aby wybrac z bazy okreśclony rekord np:
na początku 1 (pierwszy rekord)
nastepnie 2 rekord
nastepnie 3 rekord
.....
......
.....

Jak mam napisać zapytanie do bazy aby wyswietliło mi dany rekord np. 9 rekord w tabeli fotki
questionmark.gif

potrzebne mi to w momencie kiedy wyswietlam obrazek danego uzytkownika, a nad obrazkiem chce dac odnośniki
>>nastepne zdjęcie (danego usera)
<< poprzednie zdjecie (danego usera)

p.s
jeśli zle kombinuje z tym porcjowaniem a raczej z tym aby wybierac tylko jeden rekord z bazy i sprawdzac czy jest nastepny (jesli tak to >>nastepne zdjecie), to nasuncie mnie na trop jak to zrobic smile.gif
jesli dalej nie wiadomo o co mi to powiem ze chodzi mi o taki efekt jak na www.plfoto.com. po kliknieciu w zdjecie, nad nim pojawiaja sie wlasnie takie linki (przykladowo /nastepne wg. autora/nastepne wg. daty/nastepne wg. kategori/)

z góry wielkie dzieki
scanner
Skoro masz ID bierzącego elementu, to możesz je zapisać w sesji i stworzyć linki typu:
Kod
*.php?show=next
- w tym momencie po kliknięciu na link, robi się:
  1. <?php
  2. $sSQLQuery = &#092;"SELECT * FROM zdjecia WHERE \";
  3. switch ( $_GET['action'] )
  4. {
  5. case 'next':
  6. // pobierz poprzednie
  7. $sSQLQuery .= &#092;"id < \".$_SESSION['currentID'].\" ORDER BY id ASC LIMIT 1\";
  8. break;
  9. case 'next':
  10. // pobierz następne
  11. $sSQLQuery .= &#092;"id > \".$_SESSION['currentID'].\" ORDER BY id ASC LIMIT 1\";
  12. break;
  13. default:
  14. // pobierz pierwsze
  15. $sSQLQuery .= &#092;"1 ORDER BY id ASC LIMIT 1\";
  16. break;
  17. }
  18. mysql_query( $sSQLQuery );
  19. ?>
w podobny sposób mozna dodać opcje "first" i "last" czy też "skip 10 forward", "skip 10 backward"
eS...
dzięki
niestety sprawdze dopiero po świętach smile.gif
edit
hmm ale jesli mam link typu
  1. *.php?show=next

to czy switch nie powinien wygladac tak
  1. <?php
  2.  
  3. $sSQLQuery = &#092;"SELECT * FROM zdjecia WHERE \";
  4. switch ( $_GET['show'] )
  5. {
  6. ..........dalsza część kodu
  7. ?>

smile.gifquestionmark.gif guitar.gif
scanner
Cytat(eS... @ 2004-12-22 10:37:15)
to czy switch nie powinien wygladac tak

Heh.. oczywiście... Jeszcze się nie obudziłem.
eS...
heh właśnie tak myślałem że jeszcze śpisz smile.gif ja naszczęście już po kawie (espresso prosto z włoch) offtopic.gif guitar.gif
scanner
Kawa sux... Odstawiłem ją 3 lata temu i jeszcze żyję, haha...
shima
Cytat(scanner @ 2004-12-22 10:45:39)
Kawa sux... Odstawiłem ją 3 lata temu i jeszcze żyję, haha...

Gdybym odstawił kawę 3 lata temu, to już pewnie bym nie żył ;-)
eS...
okok panowie smile.gif prosze o usuniecie OT bo cos czuje że w tym temacie jeszcze bede cos dopisywał smile.gif
p.s
kawa jest zła bo wypłukuje wszystkie witaminki z organizmu tongue.gif
hwao
Kazdy post nie na temat bedzie usuwany
Ludvik
  1. <?php
  2. switch ( $_GET['show'] )
  3. {
  4. case 'next':
  5. ...
  6. break;
  7. case 'next':
  8. ...
  9. }
  10. ?>


W tym switchu nie powinny być różne warunki? Bo jak tak zostanie, to chyba tylko poprzednie będzie wyświetlał albo domyślne...
scanner
Ehh.. Nie dacie człowiekowi się wyspać i obudzić smile.gif
  1. <?php
  2. $sSQLQuery = &#092;"SELECT * FROM zdjecia WHERE \";
  3. switch ( $_GET['show'] )
  4. {
  5. case 'prev':
  6. $sSQLQuery .= &#092;"id < \".$_SESSION['currentID'].\" ORDER BY id ASC LIMIT 1\";
  7. break;
  8. case 'next':
  9. $sSQLQuery .= &#092;"id > \".$_SESSION['currentID'].\" ORDER BY id ASC LIMIT 1\";
  10. break;
  11. default:
  12. $sSQLQuery .= &#092;"1 ORDER BY id ASC LIMIT 1\";
  13. break;
  14. }
  15. mysql_query( $sSQLQuery );
  16. ?>
oldek
Nie ma tak dobrze, by nie mogło być lepiej... W tej wersji nie ma sprawdzania czy nie wyleciało sie poza granice bazy, ale to chyba lepiej zrobić w miejscu wywołania, uzalezniając od tego pojawienie sie lub nie przycisku umożliwiającego akcję.
  1. <?
  2. if ($currentID<$lastID){ ?>
    1. </div></li><li class="li2"><div class="de2"><form action='<span class="kw2"><?php</span> <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="re0">$PHP_SELF</span><span class="sy0">;</span> <span class="sy1">?></span>' method='post'></div></li><li class="li1"><div class="de1"><input type=\"submit\" name=\"show\" value=\"next\"></div></li><li class="li2"><div class="de2"></form></div></li><li class="li1"><div class="de1">
  3. <?
  4. }
  5. if ($currentID>1){?>
    1. </div></li><li class="li2"><div class="de2"><form action='<span class="kw2"><?php</span> <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="re0">$PHP_SELF</span><span class="sy0">;</span> <span class="sy1">?></span>' method='post'></div></li><li class="li1"><div class="de1"><input type=\"submit\" name=\"show\" value=\"prev\"></div></li><li class="li2"><div class="de2"></form></div></li><li class="li1"><div class="de1">
  6. <?
  7. }
  8. ?>
Oczywiście trzeba wprzódy poznać wartość $lastID
=======
edit: jak należy żonglować w edycji postu tagami html wewnątrz tagów php by uzyskać zamierzony efekt?
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.