Avatar billede Milla-Tigerdyr Praktikant
22. september 2011 - 14:10 Der er 11 kommentarer og
1 løsning

Få den til at give pengene.

Jeg har gjort sådan at man kan sælge sin hest til hestehandleren, det virker næsten, bortset fra at man ikke får nogen penge for hesten?:s

<?
session_start();
include("functions.php");
error_reporting(E_ALL);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<link href="style.css" rel="stylesheet" type="text/css">
<?
$userid = $_SESSION['userid'];
if(!is_numeric($userid)) { die('Af sikkerhedsmæssige årsager er siden stoppet i at loade. Kontakt webmaster hvis fejlen fortsætte'); exit(); }

$host="localhost"; // Host name
$username="users_camilla"; // Mysql username
$password=""; // Mysql password er udfyldt
$db_name="users_camilla"; // Database name
// Connect to server and select database.

mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

$id = $_GET['id'];
$bruger = $_GET['bruger'];
$pris = $_GET['pris'];

$sql="UPDATE heste SET ejer='Nemo' WHERE id='$id'";
$result=mysql_query($sql);

$sql2="UPDATE members SET konto = konto + " . $pris . " WHERE myusername='$bruger'";
$result2=mysql_query($sql2);

if($result && $result2){
echo "Hesten er nu solgt, og overført til Nemo!";
echo "<BR>";
}

else {
echo mysql_error();
}

?>
Avatar billede kjeldsted Novice
22. september 2011 - 14:20 #1
Hvorfor får du de oplysninger fra en get?
Avatar billede Milla-Tigerdyr Praktikant
22. september 2011 - 14:23 #2
Fordi de kommer fra den forrige side :)
Avatar billede fckmax Nybegynder
22. september 2011 - 14:41 #3
prøv om det ikke hjælper at lægge $pris sammen med den værdi der står i konto, og så bagefter indsæt summen i din $sql2. Det ser nemlig umiddelbart ud som om du bare lægger strenge sammen..
Avatar billede JensPeterSvensson Nybegynder
22. september 2011 - 14:42 #4
bruger indikere at du må have et login system.

Du kan gemme bruger i session.

Du bør højest sende hestens id i gennem links

Når du sender begge kan du have et link, som f.eks.

side.php?hestid=1&pris=1000

Men en nogenlunde fornuftig bruger kan jo kopier linket og rette det til:
side.php?hestid=1&pris=0

Og dermed købe en hest til 1000kr for 0kr
22. september 2011 - 14:44 #5
Milla, tør vi prøve igen?  Vi har haft nogen meget lange udvekslinger, hvoraf nogen endnu ikke er afsluttede. 

Men:  Jeg  forstår problemet er, at members.konto ikke bliver forøget med indholdet i variabelen $pris.  En mulig årsag er, at der rent faktisk ikke står noget i $pris, uanset hvor meget det burde være kommet fra en tidligere side.    Det vil kun tage ti minutter at foretage den følgende test:

Efter koden:

$id = $_GET['id'];
$bruger = $_GET['bruger'];
$pris = $_GET['pris'];

indsæt:

echo "id = $id <br>";
echo "bruger = $bruger <br>";
echo "pris = $pris <br>";

Når disse echos giver de værdier du forventer, så ved du, at du skal lede efter fejlen et andet sted.
Avatar billede Milla-Tigerdyr Praktikant
22. september 2011 - 14:51 #6
Christian, ja den giver rigtig ID og rigtig bruger, men tom pris..det er nok der problemet er så :S
22. september 2011 - 14:58 #7
Jamen så virker den kode du viser jo perfekt.  Den lægger prisen til, men fordi prisen er tom er værdien uforandret derefter. 

Så du er kommet videre i problemet.  Hvorfor er prisen tom?  Prøv at vis den kode, fra den tidligere side, der skulle have resulteret i en ikke-tom pris.
Avatar billede Milla-Tigerdyr Praktikant
22. september 2011 - 15:10 #8
Jeg har fået løst det nu, havde lavet en dum fejl i den anden fil :D
22. september 2011 - 15:41 #9
Problemet løst, godt.  Så kan tråden vel lukkes?  Hvis mit indlæg var til hjælp, så er her et svar til at accepter.  Hvis mit indlæg var irrelevant, så opretter du vel selv et svar til at acceptere og lukke?
22. september 2011 - 15:42 #10
Men generelt, noget af det første jeg selv gør i sådanne tilfælde er at echoe variable ud for at dobbelchecke, at de har det forventede og påkrævede indhold.
Avatar billede kjeldsted Novice
22. september 2011 - 15:50 #11
Grunden til at jeg spurgte om hvorfor de bliver hevet ind via en GET er som der bliver pointeret i #4, at så har man faktisk frihed til meget nemt selv at bestemme prisen. Nu ved jeg jo ikke hvorfra prisen kommer. Om det er et input, eller fra MySQL'en. Men egentlig bør den slags, slet ikke overføres via. GET/POST (og SLET IKKE GET!), da man simpelt nok kan ændre i de oplysninger. Specielt i GET.

Og lyt til et godt råd i #10!!!!!!!! Et af de vigtigste trin i debug (/fejlfinding) af programmering.
Avatar billede olebole Juniormester
22. september 2011 - 20:07 #12
<ole>

var_dump er ritig god til den slags:


<?php
var_dump('$_POST');

// osv - osv - osv



/mvh
</bole>
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



IT-JOB