---
title: "2 if satser"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/76566-2-if-satser"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Qimen"
published: "2003-05-10T18:14:14.000Z"
updated: "2003-05-10T21:27:50.000Z"
replies: 21
views: 350
page: 1
pages: 2
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/76566-2-if-satser"
---

# 2 if satser

_Sida 1 av 2._

## #1 — Qimen, 2003-05-10T18:14Z

Hej

Kan man inte ha två if satser i varandra?
Försökte med: 

```php
if ($_GET['action'] == "kop") {
	$kop = "SELECT pris FROM hus where id='{$_GET['id']}'";
      $kop1 = mysql_query($kop) or die ("Kan inte läsa från databasen!");
      $kop2 = mysql_fetch_array($kop1);

if ($kop2['pris'] > $row['pixlar']) {
Header("Location: husinfo.php?fel=1"); 
exit;
}
} else {

	$kop = "SELECT * FROM hus where id='{$_GET['id']}'";
      $kop1 = mysql_query($kop) or die ("Kan inte läsa från databasen!");
      $kop2 = mysql_fetch_array($kop1);
    $sql = "...";
    mysql_query($sql);
    Header("Location: husinfo.php?klart=1"); 
	exit;
}
```

Men det funkar inte, men tar jag bort den andra if satsen så funkar den första.

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

## #2 — Matte, 2003-05-10T18:22Z

Det går alldeles utmärkt att ha en if-sats i en if-sats. 
På vilket sätt funkar det inte för dig?

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

## #3 — Qimen, 2003-05-10T19:00Z

När jag skickar iväg en querystring med ?action=kop&id=29
Så händer inget. Ända som händer är att i urlen läggs ?action=kop&id=29 till. Får dock inget fel.

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

## #4 — Matte, 2003-05-10T19:06Z

Detta är, om jag förstått rätt, if-satsen som får ditt skript att stanna:

```
if ($kop2['pris'] > $row['pixlar']) {
header("Location: husinfo.php?fel=1"); 
exit;
}
```

 
Varifrån kommer $row\['pixlar'\] ?

Vad är din felrapportering inställd på att visa?
Gör det någon skillnad om du lägger följande överst i ditt skript?

```
error_reporting(E_ALL);
```

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

## #5 — Qimen, 2003-05-10T20:07Z

> **Matte skrev:**
>
> Varifrån kommer $row\['pixlar'\] ?

Överst på sidan har jag:

```php
	$query = "SELECT * FROM user WHERE name='{$_SESSION['sess_user']}'";            
      $res = mysql_query($query) or die ("Kan inte läsa från databasen!");
      $row = mysql_fetch_array($res);
```

Så det ska väl gå att ta ett värde därifrån?

Hmmm lägger jag den koden så får jag: 

> Cannot modify header information - headers already sent

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

## #6 — Matte, 2003-05-10T20:15Z

> Cannot modify header information - headers already sent

 
Jag hade mina misstankar att det var något sådant.

Före en header får du inte skicka något till webbläsaren. Ingen HTML, ingen echo eller print. Du får inte heller ha någon tomrad eller mellanslag före den inledande PHP-taggen. Detta gäller även inkluderade filer. I inkluderade filer får man även vara uppmärksam på att det inte finns något dolt tecken (typ mellanslag eller radbrytning) efter den avslutande PHP-taggen.

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

## #7 — Qimen, 2003-05-10T20:18Z

Mm jag har läst här på wF att det ofta blir problem med det.

```php
if ($_GET['action'] == "kop") {
	$kop = "SELECT pris FROM hus where id='{$_GET['id']}'";
      $kop1 = mysql_query($kop) or die ("Kan inte läsa från databasen!");
      $kop2 = mysql_fetch_array($kop1);

if ($kop2['pris'] > $row['pixlar']) {
Header("Location: husinfo.php?fel=1"); 
exit;
}
} else {

	$kop = "SELECT * FROM hus where id='{$_GET['id']}'";
      $kop1 = mysql_query($kop) or die ("Kan inte läsa från databasen!");
      $kop2 = mysql_fetch_array($kop1);
    $sql = "Update user set husnamn = '{$kop2['sak']}' WHERE name='{$_SESSION['sess_user']}'";
    mysql_query($sql);
    Header("Location: husinfo.php?klart=1");
	exit;
}
```

Men ovanstående kod, kan man inte göra det utan att det ska bli fel?

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

## #8 — Matte, 2003-05-10T20:25Z

Det hela hänger på vad du har för kod före den du visar. I ditt felmeddelande står det på vilken rad output startade.

Kan du visa upp hela skriptet från början ?

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

## #9 — Qimen, 2003-05-10T20:32Z

