Witam serdecznie!
Od jakiegoś czasu męczę się z skryptem edycji rekordów z bazy MySQL.
System sam w sobie działa ale... o dziwo nie dla rekordów dla których w założeniu powinien.
Sprawdzałem zmienne podczas wykonywania skryptu i otrzymałem taki wynik:

-> dla id = 100 (żeby było śmieszniej załóżmy, że takiego id w bazie danych NIE MA) wyświetla rekordy o id = 251 - 300 a jako punkt początkowy ($start_id) przyjmuje id = 51 (również NIE MA ale punkt przyjął prawidłowo, gdyż zakres wyświetlanych rekordów ma wynosić 50 - począwszy od "$id - 50" do "$id").
-> dla id = 100 powinien wyświetlać rekordy 51,52,53,54,55,..,98,99,100. What the fuck!?

Nie wiem o co w tym wszystkim chodzi... skrypt wykonuje się prawidłowo ale gdy skasuje z bazy 50 rekordów należących do jednej grupy (posiadające tę samą wartość w danej kolumnie) to pozostałe szlag trafia.. :/

Zamieszczam fragment skryptu odpowiedzialny za ten incydent:
  1. $id = $connect->real_escape_string(trim($_GET['id']));
  2. $Data_Query = $connect->query("SELECT * FROM `replacements` WHERE `id` = '$id'");
  3. $Data_Assoc = $Data_Query->fetch_array(MYSQLI_NUM);
  4. $Data = $Data_Assoc[8];
  5. $start_id = $id - 50;
  6. echo $start_id;
  7. $Query = $connect->query("SELECT * FROM `replacements` ORDER BY `id` ASC LIMIT $start_id,50");
  8. $x = 1;
  9. while ($r = $Query->fetch_array(MYSQLI_NUM)) {
  10. $Display .= "<td><p class=\"NO\"><input name=\"Line_2_".$x."\" type=\"text\" value=\"".$r[2]."\" /></p></td>";
  11. $x++;
  12. }

Z góry dzięki za wszelką pomoc smile.gif
Pozdrawiam!

P.S.
Dodam jeszcze, że data `wyciągana` jest prawidłowo smile.gif jedyne co nie hasa to dalsza część skryptu (od definiowania zmiennej $start_id)

____________________________________________________________________

EDIT!!!

Zrozumiałem wreszcie swój problem i sądzę, że polega on na...
1. jeśli w bazie danych są rekordy mające id 151 - 200 && 251 - 300 (czyli dwa bloki po 50 rekordów)
2. to przyjmując $start_id = $id - 50 (gdzie $id = 50) wychodzi nam 0
3. podstawiając wynik do zapytania otrzymamy:
  1. $Query = $connect->query("SELECT * FROM `replacements` ORDER BY `id` ASC LIMIT 0,50");

4. dlatego tak naprawdę wylosuje mi z bazy pierwsze 50 rekordów - niezależnie od id jakim się zaczyna... w tym wypadku 151 będzie numerem 1 tak więc wyświetli się 151 - 200

Pytanie do Was i liczę, ze ktoś mi wreszcie pomoże sad.gif
W jaki sposób mogę przyjmować LIMIT x,50 tak by x nie był liczony jako `któryś tam` rekord w bazie - w rzeczywistości - tylko wyszukiwał po identyfikatorze (id). ?

____________________________________________________________________

ROZWIĄZANIE!!!

Zbieg okoliczności, że tak szybko to rozwiązałem. Zapomniałem totalnie o klauzurze `HAVING` biggrin.gif
Wystarczyło ograniczyć rekordy poprzez id a LIMIT zmienić na 50 smile.gif
Cała filozofia...

Pozdrawiam; może ktoś będzie miał kiedyś identyczny problem.