Natchniony, szybko napisałem sobie funkcję, która sprawdza (bynajmniej powinna) sprawdzić jakie jest największe id. Po kilku poprawkach parse errorów zobaczyłem ze funkcja działa. Niestety: podaje id o 2 większe niz jest maksymalne i nie wiem dlaczego. Np. w tabeli mamy 7 rekordów, a wd. funkcji jest ich 9. Na szczęście po kilku próbach zobaczyłem że jest to regularne. Dodałem id-2 i funkcja działa poprawnie.
Po kilku męczących chwilach doszedłem do wniosku ze nie wiem czym jest to spowodowane. Dlatego, proszę o pomoc:
<?php function maxid($polaczenie, $serwer, $tabela, $nazwa = "id"){ if($polaczenie == 'new'){ //jak mamy otowrzyc nowe polaczenie, otwieramy je $polaczenie = lacz($serwer); } else { //jak polaczenie bylo, sprawdzamy jego aktywnosc $polaczenie = mysql_ping($polaczenie); if(!$polaczenie) $polaczenie = lacz($serwer); } $numer_id = 1; $zapytanie = "SELECT * FROM ".$tabela." WHERE ".$nazwa." = ".$numer_id; if($ilosc_wierszy < 1){ $id = $numer_id; return $id; } else { //glowne sprawdzenie maksymalnego id while($ilosc_wierszy >= 1){ $zapytanie = "SELECT * FROM ".$tabela." WHERE ".$nazwa." = ".$numer_id; $numer_id++; } $id = $numer_id-2; return $id; } rozlacz($polaczenie); } ?>
Funckja korzysta z moich funkcji lacz() i rozlacz(). Lacz() ma duzo parametrów opcjonalnych, a tutaj wykorzystuję tylko zmienną do laczenia sie z odpowiednim serwerem. rozlacz() to po prostu mysql_close(). Na sam koniec przed return dałem -2.
Pozdrawiam!