Avatar billede madsens90 Praktikant
27. april 2008 - 17:57 Der er 21 kommentarer og
1 løsning

Hvor ligger fejlen i min "Update string"?

Hej. Jeg har siddet og roddet med det i et stykke tid, og kan simpelthen ikke finde fejlen.

Det ser sådan ud det jeg har lavet:

MYSQL_QUERY("UPDATE tf_firm SET '$opdateringskategori' = '$opdateringskategori' + '$point' WHERE username = '$name' && firmanavn = '$firmanavn'");

Jeg tror muligvis det er (SET '$opdateringskategori' = '$opdateringskategori') den er gal med, da den første "$opdateringskategori" f.eks kan give "butik", og nr. 2 "$opdateringskategori" f.eks kan give "10"..

Hvordan får jeg nr 2 til at + med '$point'??

Sry hvis det er indviklet!!
Avatar billede madsens90 Praktikant
27. april 2008 - 17:59 #1
altså min QUERY kan f.eks se sådan her ud:

MYSQL_QUERY("UPDATE tf_firm SET 'butik' = '10' + '20' WHERE username = 'Christian' && firmanavn = 'et_eller_andet'");
Avatar billede jakobdo Ekspert
27. april 2008 - 18:06 #2
Prøv at ret din sql til:
MYSQL_QUERY("UPDATE tf_firm SET 'butik' = '10' + '20' WHERE username = 'Christian' && firmanavn = 'et_eller_andet'") or die(mysql_error());

Så får du sql fejl, hvis der er nogle.

Hvad er det forresten du laver her: SET 'butik' = '10' + '20' ??
Avatar billede madsens90 Praktikant
27. april 2008 - 18:17 #3
SET '$opdateringskategori' = '$opdateringskategori' + '$point'

Først så finder den rækken der hedder f.eks butik.

derefter skal den tage oplysningerne der står i rækken i forvejen, (som kun er tal) og + med $point..

tror fejlen er at den prøver at + $point med '$opdateringskategori' (som f.eks er 'butik') men hvordan retter jeg det, så den tager hvad der står i rækken i forvejen, og + med '$point' ?

