Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Szukanie wolnej wartości
Forum PHP.pl > Forum > PHP
dareckiphp
Odpadam już. Mam całkowitą pustkę i zero pomysłów na rozwiązanie tego problemu.
Muszę zrobić funkcję, która znajdzie pierwszą wolną wartości nie zajętą przez wpisane do bazy rekordy.
np:
do bazy wpisano rekordy - nazwa = 2, 3, 5
system ma znalezc najmniejszą wolną wartość czyli 1

jeśli wpisanymi rekordami będą: 1,2,3,
to znalezioną wartością powinna być liczba 4

Zrobiłem tak:
  1. <?php
  2.  
  3. $sektor_query = mysql_query (&#092;"SELECT nazwa FROM sektor ORDER BY nazwa\");
  4. $sektor_rekordow = mysql_num_rows($sektor_query);
  5.  
  6. for ($sektor_i=0; $sektor_row = mysql_fetch_array($sektor_query); $sektor_i++) { 
  7. $sektor_tab[$sektor_i]= $sektor_row[0]; 
  8. print &#092;"$sektor_tab[$sektor_i], \";
  9. // tu pięknie sobie wypisuję wszystkie zajęte rekordy
  10. }
  11.  
  12. ?>


No i powstaje problem. Poradziłem sobie ze znalezieniem wolnej wartości jeśli jest ona wcześniej niż pierwsza wpisana do bazy. Dalej bylo gorzej.
Pomóżcie
FiDO
Przede wszystkim po co Ci to? Tylko nie pisz "bo chce dodac rekord o pierwszym wolnym ID" tylko dlaczego akurat ten rekord musi byc dodany na pierwszym wolnym, a nie tak jak to robi auto_increment..?
dareckiphp
Dlatego, żeby uchronić się przed sytuacją kiedy mam stoliki o numerach 1,2 i 1928. Numery te będą służyć do identyfikacji i pisane będą na kartkach przy stolikach w restauracji. Dlaczego nie chcę dopuścić do nieromalnej sytuacji powinniście zrozumieć.
rogrog
może tak??

  1. <?php
  2.  
  3. $rekordy = Array(1, 2, 5, 8); //tablica z zajętymi rekordami
  4.  
  5. for( $i=1;; $i++ ){ //po wszystkich liczbach od 1 do nieskończoności biggrin.gif
  6.  
  7. if( not in_array ( $i, $rekordy ) ) { //jeżeli nie ma tej wartości w tablicy
  8. $pierwszy_wolny = $i; //zapisz do zmiennej
  9. break; //i przerwij pętlę
  10. }
  11.  
  12. }
  13.  
  14. ?>
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.