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.
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.
$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
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.
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?
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;
}
?>
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.
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
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.
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;
}