Lejto
19.04.2008, 13:53:50
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*@$.
Ale i tak nie działa poprawnie
Kod:
<?php
$id = (int)$_GET['id'];
$nr = (int)$_GET['nr'];
$liczba = 2;
$sql = mysql_query("select * from galeria_users where id = '$id'"); $numer = $row[numer];
$query = ("select * from galeria_users where numer ='$numer' and dodal = '$row[dodal]'");
$ile = ceil($num/$liczba);
if(!isset($_GET['id'])) $_GET['id'] = 0; $strona = (int)$_GET['id'];
$sql_2 = mysql_query("select * from uzytkownik where user = '$row[dodal]'");
//następne
$q = mysql_query("SELECT `id` FROM `galeria_users` WHERE `id` > '$id' and dodal = '$row[dodal]' order by id asc");
$q1 = mysql_query("SELECT `id` FROM `galeria_users` WHERE `id` < '$id' and dodal = '$row[dodal]' order by id desc"); //koniec
//poprzednie
$zapytaj = mysql_query("select * from uzytkownik where id = '$nr'");
$quer = mysql_query("SELECT `id` FROM `galeria_users` WHERE `id` < '$id' and dodal = '$row[dodal]' order by id asc"); //koniec
//zapyatnie potrzebne do stronicowania
$queryy = mysql_query("SELECT `id` FROM `galeria_users` WHERE `id` < '$id' and dodal = '$row[dodal]' order by id desc");
if($_GET['id'] > $wiersz_3[id]) {
echo('<span id="font"><center> <a href="foto_zoom.php?foto=pokaz&id='.($wiersz[id]).'=osoba&nr='.$row_2[id].'"><< Poprzednie |</a>');
}
if($_GET['id'] > $wiersz[id]) {
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>'); }
?>
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
19.04.2008, 16:16:07
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.