niko Posted May 21, 2007 Report Share Posted May 21, 2007 Respektīvi, ir nosacīta apmeklētāju skaitīšanas sistēma - tiek reģistrēts laiks un IP. Ja šie lielumi sakrīt, tad otrreiz ieraksts pievienots netiek. Datuma pievienošana notiek ar NOW() (lauks ir DATE) un Ip tiek pārvērsts ar INET_ATON palīdzību. Ip iegūta ar $_SERVER['REMOTE_ADDR']. Tomēr, visā tajā slēpjas kāds bugs, jo vienā un tajā pašā dienā vairākkārtīgi IP laukā tiek pievienots ieraksts 2147483647. Pats lauks datubāzē ir noformēts kā INT. Būtu interesanti uzzināt kāpēc tā notiek? Link to comment Share on other sites More sharing options...
Delfins Posted May 21, 2007 Report Share Posted May 21, 2007 (edited) ja tu gribi unikālu lauku, tad uztaisi PrimKey/UniqKey.. un lieki nečakarējies. Edited May 21, 2007 by Delfins Link to comment Share on other sites More sharing options...
niko Posted May 21, 2007 Author Report Share Posted May 21, 2007 (edited) IP citā dienā var atkārtoties. Turklāt, tīri interesē, kāpēc tā. :) Edited May 21, 2007 by niko Link to comment Share on other sites More sharing options...
andrisp Posted May 21, 2007 Report Share Posted May 21, 2007 99% ka kods nepareizs. Iemet ieksh paste.php.lv Link to comment Share on other sites More sharing options...
niko Posted May 21, 2007 Author Report Share Posted May 21, 2007 Lūdzu, http://paste.php.lv/5565 Link to comment Share on other sites More sharing options...
andrisp Posted May 21, 2007 Report Share Posted May 21, 2007 Varbūt vēl izveido varchar lauku, kur pieglabā IP adresi, kāda tā pa īstam izskatās ? Tādā veidā varbūt kaut kas skaidrāks paliks. PS. 2147483647 ir 127.255.255.255 . Tas kaut kā neizskatās normāli. Link to comment Share on other sites More sharing options...
Delfins Posted May 21, 2007 Report Share Posted May 21, 2007 (edited) IP citā dienā var atkārtoties. Ak jēl... UNIQUE_KEY {IP,DATE} Starp citu (1), uzliec tipu laukam INT_UNSIGNED (2 lielāks cipars ielīdīs) Starp citu (2), MYSQL ir tips BIGINT, kurš glabā ciparu kā stringu.. bet perversijām programmā ar tipu konvertāciju Edited May 21, 2007 by Delfins Link to comment Share on other sites More sharing options...
bubu Posted May 21, 2007 Report Share Posted May 21, 2007 Vai tik IP nav SIGNED INT lauks? Tādējādi liekot "lielas" IP adreses >=128.0.0.0 tāds integers >=0x80000000 nelien signed tipā, tāpēc MySQL ieliek maksimālo signed intu kāds iespējams - 0x7FFFFFFF = 127.255.255.255 = 2147483647. Link to comment Share on other sites More sharing options...
niko Posted May 22, 2007 Author Report Share Posted May 22, 2007 Paldies visiem par padomiem, iepazinos gan ar signed/unsigned integeriem, gan, pēc Deflina izsauciena, ar steigu apskatīšu arī KEY`u fiškas. :) Link to comment Share on other sites More sharing options...
Recommended Posts