Just nu i M3-nätverket
Gå till innehåll
Rannip

IF-stats i SQL-fråga

Rekommendera Poster

Jag håller på att göra en besökräknare för unika besökare men jag har problem med en SQL-fråga. Jag vill att den ska lägga till 1+ om man inte har varit inne på sidan innan. Så här ser koden ut nu:

 

mysql_query("UPDATE spel SET klick = klick + 1 WHERE id = '$rad->id' IF (spelraknare WHERE ip = '$ip' AND id = '$rad->id') NOT EXISTS");

mysql_query("INSERT INTO spelraknare VALUES ('$ip', '$rad->id') IF NOT EXISTS");

 

 

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Jag tror att du måste göra en query som kontrollerar om användaren varit inne först och sedan antingen göra en INSERT eller UPDATE query, tyvärr.

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Jag gjorde en if-stats som såg ut så här:

 

$check = mysql_query("SELECT * FROM spelraknare WHERE ip = '$ip' AND id = '$rad->id'")

 

if (!isset($ceck))

{

mysql_query("UPDATE spel SET klick = klick + 1 WHERE id = '$rad->id'");

mysql_query("INSERT INTO spelraknare VALUES ('$ip', '$rad->id') IF NOT EXISTS");

}

 

Men den funkade inte. När jag skrev:

print($check);

 

Så kom det upp något med Resource 1# 1 eller något.

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Rannip, $check är ju likamed en hög med allt som SQL-raden returnerar. (Även om det bara returnerar ett värde så är den fortfarande i "högen".)

 

Ett exempel på hur du kan skriva ut resultaten:

 

if($res){
if(mysql_num_rows($res) < 1){
 print "Inga resultat";
}
else{
 while($data=mysql_fetch_array($res)){
  print $data[0]."<br>";
 }
}
}

 

[inlägget ändrat 2008-02-12 17:48:50 av pelleabc]

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Jag ändrade koden så den ser ut så här:

 

$ip = $_SERVER['REMOTE_ADDR'];

$check = mysql_query("SELECT ip, id FROM spelraknare WHERE ip = '$ip' AND id = '$rad->id'");

$num = mysql_num_rows($check);

echo $num;

if ($num == "0 ")

{

mysql_query("UPDATE spel SET klick = klick + 1 WHERE id = '$rad->id'");

mysql_query("INSERT INTO spelraknare VALUES ('$ip', '$rad->id')");

}

 

Men jag kan inte använda variabler i $check, hur ska jag göra?

 

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Vet i såna fall inte vad felet kan vara... Det är säkert nån enkel tabbe som du kommer bli sååå glad över när du hittar den. ;)

 

Men har du tänkt på att många har dynamiskt IP-nummer?

 

Det är kanske bättre om varje besökare får en framslumpad sträng som sparas i en kaka på ett eller annat sätt, och som även sparas i databasen. Och så kollar du först om besökaren har en sådan kaka, och har han/hon inte det så tar du reda på IP-numret m.h.a. "$_SERVER['REMOTE_ADDR']".

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Lätt om man förstår stored procedures

 

 

CREATE PROCEDURE foo(in pId bigint(20), in pIp varchar(16))

BEGIN

declare nCount bigint default 0;

UPDATE spel SET klick = klick + 1 WHERE id = pId;

SELECT count(*) into nCount FROM spelraknare WHERE id = pId AND ip = pIp;

IF nCount = 0 THEN

INSERT INTO spelraknare VALUES (pIp, pId);

END IF;

END

 

 

från klienten anropar du ba

 

call foo($rad->id,$ip);

 

[inlägget ändrat 2008-06-16 15:06:12 av Phenomen]

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu



×
×
  • Skapa nytt...