---
title: "Addera 1 och skicka vidare..."
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/15985-addera-1-och-skicka-vidare"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "BeaR123"
published: "2001-08-12T13:51:00.000Z"
updated: "2001-08-15T10:46:00.000Z"
replies: 12
views: 271
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/15985-addera-1-och-skicka-vidare"
---

# Addera 1 och skicka vidare...

## #1 — BeaR123, 2001-08-12T13:51Z

Tjena, jag skulle behöva lite hjälp. 

Jag har ett script som ska änvändas så här genom länkarna: 

visa.php?sida=start

och koden ser ut så här:

```
<?
if ($sida == "start")
{
	Header ("Location: start.php");
}

elseif ($sida == "start2")
{
	Header ("Location: start2.php");
}

else
{
	Header ("Location: error.php");
}
?>
```

Men jag vill lägga till en funktion, så om det blir det första altenativet "start" så ska den skicka besökaren iväg besökaren till rätt sida men även lägga till 1 i en counter fil. Så att jag sedan kan kolla statistiken på alla klicks (vilken undersida som är populärast) 

Helst ska den spara i en mySQL databas men det går bra med andra förslag oxå.

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

## #2 — FlashX, 2001-08-13T21:38Z

```
<?
if ($sida == "start")
{
$sql = "UPDATE tabellen SET fält=fält + 1 WHERE id='start'";
mysql_query("$sql");
Header ("Location: start.php");
}

elseif ($sida == "start2")
{
$sql = "UPDATE tabellen SET fält=fält + 1 WHERE id='start2'";
mysql_query("$sql");
Header ("Location: start2.php");
}

else
{
$sql = "UPDATE tabellen SET fält=fält + 1 WHERE id='else'";
mysql_query("$sql");
Header ("Location: error.php");
}
?>
```

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

## #3 — BeaR123, 2001-08-14T06:58Z

Tack så mycket, jag hade just hittat en kod jag kunde göra likadant med fast den var typ 3 gånger större... 

Tack så mycket det här behövde jag :D

En fråga bara ;

Om jag vill ha exakt så som där uppe fast tabellen ska se ut så här och ID ska 1 sen nästa 2 sen tredje 3 typ

ID   &#0124; Namn  &#0124; Visningar
1    &#0124; start &#0124; 13

och en sak till :D 
Finns det någon kod som skapar nya rows\`? alltså om t.ex. inte start (ID1) rown hade funnits nu så skulle den skapas och uppdateras med 1. ?

// Björn

\[Redigerat av BeaR123 den 14 aug 2001\]

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

## #4 — Mats95, 2001-08-14T08:08Z

```
<?
if ($sida == "start")
{
$sql_update = "UPDATE tabellen SET visningar=visningar + 1 WHERE id=1";
mysql_query("$sql");
if (mysql_affected_rows() == 0)
$sql_insert = "INSERT INTO tabellen(ID, Namn, Visningar) VALUES(1,'start',1)";
mysql_query("$sql_insert");
Header ("Location: start.php");
}
elseif ($sida == "start2")
{
$sql_update = "UPDATE tabellen SET visningar=visningar + 1 WHERE id=2";
mysql_query("$sql");
if (mysql_affected_rows() == 0)
$sql_insert = "INSERT INTO tabellen(ID, Namn, Visningar) VALUES(2,'start2',1)";
mysql_query("$sql_insert");
Header ("Location: start2.php");
}
else
{
$sql_update = "UPDATE tabellen SET visningar=visningar + 1 WHERE id=3";
mysql_query("$sql");
if (mysql_affected_rows() == 0)
$sql_insert = "INSERT INTO tabellen(ID, Namn, Visningar) VALUES(3,'error',1)";
mysql_query("$sql_insert");
Header ("Location: error.php");
}
?>
```

Borde funka, i värsta fall så händer inget alls men du kan ju skriva ut ett felmeddelande under utvecklingsfasen så du ser vad som skiter sig!

```
printf("MySQL-Error: %s", mysql_error());
```

:00 Have fun!

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

## #5 — BeaR123, 2001-08-14T08:27Z

Jag vet inte om jag e du i huvudet eller om koden inte fungerar eller om det är min uppsättning av tabellen som strular, men det fungerar inte.

Så här ser min \*.sql fil ut:

```
CREATE TABLE counter (
   id int(15) NOT NULL auto_increment,
   namn varchar(15) DEFAULT '0',
   visningar varchar(15) DEFAULT '0',
   PRIMARY KEY (id)
);
```

och sjävla scriptet ser ut så här:

```
<?
$server = "localhost";  
$databas = "xxxxxxxxx";   
$anvandare = "xxxxxx";   
$losen = "xxxxxxxxx";

