Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]stronicowanie w galerii znów nie działa
Forum PHP.pl > Forum > PHP
Lejto
Mam kod stronicowania w galerii pisałem i pisałem nie działało i nie działało i w końcu zadziałało poprawnie ale nie działa na serwerze, niby takie proste stronicowanie wystarczą znaki mniejszości i równości i działa a ja musiałem się je*@$. sciana.gif sciana.gif
Ale i tak nie działa poprawnie
Kod:
  1. <?php
  2. $id = (int)$_GET['id'];
  3.  $nr = (int)$_GET['nr'];
  4.  $liczba = 2;
  5.  
  6.  $sql = mysql_query("select * from galeria_users where id = '$id'");
  7.  $row = mysql_fetch_array($sql); 
  8.  $numer = $row[numer];
  9.  
  10.  $query = ("select * from galeria_users where numer ='$numer' and dodal = '$row[dodal]'");
  11. $wynik = mysql_query($query) or die(mysql_error());
  12. $num = mysql_num_rows($wynik);
  13. $ile = ceil($num/$liczba);
  14.  
  15. if(!isset($_GET['id'])) $_GET['id'] = 0;
  16. $strona = (int)$_GET['id'];
  17.  
  18.  $sql_2 = mysql_query("select * from uzytkownik where user = '$row[dodal]'");
  19.  $row_2 = mysql_fetch_array($sql_2);
  20.  
  21.  //następne
  22. $q = mysql_query("SELECT `id` FROM `galeria_users` WHERE `id` > '$id' and dodal = '$row[dodal]' order by id asc");
  23. $wiersz = mysql_fetch_array($q);
  24.  
  25. $q1 = mysql_query("SELECT `id` FROM `galeria_users` WHERE `id` < '$id' and dodal = '$row[dodal]' order by id desc");
  26. $wiersz1 = mysql_fetch_array($q1);
  27.  //koniec
  28.  //poprzednie
  29. $zapytaj = mysql_query("select * from uzytkownik where id = '$nr'");
  30. $idk = mysql_fetch_array($zapytaj);
  31.  
  32. $quer = mysql_query("SELECT `id` FROM `galeria_users` WHERE `id` < '$id' and dodal = '$row[dodal]' order by id asc");
  33. $wiersz_2 = mysql_fetch_array($quer);
  34.  //koniec
  35.  
  36. //zapyatnie potrzebne do stronicowania
  37. $queryy = mysql_query("SELECT `id` FROM `galeria_users` WHERE `id` < '$id' and dodal = '$row[dodal]' order by id desc");
  38. $wiersz_3 = mysql_fetch_array($queryy);
  39.  
  40.  
  41. if($_GET['id'] > $wiersz_3[id]) { 
  42. echo('<span id="font"><center>
  43. <a href="foto_zoom.php?foto=pokaz&id='.($wiersz[id]).'=osoba&nr='.$row_2[id].'"><< Poprzednie |</a>');
  44.  }
  45.  
  46. if($_GET['id'] > $wiersz[id]) {
  47.  echo('<span id="font"><center><a href="foto_zoom.php?foto=pokaz&id='.($wiersz1[id]).'=osoba&nr='.$row_2[id].'">| Następne >>> </a></span></center>');
  48. }
  49. ?>

stronicowanie potrzebuje do działania (i to pobiera z bazy) numer następnego lub poprzedniego zdjęcia danego usera i numer id usera którego jest foto

nie ma rozwiązania na ten kod? czy coś źle wyjaśniłem?
cbagov
Dosc zagmatwany ten kod, dla mnie nie do przejscia.

Powiedzialbym, ze utrudniasz sobie zycie mieszajac PHP, SQL, HTML, stosujac stare znaczniki typu <center> dodatkowo wypisujac je poprzez echo, skoro chyba uzywasz CSS bo widze, ze jest jakis <span id="font">.
I jeszcze to dziwne .($wiersz1[id]).
- po co ten nawias ?
Nie widze polecenia LIMIT a za to 4 krotnie powtorzone to samo zapytanie SQL z minimalnymi zmianami, co osobiscie zamienilbym na 1 zapytanie poprzedzone wczesniej wpakowaniem alternatywnych warunkow w zmienne.
No i oczywiscie wyliczenie, na ktorej stronie jestes, czyli ktora strona jest aktualnie aktywna, jaki blok stron jest brany pod uwage wyliczasz, pakujesz w LIMIT, przechowujesz w jakiejs sesyjnej zmiennej no i najlepiej nie uzywaj czystego $_GET w warunkach.. polecam na wszystkie GET i POST zrobic sobie 1 funkcje, ktora pozwoli od razu filtrowac otrzymywane parametry.


Takze podam tu tylko moj schemat, moze cos ci ulatwi, bo analizowac twojego kodu nie mam nerw.;)

Powinienes dazyc do 1 ostatecznego sformulowania zapytania - dla konkretnej operacji - oczywiscie nie jednego dla calego kodu;)


$_sql = "SELECT $_columns FROM [DB_name.table] WHERE $_search_type $_sort_it";


// gdzie {$_search_type} to jakies warunki

$_search_type .=
" (POLE $_is_like '$_word'
OR POLE $_is_like '$_word'
AND POLE!='schowany') OR ... AND ... "; // i co tam potrzeba jeszcze

// gdzie {$_is_like} to wybrany sposob wyszukania/porownania

$_is_like = "LIKE";
// lub
$_is_like = "";

// w koncu {$_sort_it} to ustalenie ilosci i porzadku sortowania

$_sort_it = "ORDER BY [$kolumna] [$ASC|DESC] LIMIT $_lim_start,$_tmp_lim";
// lub
$_sort_it = "";




To ostatnie {$_sort_it} robi wszystko co potrzeba jesli przedtem kazdy warunek wyznaczysz a potem tylko skleisz w jedno zapytanie SQL

To schemat z mojego kodu wyciety, nie ma co kopiowac bo na pewno nie zadziala w tej formie, mam nadzieje, ze na cos ci sie przyda.
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.