unterminated string literal error

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

peter_coopAsked:
Who is Participating?
 
Sudaraka WijesingheConnect With a Mentor Web Application ProgrammerCommented:
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
 
Sudaraka WijesingheWeb Application ProgrammerCommented:
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
 
peter_coopAuthor Commented:
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
Cloud Class® Course: C++ 11 Fundamentals

This course will introduce you to C++ 11 and teach you about syntax fundamentals.

 
Sudaraka WijesingheWeb Application ProgrammerCommented:
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
 
peter_coopAuthor Commented:
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
 
Sudaraka WijesingheWeb Application ProgrammerCommented:
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
 
peter_coopAuthor Commented:
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
 
Sudaraka WijesingheWeb Application ProgrammerCommented:
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
 
peter_coopAuthor Commented:
thanks. but how do i incorporate that line into my code which posted earlier? thanks
0
 
Ray PaseurCommented:
Learn about this function.  You'll be glad you did!
http://us3.php.net/manual/en/function.urlencode.php
0
 
Ray PaseurCommented:
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
 
peter_coopAuthor Commented:
thank you for all your help. cheers
0
 
peter_coopAuthor Commented:
ray

thank you for your comments. unfortunately, i inherited this code but will bear in mind for future. thank you.
0
 
Sudaraka WijesingheWeb Application ProgrammerCommented:
Glad to help. Thanks for the points.
0
 
Ray PaseurCommented:
@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
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.