Antagligen väldigt klantigt uppbygd kod men iaf så här ser det ut:

```php
<?php
session_start();
extract($_REQUEST);
error_reporting(E_ALL);

// Kolla om inloggad = sessionen satt 
if (!isset($_SESSION['sess_user'])){ 
  header("Location: ../default.php"); 
  exit; 
} 
	extract($_REQUEST);
	include("../include/config.php");
	
	$name = $_SESSION['sess_user'];
	
	$query = "SELECT * FROM user WHERE name='{$_SESSION['sess_user']}'";            
      $res = mysql_query($query) or die ("Kan inte läsa från databasen!");
      $row = mysql_fetch_array($res);
      
	$query1 = "SELECT * FROM TID";
      $res1 = mysql_query($query1) or die ("Kan inte läsa från databasen!");
      $row1 = mysql_fetch_array($res1);

	$sak = "SELECT * FROM hus order by pris";
      $sak1 = mysql_query($sak) or die ("Kan inte läsa från databasen!");
      $sak2 = mysql_fetch_array($res1);
      
	  $query_idag = "SELECT COUNT(*) FROM user";
	  $result_idag = mysql_query($query_idag);

	  $query_online = "SELECT COUNT(*) FROM user where online = 'Ja'";
	  $result_online = mysql_query($query_online);
	  
?>
<?php
if ($_GET['action'] == "kop") {
	$kop = "SELECT pris FROM hus where id='{$_GET['id']}'";
      $kop1 = mysql_query($kop) or die ("Kan inte läsa från databasen!");
      $kop2 = mysql_fetch_array($kop1);

if ($kop2['pris'] > $row['pixlar']) {
Header("Location: husinfo.php?fel=1"); 
exit;
}
} else {
$kop = "SELECT * FROM hus where id='{$_GET['id']}'";
      $kop1 = mysql_query($kop) or die ("Kan inte läsa från databasen!");
      $kop2 = mysql_fetch_array($kop1);
    $sql = "Update user set husnamn = '{$kop2['sak']}', yta = '{$kop2['yta']}', hus = '{$kop2['bild']}', bostadshyra = '{$kop2['hyra']}', respekthus = '{$kop2['respekt']}', '{$kop2['hyra']}', pixlar = pixlar - '{$kop2['pixlar']}' WHERE name='{$_SESSION['sess_user']}'";
    mysql_query($sql);
    Header("Location: husinfo.php?klart=1");
	exit;
}

if ($_GET['action'] == "fattig") {
	$kop = "SELECT * FROM hus where id='{$_GET['id']}'";
      $kop1 = mysql_query($kop) or die ("Kan inte läsa från databasen!");
      $kop2 = mysql_fetch_array($kop1);

    $sql = "Update user set husnamn = 'Fattighuset', yta = '15', hus = 'parken', bostadshyra = '0', respekthus = '0', respekt = respekt - '15' where where name='{$_SESSION['sess_user']}'";
    mysql_query($sql);
    
Header("Location: husinfo.php?fel=2"); 
exit; 
 }
?>
```

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

## #10 — Matte, 2003-05-10T20:35Z

> ?\>
> \<?php

 
Här har du en radbrytning, utanför PHP-taggarna, som skickar en output till webbläsaren. Tag bort de två raderna och försök igen.

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

## #11 — Matte, 2003-05-10T20:37Z

> include("../include/config.php");

 
Du kan även ta en titt i filen config.php så du inte har ett mellanslag eller radbrytning utanför PHP-taggarna, varken på den i början eller slutet.

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

## #12 — Qimen, 2003-05-10T20:38Z

Humm hjälpte inte, men jag har ju inkluderat en fil och den har \<?php och ?\>, jag provade ta bort dem men då skriver den ut alla texten från include filen. :l

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

## #13 — Qimen, 2003-05-10T20:42Z

Config.php:

```php
<?php
		$link = mysql_pconnect("localhost","","") or die ("Kan inte ansluta till databasen!");
		mysql_select_db("pixelworld", $link);
		    
	   /********************************************
		* Setup variables                          *
		********************************************/

		$systemLogin = "default.php";
?>
```

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

## #14 — Qimen, 2003-05-10T20:46Z

> Notice: Undefined index: action in d:\\wwwroot\\game\\secure\\husinfo.php on line 43
> 
> Warning: Cannot modify header information - headers already sent by (output started at d:\\wwwroot\\game\\secure\\husinfo.php:43) in d:\\wwwroot\\game\\secure\\husinfo.php on line 58

rad 43:

```php
if ($_GET['action'] == "kop") {
```

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

## #15 — Matte, 2003-05-10T20:46Z

Till att börja med; du har tagit bort:

```
?> 
<?php
```

 ?
Alltså precis före

