Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL] Funkcja maxid działa niepoprawnie
thomson89
post
Post #1





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Witam!
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:

  1. <?php
  2. function maxid($polaczenie, $serwer, $tabela, $nazwa = "id"){
  3.        
  4.        if($polaczenie == 'new'){
  5.            
  6.            //jak mamy otowrzyc nowe polaczenie, otwieramy je
  7.            $polaczenie = lacz($serwer);    
  8.        
  9.        }
  10.        else {
  11.            
  12.            //jak polaczenie bylo, sprawdzamy jego aktywnosc
  13.            $polaczenie = mysql_ping($polaczenie);
  14.            if(!$polaczenie)
  15.                $polaczenie = lacz($serwer);      
  16.            
  17.        }
  18.        
  19.        $numer_id = 1;
  20.        $zapytanie = "SELECT * FROM ".$tabela." WHERE ".$nazwa." = ".$numer_id;
  21.        $wynik = mysql_query($zapytanie);
  22.        $ilosc_wierszy = mysql_num_rows($wynik);
  23.        if($ilosc_wierszy < 1){
  24.            
  25.            $id = $numer_id;
  26.            return $id;
  27.        
  28.        }
  29.        else {
  30.        
  31.        
  32.            //glowne sprawdzenie maksymalnego id
  33.            while($ilosc_wierszy >= 1){
  34.                
  35.                $zapytanie = "SELECT * FROM ".$tabela." WHERE ".$nazwa." = ".$numer_id;
  36.                $wynik = mysql_query($zapytanie);
  37.                $ilosc_wierszy = mysql_num_rows($wynik);
  38.                $numer_id++;
  39.                
  40.            }
  41.            
  42.            $id = $numer_id-2;
  43.            return $id;
  44.        }
  45.        
  46.        
  47.        rozlacz($polaczenie);
  48. }
  49. ?>


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!

Ten post edytował thomson89 22.03.2009, 15:43:42
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 13:00