---
title: "Uppdatera tabell om vissa villkor uppfyllts, får det inte att funka"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/156088-uppdatera-tabell-om-vissa-villkor-uppfyllts-får-det-inte-att-funka"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "soidog"
published: "2007-01-18T05:07:59.000Z"
updated: "2007-01-19T07:15:12.000Z"
replies: 8
views: 502
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/php/156088-uppdatera-tabell-om-vissa-villkor-uppfyllts-får-det-inte-att-funka"
---

# Uppdatera tabell om vissa villkor uppfyllts, får det inte att funka

## #1 — soidog, 2007-01-18T05:07Z

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.

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

## #2 — The_Hulk, 2007-01-18T07:18Z

vad är det som inte fungerar?
ökar klick mellan varje gång?
får du något felmeddelande?
testa att skriva ut de olika variablerna och se så de stämmer.

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

## #3 — Kriko, 2007-01-18T08:55Z

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.

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

## #4 — soidog, 2007-01-18T10:54Z

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.

Variablerna stämmer, inga konstigheter där.

Hoppas att ni förstår nu.

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

## #5 — The_Hulk, 2007-01-18T11:33Z

detta ser inte rätt ut

```php
if('$klick' >= '$totala_klick'){
```

använd 

```php
if($klick >= $totala_klick){
```

samma med denna

```php
if('$totala_klick' == 'NULL'){
```

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

## #6 — soidog, 2007-01-18T14:52Z

Provade att ta bort enkelfnuttarna, men då funkade det inte. Klick ökade inte med ett, inga variabler skrivs ut heller då.

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

## #7 — Croolie, 2007-01-18T16:35Z

Funkar verkligen detta?

```
mysql_query("UPDATE test SET klick=klick+1 WHERE id = '$id'")
```

Jag skulle vilja ha det till

```
mysql_query("UPDATE test SET klick =".$klick+1."WHERE id = ".$id);
```

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

## #8 — soidog, 2007-01-18T17:34Z

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'")
```

klick ökar med ett,

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

## #9 — The_Hulk, 2007-01-19T07:15Z

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.

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

---

Tråden på webben: https://www.webforum.nu/amne/php/156088-uppdatera-tabell-om-vissa-villkor-uppfyllts-får-det-inte-att-funka