prøver din metode og ser om det virker hvis ikke du evt ved hvordan man gør det som jeg har prøvet at beskrive herover. ;)
Avatar billede dkfire Nybegynder
27. april 2008 - 18:21 #4
Når det handler om kolonnenavne så skal du bruge ` i stedet for '.

MYSQL_QUERY("UPDATE tf_firm SET `$opdateringskategori` = `$opdateringskategori` + $point WHERE username = '$name' && firmanavn = '$firmanavn'");

Og når du har med tal at gøre, så behøver du ikke ' omkring.
Avatar billede showsource Seniormester
27. april 2008 - 18:26 #5
"SET 'butik' = '10' + '20'"
tror jeg ikke rigtigt på, men ved ikke om det virker! :O)

Men
SET butik = butik+20 vil virke
Eller
SET butik = `butik`+20
eller
SET `butik` = `butik`+".(int)$point."
Avatar billede showsource Seniormester
27. april 2008 - 18:30 #6
Og som dkfire er inde på, du behøver/skal ikke sætte ' omkring et tal.
Men PHP ser enhver post, ( er det post? ), som en streng, og for at gøre det til et tal, bruges så (int)$point eller intval($point)
Avatar billede madsens90 Praktikant
27. april 2008 - 19:29 #7
Showsource.. mit problem er jo at $opdateringskategori kan være forskellige ting..

Det kan være f.eks butik eller design eller noget tredje..

Så vil jeg have den til at sætte kolonnen der hedder f.eks butik til der der står i kolonnen butik i forvejen, + $point, som f.eks kan være 10..

burde det så kunne gøres ved at skrive:

MYSQL_QUERY("UPDATE tf_firm SET '$opdateringskategori' = `$opdateringskategori` + $point WHERE username = '$name' && firmanavn = '$firmanavn'");

??
Prøver det lige. :)
Avatar billede madsens90 Praktikant
27. april 2008 - 19:33 #8
Det virker stadig ikke. :/
Avatar billede madsens90 Praktikant
27. april 2008 - 19:35 #9
Showsource: Jah. det er en streng! :)
Avatar billede jakobdo Ekspert
27. april 2008 - 19:36 #10
madsen90: Jeg tror problemet er, at ingen rent faktisk ved hvad du efterspørger.
Prøv at skriv det uden brug af php variabler.
Og skriv hvordan du mener 2 forskellige SQL'er kunne se ud.
Og hvad du gerne vil opnå, altså hvordan det skal se ud efter en opdatering.
Avatar billede jakobdo Ekspert
27. april 2008 - 19:37 #11
madsen90: Jeg tror problemet er, at ingen rent faktisk ved hvad du efterspørger.
Prøv at skriv det uden brug af php variabler.
Og skriv hvordan du mener 2 forskellige SQL'er kunne se ud.
Og hvad du gerne vil opnå, altså hvordan det skal se ud efter en opdatering.
Avatar billede showsource Seniormester
27. april 2008 - 19:41 #12
"UPDATE `tf_firm` SET `butik` ='".$opdateringskategori.(int)$point."' WHERE `username` = '".$name."' AND `firmanavn` = '".$firmanavn".'"
Avatar billede jakobdo Ekspert
27. april 2008 - 19:41 #13
Min browser fuckede lige, så beklager dobbeltpost.
Avatar billede showsource Seniormester
27. april 2008 - 19:43 #14
Men det lyder lidt som om du har gang i at ha' noget DB opbygning som kunne være bedre ?
Avatar billede dkfire Nybegynder
27. april 2008 - 19:45 #15
Og nej din sql er stadig ikke rigtig. Tag nu og prøv det jeg har skrevet i stedet for.

MYSQL_QUERY("UPDATE tf_firm SET `$opdateringskategori` = `$opdateringskategori` + $point WHERE `username` = '$name' && `firmanavn` = '$firmanavn'") or die(mysql_error());

Og så skriv derefter hvilken fejl den giver, hvis den ikke virker.
Avatar billede madsens90 Praktikant
27. april 2008 - 19:45 #16
Sry.. Ved jeg er dårlig til at forklarer det, men ved sq ikke helt hvordan jeg skal forklarer det. :)

Eksempler på hvordan det kunne se ud:

1)
MYSQL_QUERY("UPDATE tf_firm SET butik = (Det der står i kolonnen butik i forvejen) + 10 WHERE username = '$name' && firmanavn = '$firmanavn'");

2)
MYSQL_QUERY("UPDATE tf_firm SET design = (Det der står i kolonnen design i forvejen) + 10 WHERE username = '$name' && firmanavn = '$firmanavn'");

Note:
(Det der står i kolonnen design i forvejen) = et tal som f.eks 10

Håber det giver et større indblik i hva jeg mener?
Avatar billede showsource Seniormester
27. april 2008 - 19:49 #17
Hvad er det du vil opdatere med et tal ? Et felt i DB som er af typen INT ?
Avatar billede jakobdo Ekspert
27. april 2008 - 19:49 #18
Så burde kunne nøjes med:

MYSQL_QUERY("UPDATE tf_firm SET butik = butik + 10 WHERE username = '$name' && firmanavn = '$firmanavn'");
Avatar billede madsens90 Praktikant
27. april 2008 - 19:53 #19
dkfire: Du er min helt. ;D

Jeg er sku da også ekstremt dårlig til at forklarer! ;P

Den kom til at se sådan her ud til slut:

MYSQL_QUERY("UPDATE tf_firm SET `$opdateringskategori` = `$opdateringskategori` + $point WHERE `username` = '$name' && `firmanavn` = '$firmanavn'") or die(mysql_error());

Tak for hjælpen alle sammen! :P hehe.

dkfire. du kom med svaret der var løsningen, så du må jo få point. ;)
Avatar billede dkfire Nybegynder
27. april 2008 - 20:01 #20
jacobdo: Spørgen vil gerne kunne vælge mellem hvilken kolonne som tallet bliver lagt til.

madsens90: Det er de små detajler som gør forskellen. ;-) Men igen ` er til kolonnenavne, mens ' er til strengværdier som du ligger i et felt.
Avatar billede showsource Seniormester
27. april 2008 - 20:02 #21
Pænt set !
Avatar billede madsens90 Praktikant
27. april 2008 - 20:06 #22
Det er lækkert med så hurtigt hjælp! ;)

Endnu engang tak! :)

dkfire: Skal jeg huske.. TAK!
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