Avatar billede hanklitvej Nybegynder
18. februar 2006 - 20:39 Der er 47 kommentarer og
2 løsninger

Fejl i variable?

Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING
Denne fejl får jeg når jeg bruger denne kode:

$query = "select point from R1_point where R1=$R1";
$result = mysql_query($query);
while ($row = mysql_fetch_array($result)) {
$point = "$row['point'] . "" . $rediger_point";
}

Det er linien
$point = "$row['point'] . "" . $rediger_point";
som er noget galt med tror jeg nok.

Håber jeg kan få løst problemet.
Avatar billede gizmo-gizmo Nybegynder
18. februar 2006 - 20:46 #1
Ændre den til:
$point = $row['point'] . $rediger_point;
Avatar billede gizmo-gizmo Nybegynder
18. februar 2006 - 20:47 #2
Man bruger kun " til at smide "tekst" ind i.
F.eks.:
$test = "oh yeah";
Avatar billede pidgeot Nybegynder
18. februar 2006 - 20:47 #3
Hvis det er to tal som skal lægges sammen (det kunne navnene godt tyde på), er det sådan her:

$point = $row['point'] + $rediger_point;
Avatar billede hanklitvej Nybegynder
18. februar 2006 - 20:48 #4
av.. når jeg gør det kommer jeg tilbage til fejlen jeg havde før:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource
Avatar billede gizmo-gizmo Nybegynder
18. februar 2006 - 20:50 #5
Prøv at ændre linjen:

$result = mysql_query($query);

til

$result = mysql_query($query) OR DIE(mysql_error());

Så kan du se mere specifikt hvad fejlen er (det fremgår nemlig ikke af koden).
Avatar billede pidgeot Nybegynder
18. februar 2006 - 20:50 #6
Så har du en fejl i din query. Prøv med denne linie i stedet for $result = mysql_query($query);

$result = mysql_query($query) or die($query . ": " .mysql_error());
Avatar billede hanklitvej Nybegynder
18. februar 2006 - 20:51 #7
pidgeot $rediger_point indeholder et +, så det burde ikke være fejlen ;)
Avatar billede blackscorpion Nybegynder
18. februar 2006 - 20:52 #8
hvad består $R1 af ?
Avatar billede pidgeot Nybegynder
18. februar 2006 - 20:55 #9
Det har nu ikke direkte noget med hinanden at gøre - hvis du skal lægge to tal sammen, skal du bruge det jeg skrev, og så skal begge variable være tal (dvs. intet +). Eftersom du kalder det point, kunne det godt tyde på det er tilfældet.
Avatar billede hanklitvej Nybegynder
18. februar 2006 - 20:55 #10
mysql_error() giver mig:
select point from R1_point where R1=G: Unknown column 'G' in 'where clause'

$R1 består af forskellige værdier fra en form, det kan fx være "+ 1" eller "- 1"
Avatar billede blackscorpion Nybegynder
18. februar 2006 - 20:56 #11
$query = "select point from R1_point where R1=".$R1;

prøv den istedet for.
Avatar billede pidgeot Nybegynder
18. februar 2006 - 20:58 #12
Er det meningen $R1 skal være en tekststreng eller et tal? (her er det et G - altså tekst - men det er jo ikke sikkert det er meningen)

Hvis det er en tekststreng, skal din query linie have apostroffer rundt om $R1, altså

$query = "select point from R1_point where R1='$R1'";
Avatar billede hanklitvej Nybegynder
18. februar 2006 - 20:58 #13
$query = "select point from R1_point where R1=".$R1;
gjorde ingen forskel.
Avatar billede blackscorpion Nybegynder
18. februar 2006 - 20:58 #14
men hvis du i mysql skal lave felter osv, hvor den automatisk lægger sammen, burde du lave f.eks.

type: som indikere om der skal plusses eller minusses,
num: tallet som skal plusses eller minusses.

og så en

if($point['type'] == "plus") {
$var = $var2+$num;
}
else {
$var = $var2-$num;
}

- BlackScorpion.
Avatar billede blackscorpion Nybegynder
18. februar 2006 - 20:59 #15
hov

