Adding onclick to php echo line

Hi all

I am trying to use…

onClick="confirm('Complete Delete?')"

for exmaple below in a line of PHP…

echo '<td><form action="salesdelete.php" method="POST"><input type="submit" name="submit" value="Delete" onClick="confirm('Complete Sale?')"><input type="hidden" name="invoice_no" value='.$row['invoice_no'].'></form>';

But keep recieving the following error message when trying to open the page in a web browser…

Parse error: syntax error, unexpected T_STRING, expecting ‘,’ or ‘;’ in C:\xampp\htdocs\ rhayes\salesdisplay.php on line 139

Can anoyone highlight how the syntax should be constructed??

Many thanks

Hi Chris,

Have a good read through the PHP strings documentation (at least the “Single quoted” section).

Dealing with your issue in particular, note the following taken from that page

To specify a literal single quote, escape it with a backslash (\\).

With that, your code would become:

echo '<td><form action="salesdelete.php" method="POST"><input type="submit" name="submit" value="Delete" onClick="confirm([COLOR="#B22222"]\\[/COLOR]'Complete Sale?[COLOR="#B22222"]\\[/COLOR]')"><input type="hidden" name="invoice_no" value='.$row['invoice_no'].'></form>';


Thanks for your reply Salathe

This has fixed the issue with getting this confirmation box to appear, but pressing ‘ok’ or ‘cancel’ seams to delete regardless. My apologies. I have never encountered the onclick function before, hence the forum requirement.

That’s okay, you only asked about fixing the PHP syntax issue. The confirmation not doing its job is a JavaScript issue. Within the onClick, you can return false to stop the default behaviour (submitting the delete) from happening. The confirm() will return either true or false depending on whether the cancel or ok button was clicked.

You can simply do:

…onClick="[COLOR="#B22222"]return [/COLOR]confirm(…

Awesome, I salute you!

I have a related question regarding another onClick feature, but feel free to discard this scenario…

I have a drop down select box that populates using php from a stock table. I also have a text box near this i would like to display the current available stock for whatever is selected…so same table. Below is the code…

Drop down…

&lt;label for="item1_item" title="Please select the 1st item from the drop down list"&gt;&lt;label/&gt;
  &lt;select name="item1_item"&gt;
  /* connect to database */
  require '';


  /* drop down query for stock */
  $stock_query  = "SELECT `description`
                   FROM   `stock`
                   ORDER BY `description`";
  $stock_result = mysql_query($stock_query);
  $numrows      = mysql_num_rows($stock_result);

        1 - create "Please select" default category
        2 - create for loop to cycle through stock
        3 - assign a variables for stock descriptions...
        4 - ...display stock descriptions
  echo '&lt;option value=""&gt;Please select an item...&lt;/option&gt;';
  for($i=0; $i &lt; $numrows; $i++)
  $stock_name = mysql_result($stock_result,$i,0);
  echo'&lt;option value="'.htmlspecialchars($stock_name).'"&gt;'.htmlspecialchars($stock_name).'&lt;/option&gt;';

Disabled text box directly after i would like to have populated with the level of stock for whichever items was selected.

&lt;label for="item1_availablequantity" title="Available Quantity"&gt;Available Quantity: &lt;/label&gt;
  &lt;input id="item1_availablequantity" name="item1_availablequantity" type="text" maxlength="2" size="2" disabled="disabled" /&gt;

How would i construct this?

Thanks for any advice you are able to give!

Note that a confirm dialog actually has three options in most modern browsers since it is intended primarily for debugging use. As well as being able to return true or false depending on which button is pressed some browsers also provide an option for disabling all subsequent dialogs so that the next time a confirm is called it will just return true without displaying anything at all. In other browsers the third option is to turn off JavaScript for the page in which case nothing gets returned at all as the page now has JavaScript turned off until you close the browser.