webForumDet fria alternativet

2 if satser

21 svar · 350 visningar · startad av Qimen

QimenMedlem sedan juni 20015 009 inlägg
#1

Hej

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

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.

MatteMedlem sedan aug. 20002 975 inlägg
#2

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?

QimenMedlem sedan juni 20015 009 inlägg
#3

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.

MatteMedlem sedan aug. 20002 975 inlägg
#4

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);
QimenMedlem sedan juni 20015 009 inlägg
#5

Matte skrev:

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

Överst på sidan har jag:

	$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

MatteMedlem sedan aug. 20002 975 inlägg
#6

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.

QimenMedlem sedan juni 20015 009 inlägg
#7

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

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?

MatteMedlem sedan aug. 20002 975 inlägg
#8

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 ?

QimenMedlem sedan juni 20015 009 inlägg
#9

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

<?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; 
 }
?>
MatteMedlem sedan aug. 20002 975 inlägg
#10

?>
<?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.

MatteMedlem sedan aug. 20002 975 inlägg
#11

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.

QimenMedlem sedan juni 20015 009 inlägg
#12

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

QimenMedlem sedan juni 20015 009 inlägg
#13

Config.php:

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

		$systemLogin = "default.php";
?>
QimenMedlem sedan juni 20015 009 inlägg
#14

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:

if ($_GET['action'] == "kop") {
MatteMedlem sedan aug. 20002 975 inlägg
#15

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.

QimenMedlem sedan juni 20015 009 inlägg
#16

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

MatteMedlem sedan aug. 20002 975 inlägg
#17

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

QimenMedlem sedan juni 20015 009 inlägg
#18

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
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;
}
MatteMedlem sedan aug. 20002 975 inlägg
#19

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") {
QimenMedlem sedan juni 20015 009 inlägg
#20

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:

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

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

135 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)