$query = "select point from R1_point where R1='".$R1."'";

sådan.. du skal nemlig nok bruge '' rundt om $R1
Avatar billede hanklitvej Nybegynder
18. februar 2006 - 20:59 #16
$R1 er tekst, ja
Avatar billede blackscorpion Nybegynder
18. februar 2006 - 21:00 #17
så skal du bruge '' rundt om... sad med et problem før, hvor en tekst bestod af user, og der fik jeg samme fejl... smed '' rundt om, og det virkede.
Avatar billede blackscorpion Nybegynder
18. februar 2006 - 21:05 #18
en anden grund til '' rundt om er at på nuværende tidspunkt ser din $sql sådan her ud:

select point from R1_point where R1=+ 1

hvis f.eks. $R1 er + 1 :D
Avatar billede hanklitvej Nybegynder
18. februar 2006 - 21:06 #19
$query = "select point from R1_point where R1='".$R1."'";
Denne linie fjerner fejlen, men $point bliver nu sat til 1+ 9 og ikke 10 :=(
Avatar billede pidgeot Nybegynder
18. februar 2006 - 21:08 #20
Det var næsten det jeg forventede - det er fordi $rediger_point ikke indeholder et tal, men en tekststreng.

Ret den form der afsender det så der ikke er noget mellemrum i de værdier den sender - det burde være nok, men ellers må du fjerne fortegnet fra de positive tal.

Desuden skal du, som jeg nævnte før, bruge $point = $row['point'] + $rediger_point;.
Avatar billede blackscorpion Nybegynder
18. februar 2006 - 21:09 #21
nååårh du vil lægge R1 sammen med $R1. :D

så skal du ud i at finde ud af om der skal plusses eller minusses.

f.eks

if($point['type'] == "plus") {
$sql = "update R1_point set R1 = R1+$R1 where point_id = $id";
}
else {
$sql = "update R1_point set R1 = R1-$R1 where point_id = $id";}
}

og så skal du selvfølge lige have ID'et fra databasen, så den ved hvilken record den skal opdatere, ellers sætter den det på ALT. :D
Avatar billede pidgeot Nybegynder
18. februar 2006 - 21:09 #22
En lille tilføjelse: Desuden BEHANDLER du den også som en tekststreng, hvilket vil give et problem.
Avatar billede blackscorpion Nybegynder
18. februar 2006 - 21:10 #23
ellers er jeg ude i noget nu der er ALT ALT for bøvlet ?
Avatar billede hanklitvej Nybegynder
18. februar 2006 - 21:15 #24
Det er et problem den behandles som en tekst streng.
Det eneste problem som er tilbage er at de 2 variabler skal ligges sammen. Den ser således ud nu:
$point = $row['point']."+".$rediger_point;
virker heller ikke som
$point = $row['point'].$rediger_point;

resultatet bliver bare 2 tal efter hinanden med et + imellem.
Avatar billede blackscorpion Nybegynder
18. februar 2006 - 21:16 #25
$rediger_point = str_replace('+','', $rediger_point);
$point = $row['point']+$rediger_point;

den burde kunne gøre det.
Avatar billede pidgeot Nybegynder
18. februar 2006 - 21:19 #26
$point = $row['point']."+".$rediger_point;

skulle være

$point = $row['point']+$rediger_point;

fordi det er TAL du arbejder med. Hvis du bruger . behandler PHP det som tekst.
Avatar billede hanklitvej Nybegynder
18. februar 2006 - 21:21 #27
Det virker nu :D

Jeg ville gerne give alle jer som har hjulpet point hvis det er muligt? Ellers er det blackscorpion som har hjulpet mest, så du kan jo lige poste et svar.
Avatar billede blackscorpion Nybegynder
18. februar 2006 - 21:22 #28
det kommer her. :D
Avatar billede pidgeot Nybegynder
18. februar 2006 - 21:23 #29
Et stk. svar - og ja, det er muligt at dele pointene mellem folk.

