Avatar billede tanzaweb Nybegynder
29. marts 2005 - 23:13 Der er 30 kommentarer og
1 løsning

parse error, expecting `T_STRING' or `T_VARIABLE

Hej

Jeg får denne fejl, og er helt forvirret:

Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in d:\web\tlf_kurv.php on line 47

Linjerne ser således ud:

mysql_query("INSERT INTO nettOrd(nett_Item,NettOrder_price)
                        VALUES ('($_POST['netPhone'])','($_POST['pris'])')") or die(mysql_error());

Både netPhone og pris kommer via en form på foregående side. og jeg må have set mig blind på et eller andet?

Hvis jeg fjerne disse 2 linjer så køre siden ellers ikke??

Hjælp, den blinde
Avatar billede barklund Nybegynder
29. marts 2005 - 23:16 #1
Du skal ikke sætte indekset i quotes inden i strengen - eller gå ud af strengen:

mysql_query("INSERT INTO nettOrd(nett_Item,NettOrder_price)
                        VALUES ('".$_POST['netPhone']."','".$_POST['pris']."')") or die(mysql_error());

Eller:

mysql_query("INSERT INTO nettOrd(nett_Item,NettOrder_price)
                        VALUES ('$_POST[netPhone]','$_POST[pris]')") or die(mysql_error());

Sidste variant, som du næsten havde brugt, er at indkapsle det i {}:

mysql_query("INSERT INTO nettOrd(nett_Item,NettOrder_price)
                        VALUES ('{$_POST['netPhone']}','{$_POST['pris']}')") or die(mysql_error());

Enhver af disse burde virke.
Avatar billede baitianlong Nybegynder
29. marts 2005 - 23:17 #2
mysql_query("INSERT INTO nettOrd(nett_Item,NettOrder_price) VALUES('".$_POST['netPhone']."','".$_POST['pris']."')") or die(mysql_error());

prøv sådan der :)
Avatar billede bromer Nybegynder
29. marts 2005 - 23:18 #3
du kan også vælge at formatere strengen med sprintf:

mysql_query(sprintf("INSERT INTO nettOrd(nett_Item,NettOrder_price) VALUES ('%s','%s')",$_POST['netPhone'],$_POST['pris']));
Avatar billede baitianlong Nybegynder
29. marts 2005 - 23:18 #4
Hov, Barklund. Kommer du nu rendende her ;) Så skal jeg jo være hurtigere
Avatar billede ranglen Nybegynder
29. marts 2005 - 23:19 #5
Når du indsætter en 'komplex' variabel skal du bruge tuborg-klammer..


mysql_query("INSERT INTO nettOrd(nett_Item,NettOrder_price)
                        VALUES ('({$_POST['netPhone']})','({$_POST['pris']})')") or die(mysql_error());
Avatar billede barklund Nybegynder
29. marts 2005 - 23:19 #6
legende.dk - det er dig der kommer rendende :) og hører du ikke til ovre i flash (5) kategorien? :D
Avatar billede michael_stim Ekspert
29. marts 2005 - 23:24 #7
Personligt plejer jeg altid at sätte variablerne för de sättes ind i queryen. På den måde får man også bedre overblik.

$netPhone=$_POST['netPhone'];
$pris=$_POST['pris'];
mysql_query("INSERT INTO nettOrd(nett_Item,NettOrder_price)
                        VALUES ('$netPhone','$pris')") or die(mysql_error());
Avatar billede tanzaweb Nybegynder
29. marts 2005 - 23:24 #8
barklund kom først med det rigtige svar, men nu laver den lige pludselig en Notice: Undefined index: pris
i denne linje og andre: ('($_POST['netPhone'])','($_POST['pris'])')") or die(mysql_error());
Avatar billede barklund Nybegynder
29. marts 2005 - 23:28 #9
Så er der vel ingen "pris" i din $_POST - måske du kaldte den price.

Og tark for points :)
Avatar billede barklund Nybegynder
29. marts 2005 - 23:29 #10
Og du har da ikke ændret dit script i den aktuelle linje?
Avatar billede baitianlong Nybegynder
29. marts 2005 - 23:30 #11
Barklund-> He he, jeg kiggede lige på dine "Spørgsmål besvaret af Barklund" og du må være blevet ramt af lynet for tre uger siden, da du tænkte "Jeg gider ikke kun hænge ud i flash kategorien" I øvrigt smukt med din bog :)

Og tak for (5) ... Ha ha :))
Avatar billede bromer Nybegynder
29. marts 2005 - 23:32 #12
han kom over for at genere mig her i PHP
Avatar billede barklund Nybegynder
29. marts 2005 - 23:32 #13
legende.dk, nu har du vel købt den - så du kan komme up to date? Og ja, jeg skulle jo battle bromer, så jeg var nødt til at gøre det på hans egen hjemmebane :)
Avatar billede baitianlong Nybegynder
29. marts 2005 - 23:33 #14
(Hvor er flash 5 kategorien egentlig ;) Det er lige mig)
Avatar billede tanzaweb Nybegynder
29. marts 2005 - 23:33 #15
jo det ændret og den hedder "pris" og den tog det med ind før nu gør den det lige pludselig ikke?

