[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
?
Solved

unterminated string literal error

Posted on 2010-11-27
15
Medium Priority
?
500 Views
Last Modified: 2012-05-10
hello

i am getting an error of unterminated string literal and cannot see where to correct it. it is not happening on all actions in the page just some, so i guess it is random. i have posted the code and would be grateful if someone could see the problem. thanks.
$action = str_replace("'", "\\'", "action.php?id=$id&slot=$slot&service=$service&company=$company&address=address&user=$custname&department=$department&activity=$activity&item=$item&filebox=$filebox&destroydate=$destroydate&date=$date&quantity=$quantity&type=$type&new=$new");

call in the page

<td valign=\"top\"><a href=\"#\" onClick=\"PopUp('" . $action . "','winAvail','status=no,scrollbars=no,resizable=yes,width=465,height=450');\">Action</a></td>

Open in new window

0
Comment
Question by:peter_coop
  • 6
  • 6
  • 3
15 Comments
 
LVL 18

Expert Comment

by:Sudaraka Wijesinghe
ID: 34221599
There must be a single quote (') in one of the values you use to build the $action.
It would be easy to check using the HTML that is generated.
0
 

Author Comment

by:peter_coop
ID: 34221625
hi
is this what you need? thanks
<td valign="top"><a href="#" onClick="PopUp('action.php?id=4731&slot=&service=Standard&company=FIDD&address=address&user=Some User&department=FIDD&activity=New Intake&item= 27469.4
&filebox=ABC 12040&destroydate=23/09/2016&date=2010-09-23 15:09:51&quantity=0&type=0&new=1','winAvail','status=no,scrollbars=no,resizable=yes,width=465,height=450');">Action</a></td>

Open in new window

0
 
LVL 18

Expert Comment

by:Sudaraka Wijesinghe
ID: 34221668
Yes, Is that line break before &filebox coming from the $item variable? that seems to be causing the problem.
Try removing the line break.
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

Author Comment

by:peter_coop
ID: 34221744
there is no line break in original code. if you place this in notepad++ you will see it continuous code.

$action = str_replace("'", "\\'", "action.php?id=$id&slot=$slot&service=$service&company=$company&address=address&user=$custname&department=$department&activity=$activity&item=$item&filebox=$filebox&destroydate=$destroydate&date=$date&quantity=$quantity&type=$type&new=$new");


<td valign=\"top\"><a href=\"#\" onClick=\"PopUp('" . $action ."','winAvail','status=no,scrollbars=no,resizable=yes,width=465,height=450');\">Action</a></td>
0
 
LVL 18

Expert Comment

by:Sudaraka Wijesinghe
ID: 34221921
Sorry if I wasn't clear before. What I meant was not the code, but value that is in the variable $item

Because in the HTML code you posted, I got the same error when I use it in the same 2 line form as posted here. But when I remove the line break before the &filebox it worked.
<td valign="top"><a href="#" onClick="PopUp('action.php?id=4731&slot=&service=Standard&company=FIDD&address=address&user=Some User&department=FIDD&activity=New Intake&item= 27469.4&filebox=ABC 12040&destroydate=23/09/2016&date=2010-09-23 15:09:51&quantity=0&type=0&new=1','winAvail','status=no,scrollbars=no,resizable=yes,width=465,height=450');">Action</a></td>

Open in new window


Problem is in how the HTML is rendered in the client side (browser), not in the PHP code.
0
 

Author Comment

by:peter_coop
ID: 34221977
2 questions.

1) how do i correct code to make the code render correctly

2) this is not happening on every item. it seems random.

many thanks for your help.
0
 
LVL 18

Expert Comment

by:Sudaraka Wijesinghe
ID: 34222155
You can replace the line breaks from the $item before you use it in the code
$item=preg_replace("/[\r\n]/", "", $item);

Open in new window

0
 

Author Comment

by:peter_coop
ID: 34222185
thanks. but how do i incorporate that line into my code which posted earlier? thanks
0
 
LVL 18

Accepted Solution

by:
Sudaraka Wijesinghe earned 1000 total points
ID: 34222218
You can add it just above the $action= line

$item=preg_replace("/[\r\n]/", "", $item);
$action = str_replace("'", "\\'", "action.php?id=$id&slot=$slot&service=$service&company=$company&address=address&user=$custname&department=$department&activity=$activity&item=$item&filebox=$filebox&destroydate=$destroydate&date=$date&quantity=$quantity&type=$type&new=$new");

call in the page

<td valign=\"top\"><a href=\"#\" onClick=\"PopUp('" . $action . "','winAvail','status=no,scrollbars=no,resizable=yes,width=465,height=450');\">Action</a></td>

Open in new window

0
 
LVL 111

Expert Comment

by:Ray Paseur
ID: 34222234
Learn about this function.  You'll be glad you did!
http://us3.php.net/manual/en/function.urlencode.php
0
 
LVL 111

Expert Comment

by:Ray Paseur
ID: 34222240
Also, it's very hard to catch errors in those long compound strings.  You might want to write your code like this, to make it easy to read and modify.

HTH, ~Ray
$action = "action.php"
. '?id='
. urlencode($id)
. '&slot='
. urlencode($slot)
. '&service='
. urlencode($service)
// etc...

Open in new window

0
 

Author Closing Comment

by:peter_coop
ID: 34222737
thank you for all your help. cheers
0
 

Author Comment

by:peter_coop
ID: 34222739
ray

thank you for your comments. unfortunately, i inherited this code but will bear in mind for future. thank you.
0
 
LVL 18

Expert Comment

by:Sudaraka Wijesinghe
ID: 34222845
Glad to help. Thanks for the points.
0
 
LVL 111

Expert Comment

by:Ray Paseur
ID: 34223199
@peter_coop:  

You accepted the wrong answer.  Please go back and read the man page for urlencode().  That is the correct way to get the strings encoded for HTTP transport.

"Returns a string in which all non-alphanumeric characters except -_. have been replaced with a percent (%) sign followed by two hex digits and spaces encoded as plus (+) signs. It is encoded the same way that the posted data from a WWW form is encoded, that is the same way as in application/x-www-form-urlencoded media type."
0

Featured Post

Vote for the Most Valuable Expert

It’s time to recognize experts that go above and beyond with helpful solutions and engagement on site. Choose from the top experts in the Hall of Fame or on the right rail of your favorite topic page. Look for the blue “Nominate” button on their profile to vote.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article discusses how to implement server side field validation and display customized error messages to the client.
The title says it all. Writing any type of PHP Application or API code that provides high throughput, while under a heavy load, seems to be an arcane art form (Black Magic). This article aims to provide some general guidelines for producing this typ…
Viewers will learn one way to get user input in Java. Introduce the Scanner object: Declare the variable that stores the user input: An example prompting the user for input: Methods you need to invoke in order to properly get  user input:
The viewer will learn the basics of jQuery including how to code hide show and toggles. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery…
Suggested Courses
Course of the Month19 days, 5 hours left to enroll

834 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question