Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  9 998
Kjenner jeg blir helt gal av et stykke kode som rett og slett ikke vil oppføre seg.

Kode

$sumrente = 270;
$skatt = 200;

$regnskap = $sumrente."-".$skatt;

mysql_query("UPDATE brukere SET regnskap=$regnskap WHERE brukernavn = '".mysql_real_escape_string($brukernavn)."'");
Man skulle tro "270-200" ble satt inn i databasen min, men så snill er ikke PHP. Man skulle i alle fall tro matten ble gjort riktig, slik at den satt inn "70" i databasen, men det skjer heller ikke. "-70" står regnskap som når jeg ser etter i databasen. Aner ikke hvorfor det skjer, og satser på at Freakforum kan hindre koden min i å være helt matematisk og slem.
$sumrente og $skatt er integers, men $regnskap blir en string, altså castes $sumrente og $skatt til strings før de slås sammen med "-". Resultatet blir da stringen "270-200". Akkurat hva du prøver å få til skjønner jeg ikke helt, men du kan vel forklare resultatet ditt og hva du forventet?
Hvilken datatype er kolonnen? Grunnen til at du ikke får helt forventet resultat er trolig fordi du ikke har skrevet spørringen din som om det er en tekst som du skal ha inn.

Kode

mysql_query("UPDATE brukere SET regnskap='$regnskap' WHERE brukernavn = '".mysql_real_escape_string($brukernavn)."'");
Spørsmålet er om det er teksten "270-200" du ønsker å ha inn i databasen din, eller resultatet av 270-200?
Sist endret av m0b; 9. august 2010 kl. 21:09.
Trigonoceps occipita
vidarlo's Avatar
Donor
Hint: int concenated med string concenated med int.

Lær syntax i språket i det minste.
Sitat av Dyret Vis innlegg
Akkurat hva du prøver å få til skjønner jeg ikke helt, men du kan vel forklare resultatet ditt og hva du forventet?
Vis hele sitatet...
Resultatet skal bli "270-200", men det blir "-70". Poenget er egentlig at teksten fra databasen senere explodes på en annen side, og bindestreken brukes for å skille mellom elementene.

EDIT: Den såkalte |d13m0b hadde løsningen. Det var SQL-spørringen som tok saken i egne hender og begynte å gjøre egne regnestykker. Når skal SQL lære at det er uaktuelt at han får være hjernen bak?
Sist endret av Kyrios; 9. august 2010 kl. 21:14.
Det er en selvfølge at du får uventede resultat når du ikke følger syntaksen, så der er det nok helt og holdent din egen feil.
Sitat av |d13m0b Vis innlegg
Det er en selvfølge at du får uventede resultat når du ikke følger syntaksen, så der er det nok helt og holdent din egen feil.
Vis hele sitatet...
Jeg vil nå heller si at syntaksen ikke følger meg, men vil du danse er det greit for meg.
Da er det du sier totalt feil. Innen programmering skal man følge syntaksen, alltid. Den er hellig, og man har med å følge dens premisser. Ikke omvendt.
Sist endret av m0b; 9. august 2010 kl. 21:25.
Jeg er 99% sikker på at koden du egentlig har er forskjellig fra koden du pastet her, for det er umulig å få "-70" med den koden du har pastet.

edit: og til dere andre, syntaxen int . string . int er helt "fin" den for PHP. PHP konverterer begge sider av en concatenation til strings før de legges sammen.
Sist endret av ymgve; 9. august 2010 kl. 21:57.
Absolutt, PHP bryr seg ikke spesielt med eksplisitt casting, og man kan sjonglere med datatypene til krampa tar en. Men det (i alle fall) jeg snakket om angående syntaks var i SQL-spørringen.
Sist endret av m0b; 9. august 2010 kl. 22:18.