Her er script linjerne, lidt juks men det er en opstart til noget bedre håber jeg.

mysql_query("INSERT INTO nettOrder(nett_Item,NettOrder_price)
                        VALUES ('{$_POST['netPhone']}','{$_POST['pris']}')") or die(mysql_error());
                       
                        $moms=($_POST['pris'] * 0.2);
                        echo "<td class=\"topTable_normal\" align=\"left\">".$_POST['netPhone']."</td>"; echo "<td class=\"topTable_normal\">&nbsp;</td><td class=\"topTable_normal\" align=\"right\">".sprintf("kr. %.2f",$_POST['pris'])."</td></tr><tr>";
                        echo "<td></td>"; echo "<td class=\"normal\" align=\"right\">Subtotal</td><td class=\"normal\" align=\"right\">".sprintf("kr. %.2f",$_POST['pris'])."</td></tr><tr>";
                        echo "<td></td>"; echo "<td class=\"normal\" align=\"right\">Heraf 25% moms</td><td class=\"topTable_normal\" align=\"right\">".sprintf("kr. %.2f",$moms)."</td></tr><tr>";
                        echo "<td class=\"normal\" align=\"left\"></td>"; echo "<td class=\"normal\" align=\"right\"><b>Total</b></td><td class=\"topTable_normal_bold\" align=\"right\">".sprintf("kr. %.2f",$_POST['pris'])."</td></tr><tr>";
                       
                        $result = mysql_query("SELECT nettOrder_id FROM nettOrder WHERE nett_Item = 'netPhone'");
                        $row = mysql_fetch_array ($result);
Avatar billede tanzaweb Nybegynder
29. marts 2005 - 23:34 #16
det jo alle "pris" som pludselig er forsvundet, men hvorfor ikke netPhone?

"pris" kommer fra et input felt som er hidden, men det var ikke et problem før?
Avatar billede barklund Nybegynder
29. marts 2005 - 23:37 #17
Det burde det heller ikke være nu. Prøv at start med at lave en var_dump($_POST) for at se indholdet. Hvis der ingen "pris" er, så ligger fejlen i din form - og det tyder på det!
Avatar billede tanzaweb Nybegynder
29. marts 2005 - 23:40 #18
jeg har ændret formen på den måde at pris nu ligger som fil.php?pris=200 i action feltet, og så virker det.

mens <input type="hidden" name="pris" value="100"> åbenbart pludselig ikke virker selv om det gjorde før mysql_query'en?

Er der nogen der har et bedre forslag, så den står i url'en og kan ændres?
Avatar billede barklund Nybegynder
29. marts 2005 - 23:45 #19
Det burde virke fint - test lige en ekstra gang, at det hele er korrekt. At du retter lidt i din php burde _ikke_ ændre på hvilke variabler, der sendes.

Kan du ikke lige dumpe hele indholdet af filen/begge filer.
Avatar billede tanzaweb Nybegynder
29. marts 2005 - 23:50 #20
Formen ser således ud:

echo "<form action=\"kurv.php\" method=\"post\">";               
                       
                        $result = mysql_query("SELECT * from netnumbers WHERE netGold='2' LIMIT $offset,$limit");
                        echo "<select name='netPhone'>";
                        echo "<option value=''>Vælg almindelig nummer</option>";
                        while ($row = mysql_fetch_array($result)){
                        echo "<option value='"; echo $row['netPhone']."'>"; echo $row['netPhone']."</option>";
                        }
                        echo "</select>";
                        ?>                       
                        <br />
                        <br />
                        <input type="hidden" name="pris" value="100">
                        <input type="submit" name="Submit" value="Gå til indkøbskurv">
                        </form>                       
                       

Denne linje ændred jeg til følgende echo "<form action=\"kurv.php?pris=100\" method=\"post\">"; og så virked det.
Avatar billede tanzaweb Nybegynder
29. marts 2005 - 23:53 #21
Og så igen hvor den kommer ind id kurven.

mysql_query("INSERT INTO nettOrder(nett_Item,NettOrder_price)
                        VALUES ('{$_POST['netPhone']}','{$_POST['pris']}')") or die(mysql_error());
                     
                        $moms=($_POST['pris'] * 0.2);
                        echo "<td class=\"topTable_normal\" align=\"left\">".$_POST['netPhone']."</td>"; echo "<td class=\"topTable_normal\">&nbsp;</td><td class=\"topTable_normal\" align=\"right\">".sprintf("kr. %.2f",$_POST['pris'])."</td></tr><tr>";
                        echo "<td></td>"; echo "<td class=\"normal\" align=\"right\">Subtotal</td><td class=\"normal\" align=\"right\">".sprintf("kr. %.2f",$_POST['pris'])."</td></tr><tr>";
                        echo "<td></td>"; echo "<td class=\"normal\" align=\"right\">Heraf 25% moms</td><td class=\"topTable_normal\" align=\"right\">".sprintf("kr. %.2f",$moms)."</td></tr><tr>";
                        echo "<td class=\"normal\" align=\"left\"></td>"; echo "<td class=\"normal\" align=\"right\"><b>Total</b></td><td class=\"topTable_normal_bold\" align=\"right\">".sprintf("kr. %.2f",$_POST['pris'])."</td></tr><tr>";
                     
                        $result = mysql_query("SELECT nettOrder_id FROM nettOrder WHERE nett_Item = 'netPhone'");
                        $row = mysql_fetch_array ($result);

Her får den dog ikke netPhone med ind fra den forrige side i SELECT sætningen, hvor jeg jo bruger en $_POST['netPhone'] men den kan jeg jo ikke bruge i SELECT sætningen.
Avatar billede barklund Nybegynder
30. marts 2005 - 00:00 #22
Jeg skal ikke kunne sige, hvorfor du ikke har "pris" med over.

Prøv at skrive var_dump($_POST) øverst i den side, der modtager - så kan du se, præcis hvad der bliver sendt.
Avatar billede tanzaweb Nybegynder
30. marts 2005 - 00:09 #23
Nu forstår jeg ingenting? Nu tager den det med over hvor den ikke gjorde det før?

Mystik

Men hvad med denne linje her får den ikke "netphone" med, men jvordan er det jeg skal gøre det her for jeg mener at kunne huske at det bare er sådan?

$result = mysql_query("SELECT nettOrder_id FROM nettOrder WHERE nett_Item = 'netPhone'");
                        $row = mysql_fetch_array ($result);
Avatar billede tanzaweb Nybegynder
30. marts 2005 - 00:12 #24
Har ændret den til at tage alle med i SELECT statementen da den jo skal bruge nett_item
Avatar billede barklund Nybegynder
30. marts 2005 - 00:20 #25
Det ser nu også rigtig nok ud - men jeg er ikke helt med på, hvad du spørger om. Men virker det som forventet nu?
Avatar billede tanzaweb Nybegynder
30. marts 2005 - 00:25 #26
Ja lige pånær at den ikke kan tage netPhone med ind i select sætningen som den skal bruge.

$result = mysql_query("SELECT nettOrder_id FROM nettOrder WHERE nett_Item = 'netPhone'");
                        $row = mysql_fetch_array ($result);

Hvis som et sidste spørgsmål jeg skal have den til også at læse netPhone i WHERE nett_Item = 'netPhone'"); hvordan gør jeg nu lige det?
Avatar billede barklund Nybegynder
30. marts 2005 - 00:29 #27
Altså du har en php-variabel $netphone, som skal ind i sætningen? På samme måde:

$result = mysql_query("SELECT nettOrder_id FROM nettOrder WHERE nett_Item = '".$netPhone."'");

Andet er det ikke?

--
Morten Barklund
Avatar billede tanzaweb Nybegynder
30. marts 2005 - 00:33 #28
tusinde tak for hjælpen, jeg skulle dog have den således for at den virker

WHERE nett_Item = '".$_POST['netPhone']."'");
Avatar billede baitianlong Nybegynder
30. marts 2005 - 00:35 #29
$result = mysql_query("SELECT nettOrder_id FROM nettOrder WHERE nett_Item = '".$_POST['netPhone']."'");

nååå ;)
Avatar billede baitianlong Nybegynder
30. marts 2005 - 00:36 #30
arrrgh !! Jeg skal på plejehjem :P
Avatar billede barklund Nybegynder
30. marts 2005 - 00:37 #31
Ja hvis variablen ligger der, skal det selvfølgelig skrives sådan. :)
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