Avatar billede krischjo Nybegynder
14. juli 2011 - 13:12 Der er 8 kommentarer og
1 løsning

Tjek om en værdi allerede findes i en database

Hej,

jeg har flere gange haft brug for at kunne tjekke om en værdi allerede findes i en database. F.eks. da jeg ville lave en besøgelsestæller på siden.

Der ville jeg gerne tjekke om ipen allerede fandtes i databasen, hvis ikke - skulle den tilføjes. Men jeg ved ikke hvordan man gør - nogen der kan hjælpe?
Avatar billede Michael Johansen Nybegynder
14. juli 2011 - 13:33 #1
Det kommer jo an på så meget. Er det en SQL-baseret database?

select count(*) from tabelnavn where ip = 'xxx.xxx.xxx.xxx'

Erstat tabelnavn med det rigtige navn på din tabel og ip til det rigtige navn på feltet med Ip-adressen.

Dette vil altid returnere et tal. Er tallet 0 findes der ikke nogen række med den IP-adresse.
Avatar billede krischjo Nybegynder
14. juli 2011 - 13:57 #2
Havde den forståelse at det var mærkeligt at bruge alt andet end mysql med php?

Og tror ikke helt jeg forstår hvordan jeg skal bruge det i praksis.
Avatar billede j3ppah Novice
14. juli 2011 - 14:31 #3
Øhhh... Det er jo et ganske almindeligt SQL kald han har skrevet?... Du skal vel bruge det som en query til at trække det ud af databasen...

du skal have en variabel der indeholder ip'en.

fx.

String IP

select count(*) from "tabel" where ip = " + IP

Denne vil tjekke hvor mange gange der er et felt med IP i databasen hvor string IP står i IP db feltet.

Er IP'en der ikke vil den retunere 0

Hvilket vil dige du skal have et insert kald efterfølgende, i en if sætning eller lignende..

int eksistere
string ip

eksistere = select count(*) from "tabel" where ip = " + IP
if (eksistere == 0)
{
try{
insert into "bla bla bla"}
catch{bla}
}
Avatar billede webweaver Praktikant
14. juli 2011 - 16:08 #4
Fået det til at virke? Det er meget simpelt i virkeligheden.
Lige for at give et fuldt eksempel på den løsning du søger:

<?php

$ip = $_SERVER["REMOTE_ADDR"]; // IP'en der skal søges efter her ...

$count = mysql_query("SELECT COUNT(*) FROM table WHERE ip = '$ip'") or die(mysql_error());

if (!mysql_result($count,0)) {
mysql_query("INSERT INTO table (ip) VALUES ('$ip')") or die(mysql-error());
}

?>
Avatar billede showsource Seniormester
14. juli 2011 - 20:08 #5
$sql = "INSERT INTO tabelnavn (ip,hits) VALUES ('".$_SERVER["REMOTE_ADDR"]."',1) ON DUPLICATE KEY UPDATE hits=hits+1";

mysql_query($sql) or die (mysql_error());
Avatar billede showsource Seniormester
14. juli 2011 - 20:09 #6
ehh, kræver så at feltet med ipadresse er UNIQUE !!!
Avatar billede krischjo Nybegynder
14. juli 2011 - 20:12 #7
Hej,

Nej har stadigvæk problemer. Den sætter stadig den samme ip ind flere gange :(

Hvad skal "ip" egentlig være for en type i mysql?
Avatar billede krischjo Nybegynder
14. juli 2011 - 20:20 #8
Fik det til at virke.

Skulle bare ændre ip til text istedet for int i mysql ^^

webweaver lig et svar :p
Avatar billede webweaver Praktikant
14. juli 2011 - 20:31 #9
Det var godt, at du fik det til at virke :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester