---
title: "Problem med redan röstat koll ?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/77857-problem-med-redan-röstat-koll"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Pellefant"
published: "2003-05-23T15:50:57.000Z"
updated: "2003-05-25T18:09:55.000Z"
replies: 2
views: 170
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/77857-problem-med-redan-röstat-koll"
---

# Problem med redan röstat koll ?

## #1 — Pellefant, 2003-05-23T15:50Z

Hej!

Försöker göra ett script som kollar om en person röstat innan, och om så är fallet så får han/hon inte göra det igen förrän 60 sekunder har gått. (För att undvika "flooding".

mySQL databastabellen består av fälten: id(int), ip(varchar), lastvote(int)

Som det är nu, så åker nya rader in i databasen hela tiden, så kollen fungerar inte. (varje ip nummer ska förekomma högst en gång)

Får inte ordnning på det riktigt, här är några frågor, där jag tror felet ligger.

```
if(mysql_affected_rows!=0){
```

Är detta tokigt för att kolla om det blivit någon träff med SELECT satsen?

```
if(($timenow-$row['lastvote'])<60){
```

Fungerar detta för att kolla om mer än 60 sekunder gått? (Värdena är ju i "unix" tid, dvs ett int värde, så det borde väl gå?)

Hela koden

```

$ip=$_SERVER['REMOTE_ADDR'];
$timenow=time();

              Databaskoppling

	$Query = "SELECT * FROM songvotecheck WHERE ip='$ip'" or die (mysql_error());
	$Result = mysql_query($Query) or die("Error: ".mysql_error()." in query: ".$Query);
	$row=mysql_fetch_array($Result);
	
	if(mysql_affected_rows!=0){
			//Träff på ip-numret i databasen
  			if(($timenow-$row['lastvote'])<60){
				//Det har inte gått 60 sekunder sedan sist detta ip försökte rösta
				echo "You have already  voted, you have to wait a while until you vote again";
			}else{
				//Det har gått mer än 60 sekunder, ip-numret får rösta
				$Query = "UPDATE songvotecheck SET lastvote='$timenow' WHERE ip='$ip'" or die (mysql_error());
				mysql_db_query ("modernidiot", $Query, $Link) or die (mysql_error());
			    $vote=1;
			}
	}
	
	elseif(mysql_affected_rows==0){
			//Ingen träff på ip numret i databasen, ip-numret får rösta
			$Query = "INSERT INTO songvotecheck(ip, lastvote) values('$ip', '$timenow')" or die (mysql_error());
			mysql_db_query ("xxxx", $Query, $Link) or die (mysql_error());
			$vote=1;
	}

	mysql_close($Link); 

if($vote==1){
Här sker röstningen, den koden funkar bra.
}
$vote=0;
```

Permalänk: https://www.webforum.nu/p/77857

## #2 — greyhound, 2003-05-23T15:58Z

Jag skulle göra så att man tar med tiden i SQL satsen då får du bara 2 fall, ett fall där personen får rösta och ett där den inte får rösta, blir lättare att jobba med då kanske.

/r Kolla på <http://se2.php.net/manual/sv/function.mysql-db-query.php>  "Not:  This function has been deprecated since PHP 4.0.6. Do not use this function. Use mysql_select_db()  and mysql_query() instead."

Permalänk: https://www.webforum.nu/p/1059606

## #3 — Pellefant, 2003-05-25T18:09Z

Fick ordning på det nu. :)

if(mysql_num_rows()!=0){

Ska vara:

if(mysql_num_rows($Result)!=0){

Tack för tipset om mysql_db_query greyhound, ska kolla upp det, då sidorna ska flyttas till en ny webhost snart.

Här är den fungerande koden, kanske kan någon ha nytta av den. :)

```
$Link = mysql_connect("localhost", "xxxx", "xxx");
	mysql_select_db("xxx", $Link);

	$ip=$_SERVER['REMOTE_ADDR'];
	$timenow=time();

	$Query = "SELECT * FROM songvotecheck WHERE ip='$ip'" or die (mysql_error());
	$Result = mysql_query($Query) or die("Error: ".mysql_error()." in query: ".$Query);
	$row=mysql_fetch_array($Result);
	

	if(mysql_num_rows($Result)!=0){
			//Träff på ip-numret i databasen
  			if(($timenow-$row['lastvote'])<60){
				//Det har inte gått 60 sekunder sedan sist detta ip försökte rösta
				echo '<p><center><b>You have just voted, you have to wait a while until you can vote again<p><A HREF="index.php">Continue</A>';
			}else{
				//Det har gått mer än 60 sekunder, ip-numret får rösta
				$Query = "UPDATE songvotecheck SET lastvote='$timenow' WHERE ip='$ip'" or die (mysql_error());
				mysql_db_query ("xxx", $Query, $Link) or die (mysql_error());
			    $vote=1;
			}
	}
	
	elseif(mysql_num_rows($Result)==0){
			//Ingen träff på ip numret i databasen, ip-numret får rösta
			$Query = "INSERT INTO songvotecheck(ip, lastvote) values('$ip', '$timenow')" or die (mysql_error());
			mysql_db_query ("xxx", $Query, $Link) or die (mysql_error());
			$vote=1;
	}

	mysql_close($Link);
```

Permalänk: https://www.webforum.nu/p/1063988

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/77857-problem-med-redan-röstat-koll
