christdi Skrevet 3. desember 2004 Del Skrevet 3. desember 2004 (endret) Hei. Nedenfor har jeg et loggesystem som registrerer ipadresser, nettlesere og dato. Scriptet ekskluderer å logge ipadresser som allerede er registert. Jeg ønsker derimot at det kun skal ekskludere sist besøkte ipadresse. Tidligere registrerte ipadresser skal ikke registreres på nytt, men kun oppdateres (i forhold til besøkstidspunkt). Håper dette var forståelig. Noen som kan hjelpe med dette ? <? include("connect.php"); $ip=$_SERVER['REMOTE_ADDR']; $browser=$_SERVER['HTTP_USER_AGENT']; $date = date('r'); $ip_exists_check = "SELECT * from $table WHERE ip='$ip'"; $query=mysql_query($ip_exists_check); $check=mysql_fetch_row($query); if($check) { } else { $sql_query = "INSERT INTO $table (browser,ip,date) VALUES ('$browser','$ip','$date')"; $result = mysql_query($sql_query); } $sql_result = mysql_query("SELECT * FROM $table"); $loop = mysql_num_rows($sql_result); echo "$loop hits"; ?> Endret 4. desember 2004 av christdi Lenke til kommentar
audunr Skrevet 3. desember 2004 Del Skrevet 3. desember 2004 (endret) Slik: $sql_query = "INSERT INTO $table (browser,ip,date) VALUES ('$browser','$ip','$date') WHERE ip != '$ip'"; ? EDIT: Så ikke at du også ville oppdatere hvis IP-adressen var registrert før. Kommer tilbake! MVH Audun Endret 3. desember 2004 av audunr Lenke til kommentar
audunr Skrevet 3. desember 2004 Del Skrevet 3. desember 2004 Det du må gjøre er å kjøre en SELECT for å sjekke om IP-adressen er lagt inn før. Dersom den ikke er det, kjør en INSERT. Dersom den er det, kjør en UPDATE. Si fra om du trenger mer hjelp. MVH Audun Lenke til kommentar
christdi Skrevet 3. desember 2004 Forfatter Del Skrevet 3. desember 2004 (endret) Jeg har prøvd følgende, men datoen blir ikke oppdatert : <? include("connect.php"); $ip=$_SERVER['REMOTE_ADDR']; $browser=$_SERVER['HTTP_USER_AGENT']; $date = date('r'); $ip_exists_check = "SELECT * from $table WHERE ip='$ip'"; $query=mysql_query($ip_exists_check); $check=mysql_fetch_row($query); if($check) { $sql_update = "UPDATE $table SET browser='$browser',ip='$ip',date='$date' WHERE id='$id'"; $do_update = mysql_query($sql_update); } else { $sql_insert = "INSERT INTO $table (browser,ip,date) VALUES ('$browser','$ip','$date')"; $do_insert = mysql_query($sql_insert); } $sql_result = mysql_query("SELECT * FROM $table"); $loop = mysql_num_rows($sql_result); echo "$loop hits | "; ?> Endret 3. desember 2004 av christdi Lenke til kommentar
LoS Skrevet 3. desember 2004 Del Skrevet 3. desember 2004 ser ut som om du må bruke $check[id] og ikke $id. Forøvrig vil jeg anbefaler å bruke mysql_num_rows() til å sjekke om den henter ut noe data istedenfor bare $check. Lenke til kommentar
christdi Skrevet 3. desember 2004 Forfatter Del Skrevet 3. desember 2004 Jeg står fast. Kunne noen vise hvordan dette skal gjøres ? Lenke til kommentar
wacie Skrevet 3. desember 2004 Del Skrevet 3. desember 2004 Prøv denne: <? include("connect.php"); $ip=$_SERVER['REMOTE_ADDR']; $browser=$_SERVER['HTTP_USER_AGENT']; $date = date('r'); $ip_exists_check = "SELECT * from $table WHERE ip='$ip'"; $query=mysql_query($ip_exists_check); $check2=mysql_fetch_row($query); $check=mysql_num_rows($query); $id=$check2['id']; if($check) { $sql_update = "UPDATE $table SET browser='$browser',ip='$ip',date='$date' WHERE id='$id'"; $do_update = mysql_query($sql_update); } else { $sql_insert = "INSERT INTO $table (browser,ip,date) VALUES ('$browser','$ip','$date')"; $do_insert = mysql_query($sql_insert); } $sql_result = mysql_query("SELECT * FROM $table"); $loop = mysql_num_rows($sql_result); echo "$loop hits | "; ?> Lenke til kommentar
christdi Skrevet 3. desember 2004 Forfatter Del Skrevet 3. desember 2004 (endret) Tusen takk for alle forslag, men det fungerer desverre fremdeles ikke. Som nevnt prøver jeg med skriptet å logge alle nye ipadresser. Ipadresser som allerede finnes i tabellen skal kun oppdateres med ny dato. Ikke legges til som ny post. Endret 3. desember 2004 av christdi Lenke til kommentar
audunr Skrevet 4. desember 2004 Del Skrevet 4. desember 2004 <? include("connect.php"); $ip=$_SERVER['REMOTE_ADDR']; $browser=$_SERVER['HTTP_USER_AGENT']; $date = date('r'); $ip_exists_check = "SELECT * from $table WHERE ip='$ip'"; $query=mysql_query($ip_exists_check); $check=mysql_fetch_row($query); if(mysql_num_rows($check)) { $sql_update = "UPDATE $table SET browser='$browser',date='$date' WHERE ip='$ip'"; $do_update = mysql_query($sql_update); } else { $sql_insert = "INSERT INTO $table (browser,ip,date) VALUES ('$browser','$ip','$date')"; $do_insert = mysql_query($sql_insert); } $sql_result = mysql_query("SELECT * FROM $table"); $loop = mysql_num_rows($sql_result); echo "$loop hits | "; ?> Lenke til kommentar
jorgis Skrevet 4. desember 2004 Del Skrevet 4. desember 2004 (endret) EDIT: arf... Endret 4. desember 2004 av jorgis Lenke til kommentar
Torbjørn Skrevet 4. desember 2004 Del Skrevet 4. desember 2004 en enkel løsning på dette er vel å definere en unique index på ip-adresse (tillater bare unike ipadresser) og bruke REPLACE, og sette inn ny ip med dato. replace vil overskrive de rader som bryter med unique keys, og vil uansett sette inn seneste dato Lenke til kommentar
Torbjørn Skrevet 4. desember 2004 Del Skrevet 4. desember 2004 dvs slik: først i pypmyadmin eller mysql shell: alter table TABELLNAVN add unique index unikip(ip) sett inn riktig tabellnavn for TABELLNAVN deretter phpkoden: <? include("connect.php"); $ip=$_SERVER['REMOTE_ADDR']; $browser=$_SERVER['HTTP_USER_AGENT']; $date = date('r'); mysql_query("REPLACE into $table set ip='$ip',date='$date',browser='$browser'") or die("server did poo-poo: " . mysql_query()); $sql_result = mysql_query("SELECT * FROM $table"); $loop = mysql_num_rows($sql_result); echo "$loop hits"; ?> Lenke til kommentar
christdi Skrevet 4. desember 2004 Forfatter Del Skrevet 4. desember 2004 Takk for alle gode forslag. Jeg har derimot funnet en løsning på det. Se nedenfor : <? include("connect.php"); $ip=$_SERVER['REMOTE_ADDR']; $browser=$_SERVER['HTTP_USER_AGENT']; $date = date('Y.m.d - H:i:s'); $ip_exists_check = "SELECT * from $table WHERE ip='$ip'"; $query=mysql_query($ip_exists_check); $check=mysql_fetch_assoc($query); if($check) { $sql_update = "UPDATE $table SET browser='$browser',ip='$ip',date='$date' WHERE id='{$check[id]}'"; $do_update = mysql_query($sql_update); } else { $sql_insert = "INSERT INTO $table (browser,ip,date) VALUES ('$browser','$ip','$date')"; $do_insert = mysql_query($sql_insert); } $sql_hent_ut = mysql_query("SELECT * FROM $table"); $loop = mysql_num_rows($sql_hent_ut); echo $loop." treff"; ?> Lenke til kommentar
Torbjørn Skrevet 5. desember 2004 Del Skrevet 5. desember 2004 avslutngingsvis vil jeg være grinebiter og si at mitt forslag gir mest mening logisk sett - den overskriver hele raden uansett hva den måtte inneholde, med ny ip og alt annet. men har du noe som funker, så ok. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå