0

So im trying to run a PHP script that sets a deleted field in the database to poplulate if you drag a certain text element to the droppable area.

At the moment i have this droppable area:

<div class="dropbin" id="dropbin" >
    <span class="fa fa-trash-o noSelect hover-cursor" style="font-size: 20pt; line-height: 225px;">&nbsp;</span>
</div>

and this draggable text:

<div id='dragme' data-toggle='modal' data-target='#editNoteNameModal' class='display-inline'>" . $data['NoteName'] . "</div>

The area im having an issue with is this:

$("#dropbin").droppable
  ({
    accept: '#dragme', 
    hoverClass: "drag-enter",
    drop: function(event) 
    {
      var noteid = <?php if(isset($_POST['noteid'])){ echo $_POST['noteid'];} ?>;
      var deletedby = <? if(isset($_SESSION['username'])){ echo $_SESSION['username'];} ?>
      var data = {noteid1: noteid, deletedby1: deletedby};

      if (confirm('Delete the note?')==true) 
      {
        $('#dragme').hide();
        debugger
        $.ajax({
          type: 'POST',
          url: 'deleteNote.php',
          datatype: 'json',
          data: data,
          success: function(result)
              {
                  alert("Success");
              }
        });

        window.location = "http://discovertheplanet.net/general_notes.php";
      }
      else
      {
        window.location = "http://discovertheplanet.net/general_notes.php";
      }
    }
  });

EDIT: The line i get the error on is:

var noteid = <?php if(isset($_POST['noteid'])){ echo $_POST['noteid'];} ?>;

Im currently getting an "Unexpected token ;" and its stopping the droppable from working.

Just a side note, if i run it without the variables it hits everything apart from:

url: 'deleteNote.php',

Also inside deleteNote.php is this incase it helps:

<?php

include "connectionDetails.php";

?>

<?php

if (isset($_POST['noteid1'], $_POST['deletedby1'])) 
{
    $noteid2 = $_POST['noteid1'];
    $deletedby2 = $_POST['deletedby1'];

    // echo "Hello...". $noteid;

    $stmt = "UPDATE Notes SET Deleted = GETDATE() WHERE NoteID = (?)";
    $params = array($noteid2);

    $stmt = sqlsrv_query($conn, $stmt, $params);

    if ($stmt === false) 
    {
        die( print_r(sqlsrv_errors(), true));
    }
}

else
{
    echo "No Data";
}


?>

(I deliberatley don't have deletedby in the database just yet, ignore that)

Could anyone possibly help me to get this to work?

Luke Litherland
  • 217
  • 4
  • 16
  • what is that debugger? is that commented or is a mistake? – Exprator Jul 27 '17 at 10:39
  • 1
    `var noteid = ;` apart from potential quoting issues, take a moment to think about what the result of that line will look like, if that POST parameter was not set ... – CBroe Jul 27 '17 at 10:40
  • that is essentially a break point in the developer window in the console so i can see whether it is hitting that part of the code or not – Luke Litherland Jul 27 '17 at 10:40
  • So the long JS script is inline code in a document that is always loaded via a POST request? Because if not, it's always going to end up as `var noteid = ;` –  Jul 27 '17 at 10:42
  • Possible duplicate of [No visible cause for "Unexpected token ILLEGAL"](https://stackoverflow.com/questions/12719859/no-visible-cause-for-unexpected-token-illegal) – Exprator Jul 27 '17 at 10:44
  • Btw, it looks like `deleteNote.php` doesn't echo anything on success. –  Jul 27 '17 at 10:46
  • @ChrisG yes, one off my issues is its not even hitting deleteNote.php and im not sure why – Luke Litherland Jul 27 '17 at 10:47
  • 1
    If the ajax success fired, it did successfully request the resource though. I always test my API and AJAX calls independently; if you change the type to `GET` you can simply put `deleteNote.php?nodeid1=123&deletedby1=abc` in the browser to test it. –  Jul 27 '17 at 10:50
  • ah thats really useful! it returned as No Data which at least idicates its not setting the variables (which was the original question) so i'll go back to the answer and make sure i understand it and get the variables pulling through. thank you for your help! i've never had to mix languages together like this before as im quite new xD – Luke Litherland Jul 27 '17 at 10:54
  • @ChrisG Allthough why would it come back as No Data if we defined noteid1 as 123 in the URL because that is data!? – Luke Litherland Jul 27 '17 at 10:58
  • Did you change `$_POST` to `$_GET`? –  Jul 27 '17 at 10:59
  • Let us [continue this discussion in chat](http://chat.stackoverflow.com/rooms/150288/discussion-between-luke-litherland-and-chris-g). – Luke Litherland Jul 27 '17 at 11:00

1 Answers1

5

Try to add quotes in these lines and add php after <? in second line:

var noteid = "<?php if(isset($_POST['noteid'])){ echo $_POST['noteid'];} ?>";
var deletedby = "<?php if(isset($_SESSION['username'])){ echo $_SESSION['username'];} ?>";

OR

var noteid = "<?=isset($_POST['noteid']) ? $_POST['noteid'] : "" ?>";
var deletedby = "<?=isset($_SESSION['username']) ? $_SESSION['username'] : "" ?>";
John Konner
  • 45
  • 1
  • 1
  • 10
Pankaj Makwana
  • 3,030
  • 6
  • 31
  • 47
  • this has worked in regards to my error so i will mark as the answer however could you possibly help me understand why its not running the php script? it even hits the success part of the ajax request – Luke Litherland Jul 27 '17 at 10:44
  • You are using php code inside jquery, to use php variable's in jquery/javascript you have to put quotes and one more thing you have to write ` – Pankaj Makwana Jul 27 '17 at 10:47