Avatar billede cot Nybegynder
20. januar 2008 - 21:33 Der er 12 kommentarer og
1 løsning

Problem med GET

Hej
Jeg har en fil, som skal tage noget via get, og så sætte det ind en variabel, plus bruge det i en Mysql query, jeg tror problemet ligger i at jeg vil outputte GET med {}, men jeg ved ikke hva der skal sætte ind i stedet for tuborgklammerne...
Kode:
<?php
session_start();

mysql_connect("localhost", "***", "***") or die("There was an error connecting to the mysql server.");
mysql_select_db("traviannews_dk");

$username=$_SESSION['username'];
$password=$_SESSION['password'];

$result=mysql_query("SELECT * FROM brugere WHERE username='$username' AND password='$password'");
if(mysql_num_rows($result) == 0){
die("Sorry, you are no longer logged in, please login again to continue playing.");
}
else{
while($r=mysql_fetch_assoc($result)){
//This is where you would define all your resources, buildings, units, etc.
$trop1=$r['trop1'];
$sten=$r['sten'];
$trae=$r['trae'];
$metal=$r['metal'];
$korn=$r['korn'];
$stenprod=$r['stenprod'];
$traeprod=$r['traeprod'];
$kornprod=$r['kornprod'];
$metalprod=$r['metalprod'];
$psten=$r['psten'];
$ptrae=$r['ptrae'];
$pmetal=$r['pmetal'];
$pkorn=$r['pkorn'];
}
}

$sten_spent = $p{$_GET['byg']} * 1.5;
$trae_spent = $p{$_GET['byg']} * 2;
$metal_spent = $p{$_GET['byg']} * 2.5;
$korn_spent = $p{$_GET['byg']} * 1;

if($sten_spent > $sten){
echo "Sorry, this action would cost $sten_spent sten and you only have $sten sten";
}
elseif($trae_spent > $trae){
echo "Sorry, this action would cost $trae_spent and you only have $trae";
}
elseif($metal_spent > $metal){
echo "Sorry, this action would cost $metal_spent and you only have $mteal";
}
elseif($korn_spent > $korn){
echo "Sorry, this action would cost $korn_spent and you only have $korn";
}
else{

$newsten = $sten - $sten_spent;
$newtrae = $trae - $trae_spent;
$newmetal = $metal - $metal_spent;
$newkorn = $korn - $korn_spent;
$new{$_GET['byg']}prod = ${$_GET['byg']}prod + 1;
$newp{$_GET['byg']} = $p{$_GET['byg']} * 1.5;

//The above defines the new variables that will be updated shortly. They are the new values for your money, unit1 and unit2. Again, if you have more than 2 units, do the same sort of thing, but with more units.

//Now we'll run the query to update the row, and add on the new units, and take away the money
mysql_connect("localhost", "***", "***") or die("There was an error connecting to the mysql server.");
mysql_select_db("traviannews_dk");

mysql_query("UPDATE brugere SET {$_GET['byg']}prod='$new{$_GET['byg']}prod', sten='$newsten', trae='$newtrae', metal='$newmetal', korn='$newkorn', p{$_GET['byg']}='$newp{$_GET['byg']}' WHERE username='$username' AND password='$password'");

echo "Thank you, your purchases have been made, and you spend $sten_spent Sten, $trae_spent Træ, $metal_spent Metal og $korn_spent korn.";


}
?>

BTW, scriptet virker hvis jeg ikke bruger GET, men bare sætter ordet in manuelt...

På forhånd tak

//cot
Avatar billede nielle Nybegynder
20. januar 2008 - 21:53 #1
Hvad sker der når du køre skriptet? Hvordan giver fejlen sig til kende?

Hvis elleres $_GET['byg'] er e tale, så vil i hvert fald denne liunje:

$new{$_GET['byg']}prod = ${$_GET['byg']}prod + 1;

fejle. Variablenavne kan ikke begynde med et tal.
Avatar billede nielle Nybegynder
20. januar 2008 - 21:54 #2
Det må det i øvrigt heller ikke i en MySQL database.
Avatar billede cot Nybegynder
20. januar 2008 - 21:56 #3
Det er ikke et tal, den viser bare blank side... :S
Avatar billede cot Nybegynder
20. januar 2008 - 21:57 #4
det er et ord som f.eks sten
Avatar billede cot Nybegynder
20. januar 2008 - 21:58 #5
jeg har inde på mit domæne sat error messages til, så må vi se om et stykke tid hva den siger...
Avatar billede cot Nybegynder
20. januar 2008 - 22:03 #6
We got an error:

Parse error: syntax error, unexpected T_STRING in /customers/traviannews.dk/traviannews.dk/httpd.www/spil/byg.php on line 56
Avatar billede cot Nybegynder
20. januar 2008 - 22:03 #7
Det er her den er gal:
$new{$_GET['byg']}prod = ${$_GET['byg']}prod + 1;
Hva skal den ændres til?
Avatar billede nielle Nybegynder
20. januar 2008 - 22:19 #8
Det ved jeg ikke ... hvad skal den da gøre?
Avatar billede cot Nybegynder
20. januar 2008 - 22:29 #9
hvis vi nu siger at get er sten, så vil det jo svare til:

$newstenprod = $stenprod + 1;

Og det er sådan det skal fungere...

hele vejen ned, det kan også være f.eks. træ der var get, og så skulle de steder hvor jeg ksrev sten bare skiftes ud med træ...
Avatar billede nielle Nybegynder
20. januar 2008 - 22:38 #10
Jeg ville selv kode det med associative arrays i stedet for at bruge $$-notation:

$newprod["sten"] = $prod["sten"]+1;


- men for at få din linje til at virke, tror jeg at du skal gøre dette:

${'new' . $_GET['byg'] . 'prod'} = ${$_GET['byg'] . 'prod'} + 1;

alternativt sådan:

${"new$_GET['byg']prod"} = ${"$_GET['byg']prod"} + 1;
Avatar billede cot Nybegynder
21. januar 2008 - 20:32 #11
Det virker! smid et svar...
Avatar billede nielle Nybegynder
21. januar 2008 - 20:34 #12
Svar :^)
Avatar billede cot Nybegynder
21. januar 2008 - 21:20 #13
Btw se mit andet indlæg om max
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester