Hej,
Har hållt på med detta ett par dagar, utan att få det att funka.
Har en tabell, 5 st fält, id, url, klick, aktiv samt totala_klick.
Tanken är att när antal klick blir lika med eller större än totala_klick så ska fältet aktiv sättas till en nolla.
Tyvär får jag inte till det, aktiv sätts inte till noll när klick är lika med eller större än totala_klick, så här ser koden ut.
<?php
// kollar om id är numeriskt
if(is_numeric($_GET['id'])){
//hämtar url via $_GET
$sql = mysql_query("SELECT * FROM test WHERE id = '{$_GET['id']}' LIMIT 1")
or exit(mysql_error());
while ($res = mysql_fetch_assoc($sql)) {
$url = $res['url'];
$id = $res['id'];
$klick = $res['klick'];
$totala_klick = $res['totala_klick'];
}
//kollar om totala klick är NULL, updatera klick med 1 och skicka vidare besökaren till url
if('$totala_klick' == 'NULL'){
mysql_query("UPDATE test SET klick=klick+1 WHERE id = '$id'")
or exit(mysql_error());
/*
header("location: $url");
*/
}
//kollar om klick är större eller lika med totala klick, uppdatera klick med 1, sätt ej aktiv till 0 och skicka vidare besökaren till url
if('$klick' >= '$totala_klick'){
mysql_query("UPDATE test SET klick=klick+1 WHERE id = '$id'")
or exit(mysql_error());
mysql_query("UPDATE test SET aktiv = '0' WHERE id = '$id'")
or exit(mysql_error());
/*
header("location: $url");
*/
}
}else{
//Om inget numeriskt värde finns så skickas man till index sidan
header("location; index.php");
}
?>
Har medvetet stängt av header, så att man inte skickas vidare. Det slås på när det funkar.
Någon som vad det är för fel. Koden är inte den snyggaste, men jag försöker lära mig.
Variabler ska inte ha enkelfnuttar runt sig, då tolkar parsern dem som en sträng. Med citationstecken går det dock att "baka in" variabler i en sträng utan att konkatenera, men det är ju inte aktuellt i det här fallet.
Klick ökar mellan varje gång oavsett om det är mindre, lika med eller större än totala_klick, det ska det göra. Så det funkar
Men när klick är större eller lika med totala_klick så ska aktiv uppdateras till en nolla. Ex, om klick är 99, totala_klick är 100, så ska nästa gång klick öka med 1 samt aktiv sättas till en nolla.
Croolie, provade att ändra som du vill ha det, får då följande fel, Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /home/myaccount/public_html/test.php on line 17
Croolie, detta funkar,
mysql_query("UPDATE test SET klick=klick+1 WHERE id = '$id'")
hmm, du kollar om totala_klick är lika med NULL, om det är det så ökar du klick med 1.
sen kollar du om klick är större eller lika med totala_klick och då vill du ändra aktiv till 0.
så om totala_klick är större än noll så kommer inte klick att blir större eller lika med totala_klick och därmed kommer du aldrig att sätta aktiv till 0.
ta bort fnuttarna som jag skrev i mitt tidigare meddelande och tänk efter vad du egentligen vill göra med dina if-satser.
visa oss sedan din kod igen.
249 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849