mysql_connect ("$server","$anvandare","$losen");
mysql_select_db ("$databas");

if ($id == "1")
{
$sql_update = "UPDATE counter SET visningar=visningar + 1 WHERE id=1";
mysql_query("$sql");
if (mysql_affected_rows() == 0){
$sql_insert = "INSERT INTO counter(id, namn, visningar) VALUES(1,'start',1)";
mysql_query("$sql_insert"); }
	Header ("Location: internet.php");
}

elseif ($id == "2")
{
$sql_update = "UPDATE counter SET visningar=visningar + 1 WHERE id=2";
mysql_query("$sql");
if (mysql_affected_rows() == 0) {
$sql_insert = "INSERT INTO counter(id, namn, visningar) VALUES(2,'radio',1)";
mysql_query("$sql_insert"); }
	Header ("Location: internet_radio.php");
}

else
{
	Header ("Location: tempmain.php");
}
mysql_close();
?>
```

Vet någon vad som kan vara fel?

Jag vill alltså uppdatera det aktiva ID med 1 och om row:en inte finns så ska den skapa den.

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

## #6 — Mats95, 2001-08-14T10:05Z

Stora och småbokstäver e noga!! Vad får du för felmeddelande?? 

Åsså ska det va "else if", med mellanslag!!

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

## #7 — BeaR123, 2001-08-14T10:24Z

Det är just det, jag får inget felmeddelande. Den skickar bara vidare till rätt sida men den skapar eller uppdaterar inte... :(

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

## #8 — Mats95, 2001-08-14T10:29Z

Okej, eftersom du inte kan skriva ut nåt innan du skickar Header så kan du testa att göra såhär:  Header ("Location: internet.php?sqltest=".mysql_affected_rows());

Åsså kollar du va det står för värde när den nya sidan laddas, skriv likadant på alla sidor som ska laddas, bara för att kolla att det inte blir en nolla (det RIMMADE) ;)

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

## #9 — BeaR123, 2001-08-14T10:32Z

hmmm. Jag ska testa. Får se om jag fattar ;)

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

## #10 — BeaR123, 2001-08-14T10:47Z

Så här blev det: 

Ingen row uppdaterades eller skapades, sidan laddades so  vanligt och adressen blev så här:
 <http://localhost/internet.php?sqltest=-1>

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

## #11 — Mats95, 2001-08-14T11:13Z

"If the last query failed, this function will return -1."

Du borde få ett felmeddelande!

Header ("Location: internet.php?sqltest=".urlencode(mysql_error()));

Skriv sen ut det på sidorna! 
Såg att du gjort visningar till varchar(15), du måste ändra till int(11) annras vette fan hur det går med "visningar=visningar+1" ....

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

## #12 — 2bas, 2001-08-14T11:38Z

Ett helt ovidkommande inlägg bara:

varför är visningar varchar() överhuvudtaget?? Typiskt fall där integer borde vara perfekt ;)

/edit
Ojsan, det var ju det som Mats sa. Läste fel där.

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

## #13 — BeaR123, 2001-08-15T10:46Z

hehe, ok. 

Jag har precis börjat med mySQL och PHP så jag vet inte så mycket. Men jag ska testa det här. Jag återkommer :D Tack alla!

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

---

Tråden på webben: https://www.webforum.nu/amne/php/15985-addera-1-och-skicka-vidare