Hvis det skal være ligeligt, mener jeg blot du skal markere flere navne når du accepterer, ellers er der vist et eller andet oppe i Funktioner.
Avatar billede blackscorpion Nybegynder
18. februar 2006 - 21:23 #30
hanklitvej -> du skal dog lige huske på, at hvis $R1 nu er -1, så har du samme problem.

derfor du skal tjekke om der skal plusses eller minusses.
Avatar billede hanklitvej Nybegynder
18. februar 2006 - 21:23 #31
Mange tak for hjælpen!
Avatar billede pidgeot Nybegynder
18. februar 2006 - 21:25 #32
Ahva? Man kan da fint sige det her:

$a=5;
$b=-1;
$c=$a+$b;
Avatar billede blackscorpion Nybegynder
18. februar 2006 - 21:25 #33
Takker. :D

men råb lige højt hvis du får samme problem med -1 så må vi brygge noget sammen til dig.
Avatar billede blackscorpion Nybegynder
18. februar 2006 - 21:26 #34
pigeot -> du vil sige at $c=5+-1 ville virke ?
Avatar billede hanklitvej Nybegynder
18. februar 2006 - 21:27 #35
$c=5+-1 virker fint
Avatar billede blackscorpion Nybegynder
18. februar 2006 - 21:27 #36
okey skørt... giver ingen mening, men okey, så er der jo intet problem. :D
Avatar billede hanklitvej Nybegynder
18. februar 2006 - 21:28 #37
++=+
+-=-
-+=-
--=+
Avatar billede blackscorpion Nybegynder
18. februar 2006 - 21:29 #38
okey okey okey. :D
Avatar billede hanklitvej Nybegynder
18. februar 2006 - 21:29 #39
lidt har man vel lært i skolen?
Avatar billede blackscorpion Nybegynder
18. februar 2006 - 21:30 #40
må have sovet i den time, ellers er det røget med årerne. :D
Avatar billede morhan Novice
18. februar 2006 - 21:31 #41
$c = 5++1;

vil ikke virke ;)
Avatar billede pidgeot Nybegynder
18. februar 2006 - 21:31 #42
Ja, til en vis grad. Det virker ikke hvis du skriver det ud som tekst på den måde, men hvis -1 er en variabel vil der reelt stå $c=5+(-1), hvilket er fuldt ud gyldigt.

Det vil naturligvis ikke virke hvis du laver det direkte i en UPDATE, men det fremgår ikke direkte af den oprindelige kode at det er det der sker inde i den while. Det er højst sandsynligt det der SKAL ske, men spørgeren kunne have valgt at udelade den del af koden.
I så fald laver han en sammenlægning i PHP, hvor der ikke er noget problem i at lægge et negativt tal til.
Avatar billede blackscorpion Nybegynder
18. februar 2006 - 21:33 #43
okey fair nok.

I stand corrected. <-- hvilket er dejligt, at folk gider gøre, ellers lærer man jo ikke noget. :D
Avatar billede blackscorpion Nybegynder
18. februar 2006 - 21:36 #44
$a=5;
$b=+1;
$c=$a+$b;

echo $c;

virker da ?
Avatar billede blackscorpion Nybegynder
18. februar 2006 - 21:37 #45
men ja...

$c = 5++1;
echo $c;

fejler:

Parse error: parse error, unexpected T_INC in /var/www/test.php on line 5

men hvis man beholder det i variabler som:

$a=5;
$b=+1;
$c=$a+$b;

så virker det.
Avatar billede morhan Novice
18. februar 2006 - 21:37 #46
Det var heller ikke hvad jeg skrev :)

++ er en speciel operator i php

$c = 5+(+1); // virker
Avatar billede pidgeot Nybegynder
18. februar 2006 - 21:38 #47
Husk på - når du bruger en variabel sættes der reelt paranteser uden om dens værdi.

Linien $c=5++1; vil ikke virke, men $c=5+(+1); virker fint.
Avatar billede pidgeot Nybegynder
18. februar 2006 - 21:39 #48
Jeg må virkelig se at lære at opdatere inden jeg trykker Send *G*
Avatar billede blackscorpion Nybegynder
18. februar 2006 - 21:41 #49
hehe :D
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