```
if ($_GET['action'] == "kop") {
```

Sen ska PHP-taggarna vara kvar i config.php, men du ska se till så att du inte har något före eller efter dom. Före är lätt, det ser du med en gång. För att vara säker på att du inte har något efter så sätt markören direkt efter (på samma rad) den avslutande PHP-taggen och tryck upprepade gånger på delete tills du är säker på att där inte finns något.

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

## #16 — Qimen, 2003-05-10T20:48Z

Har tagit bort dem och har kollat include filen också.

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

## #17 — Matte, 2003-05-10T20:50Z

Och hur lyder hela ditt felmeddelande nu? (inklusive radnummer)

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

## #18 — Qimen, 2003-05-10T20:55Z

> Notice: Undefined index: action in d:\\wwwroot\\game\\secure\\husinfo.php on line 34
> 
> Warning: Cannot modify header information - headers already sent by (output started at d:\\wwwroot\\game\\secure\\husinfo.php:34) in d:\\wwwroot\\game\\secure\\husinfo.php on line 49

Uppdaterad kod:

```php
<?php
session_start();
extract($_REQUEST);
error_reporting(E_ALL);

// Kolla om inloggad = sessionen satt 
if (!isset($_SESSION['sess_user'])){ 
  header("Location: ../default.php"); 
  exit; 
} 
	extract($_REQUEST);
	include("../include/config.php");
	
	$name = $_SESSION['sess_user'];
	
	$query = "SELECT * FROM user WHERE name='{$_SESSION['sess_user']}'";            
      $res = mysql_query($query) or die ("Kan inte läsa från databasen!");
      $row = mysql_fetch_array($res);
      
	$query1 = "SELECT * FROM TID";
      $res1 = mysql_query($query1) or die ("Kan inte läsa från databasen!");
      $row1 = mysql_fetch_array($res1);

	$sak = "SELECT * FROM hus order by pris";
      $sak1 = mysql_query($sak) or die ("Kan inte läsa från databasen!");
      $sak2 = mysql_fetch_array($res1);
      
	  $query_idag = "SELECT COUNT(*) FROM user";
	  $result_idag = mysql_query($query_idag);

	  $query_online = "SELECT COUNT(*) FROM user where online = 'Ja'";
	  $result_online = mysql_query($query_online);
	  
if ($_GET['action'] == "kop") {
	$kop = "SELECT pris FROM hus where id='{$_GET['id']}'";
      $kop1 = mysql_query($kop) or die ("Kan inte läsa från databasen!");
      $kop2 = mysql_fetch_array($kop1);

if ($kop2['pris'] > $row['pixlar']) {
Header("Location: husinfo.php?fel=1"); 
exit;
}
} else {
$kop = "SELECT * FROM hus where id='{$_GET['id']}'";
      $kop1 = mysql_query($kop) or die ("Kan inte läsa från databasen!");
      $kop2 = mysql_fetch_array($kop1);
    $sql = "Update user set husnamn = '{$kop2['sak']}', yta = '{$kop2['yta']}', hus = '{$kop2['bild']}', bostadshyra = '{$kop2['hyra']}', respekthus = '{$kop2['respekt']}', '{$kop2['hyra']}', pixlar = pixlar - '{$kop2['pixlar']}' WHERE name='{$_SESSION['sess_user']}'";
    mysql_query($sql);
    Header("Location: husinfo.php?klart=1");
	exit;
}
```

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

## #19 — Matte, 2003-05-10T21:07Z

Ditt felmeddelande säger att du inte har någon 'action' i din QUERYSTRING i filen husinfo.php.

Är detta koden för filen husinfo.php ?

I såfall är jag inte riktigt säker på vad du försöker göra eftersom du varken tar hand om variabeln $\_GET\['fel'\] eller $\_GET\['klart'\].

Ditt header-felmeddelande beror på ditt tidigare felmeddelande om undefined index.

I vilket fall bör du byta ut 

```
if ($_GET['action'] == "kop") {
```

 
mot

```
if (isset($_GET['action']) && $_GET['action'] == "kop") {
```

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

## #20 — Qimen, 2003-05-10T21:11Z

ok. det stämmer nog eftersom när man först kommer tillsidan så har den inga querystring värden, nu när jag ändra det så får jag:

> Notice: Undefined index: id in d:\\wwwroot\\game\\secure\\husinfo.php on line 44

 Felet ligger i: 

```php
$kop = "SELECT * FROM hus where id='{$_GET['id']}'";
```

 Det är väll samma där med att det inte har något värde.

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

---

Tråden på webben: https://www.webforum.nu/amne/php/76566-2-if-satser  
Nästa sida: https://www.webforum.nu/amne/php/76566-2-if-satser/page2.md
