Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL]Wczytywanie z bazy. Problem
skete
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 8.03.2007

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


Moim zamysłem było wczytanie danych zdjęcia o id większym i mniejszym od aktualnie wyświetlanego.
Każdy wpis numerowany jest automatycznie przez bazę. Doszedłem do momentu w którym przyszło mi do głowy że przecież kiedy jedno ze zdjęć zostanie usunięte to w numeracji pojawi się dziura i zwykłe wczytywanie danych WHERE id=$stareid+1 nie ma sensu. zrobiłem to tak :
Dla zdjęcia następnego:
  1. <?php
  2. $numerzdjeciap = $numerzdjecia+1;
  3.  
  4.    
  5.    $sql3 = "SELECT * FROM ".$galeria." WHERE id>='".$numerzdjeciap."'";
  6.    $result3 = mysql_query($sql3);
  7.    $r3 = mysql_fetch_array($result3);
  8.    if($r3['id'])
  9.    {
  10.    $adresminiaturkip = $r3['min'];
  11.    $tytulp = $r3['tytul'];
  12.    }
  13. ?>


i wszystko działa. Nawet jeśli znajdują się dziury w numeracji. Jednak dla zdjęcia poprzedniego nie jest tak pięknie.
Niestety za każdym razem wczytują się dane od zdjęcia o id=1 niezależnie od id aktualnego zdjęcia.
Kod wygląda analogicznie do tego wyżej.
  1. <?php
  2. $numerzdjeciaw = $numerzdjecia -1;
  3.    $sql2 = "SELECT * FROM ".$galeria." WHERE id<='".$numerzdjeciaw."'";
  4.    $result2 = mysql_query($sql2);
  5.    $r2 = mysql_fetch_array($result2);
  6.    if($r2['id']>0)
  7.    {
  8.    $adresminiaturkiw = $r2['min'];
  9.    $tytulw = $r2['tytul'];
  10.    }
  11. ?>

Ma ktoś może pomysł jak to zmienić żeby działało poprawnie lub pomysł jak ominąć problem dziur w numeracji ?

Ten post edytował skete 28.11.2008, 21:09:16
Go to the top of the page
+Quote Post
legorek
post
Post #2





Grupa: Zarejestrowani
Postów: 411
Pomógł: 35
Dołączył: 27.06.2004
Skąd: Kraków

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


  1. <?php
  2. $sql3 = "SELECT * FROM ".$galeria." WHERE id>".(int) $numerzdjeciap." ORDER BY `id` DESC LIMIT 1"; // Następne
  3. $sql4 = "SELECT * FROM ".$galeria." WHERE id<".(int) $numerzdjeciap." ORDER BY `id` ASC LIMIT 1"; // Poprzednie
  4. ?>


--------------------
Go to the top of the page
+Quote Post
skete
post
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 8.03.2007

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


Niestety w tym wypadku odczytuje tylko skrajne wartości. (w obie strony)
Go to the top of the page
+Quote Post
artur_dziocha
post
Post #4





Grupa: Zarejestrowani
Postów: 320
Pomógł: 53
Dołączył: 18.09.2007
Skąd: Radom

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


Legorek
Powinno chyba być odwrotnie
ASC dla >(od najmniejszego do największego)
DESC dla mniejszego < (od największego do najmniejszego)
czyli
  1. <?php
  2. $sql3 = "SELECT * FROM ".$galeria." WHERE id>".(int) $numerzdjeciap." ORDER BY `id` ASC LIMIT 0,1"; // Następne
  3. $sql4 = "SELECT * FROM ".$galeria." WHERE id<".(int) $numerzdjeciap." ORDER BY `id` DESC LIMIT 0,1"; // Poprzednie
  4. ?>


Ten post edytował artur_dziocha 28.11.2008, 21:57:19
Go to the top of the page
+Quote Post
skete
post
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 8.03.2007

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


Działa fantastycznie winksmiley.jpg Wielkie dzięki:)
Go to the top of the page
+Quote Post
legorek
post
Post #6





Grupa: Zarejestrowani
Postów: 411
Pomógł: 35
Dołączył: 27.06.2004
Skąd: Kraków

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


Racja, mój błąd smile.gif A autor tematu jakby troszkę pomyślał to by to wykrył.


--------------------
Go to the top of the page
+Quote Post
artur_dziocha
post
Post #7





Grupa: Zarejestrowani
Postów: 320
Pomógł: 53
Dołączył: 18.09.2007
Skąd: Radom

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


ano zdarza sie i najlepszyjm:)
hehe
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 - 10:27