Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL] sekwencyjna numeracja pol wybranych rekordow
Forum PHP.pl > Forum > Przedszkole
PiXel2.0
Czy mozliwe jest ponumerowanie konkretnych pol wybranych rekordow tabeli questionmark.gif

Mam taka tabele w ktorej przechowuje indywidualne dzialy uzytkownikow:

+-----------+
| user_dirs |
+-----------+
| dir_id |
| dir_name |
| user_id |
| sequence |
+-----------+

Do pobierania dzialow uzytkownika uzywam zapytania:
  1. SELECT * FROM user_dirs WHERE user_id = {$user_id} ORDER BY sequence;

sequence oznacza kolejnosc wyswietlania dzialow i przy tworzeniu nowego dzialu do pola sequence zapisywana jest liczba juz istniejacych dzialow uzytkownika dla ktorego dzial jest tworzony.

Problem polega na tym, ze gdy uzytkownik usunie dzial to w sequence pojawia sie luka.
Istnieje tez opcja zmiany kolejnosci wiec nie moze byc zadnych brakujacych numerow w sequence.

ProbleM rozwiazywaloby zapytanie numerujace pole sequence w rekordach danego uzytkownika.

Czy mozna to zrobic w jednym zapytaniu SQL questionmark.gif

Jesli nie to chyba bede musial zrobic to tak po stronie PHP:
  1. <?php
  2. $result = mysql_query("SELECT dir_id FROM user_dirs WHERE user_id = {$user_id} ORDER BY sequence");
  3. for($i = 0; $row = mysql_fetch_num($result); $i++)
  4. mysql_query("UPDATE user_dirs SET sequence = {$i} WHERE dir_id = {$row[0]}");
  5. ?>

Ale to chyba nie jest zalecane...
AxZx
jak bedziesz usuwal rekord to to odrazu zmieniaj wartosc sequence w pozostalych rekordach
czyli to by bylo cos jak
update ... where sequence > {$sequence_usuwanego_redkordu}
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.