Alex Resiga
Alex Resiga

Reputation: 71

Pass MYSQL row id to javascript variable

I have this script which is triggered when a button with the class .press_me is pressed.The buttons are on a column from a php generated mysql table:

$result = mysqli_query($con,"SELECT * FROM tbname");
echo "<table id='main'>"; 
while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td class='right-middle user'>" . $row['ID'] . "</td>";
echo "<td class='right-middle user'>" . $row['Nume'] . "</td>";
echo "<td class='right-middle done'>" . $row['Teme_facute'] . "</td>";
echo "<td class='right-middle check'>" . "<img src='img/check.png' class='press_me'>" ."</td>";
echo "<td class='right-middle undone'>" . $row['Teme_nefacute'] . "</td>";
echo "<td class='right-middle uncheck'>" . "<img src='img/uncheck.png'>" . "</td>";
echo "<td class='side-table resetDone'>" . "<img src='img/resetDone.png'>" . "</td>";
echo "<td class='side-table resetUndone'>" . "<img src='img/resetUndone.png'>" . "</td>";
echo "</tr>";
}
echo "</table>";

And the script:

<script>
   $(function (){
            $('.press_me').click(function(){
        var id=<?php echo json_decode('$row[ID]'); ?>;          
            var request = $.ajax({
                                    type: "POST",
                                    url: "counter.php"
                                  });
                                  request.done(function( msg ) {

                                        alert('Success');
                                       location.reload();
                                        return;

                                  });
                                  request.fail(function(jqXHR, textStatus) {
                                        alert( "Request failed: " + textStatus );
                                    });
            });
    }); 
    </script>

And counter.php:

<?php
echo $_POST["id"];
if(!empty($_POST["id"]))
{
    $id = $_POST["id"];

    $connection=mysqli_connect("host","user","pass","db");
    if (mysqli_connect_errno())
    {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
        exit;
    }

    mysqli_query($connection,"UPDATE tbname SET amount= (amount+ 1) WHERE ID = '" . $id . "'");

    mysqli_close($connection);
    echo 'OK';
}
else
{
    echo 'NO ID PASSED';
}
?>

I'm having trouble updating only the value on the same row as the button pressed.When i run the page in this configuration counter.php returns no id passed and i think the problem is with the passing of the row id. Can anyone help me update only the value on the row with the pressed button?

I'm aware of sql injection but it's not the main problem now

Upvotes: 1

Views: 1596

Answers (3)

AddWeb Solution Pvt Ltd
AddWeb Solution Pvt Ltd

Reputation: 21681

Replace below script:

<script>
 $(function (){
    $('.press_me').click(function(){
      var id=<?php echo $row[ID]; ?>;          
          var request = $.ajax({
                          type: "POST",
                          url: "counter.php"
                        });
        request.done(function( msg ) {

              alert('Success');
             location.reload();
              return;

        });
        request.fail(function(jqXHR, textStatus) {
              alert( "Request failed: " + textStatus );
          });
  });
}); 
</script>

NOTE: I assume that you are working with single record. If not then it will going wrong.

If this is working wrong then replace .press_me line with below:

$id = $row['ID'];
echo "<td class='right-middle check'>" . "<img src='img/check.png' class='press_me' id='<?php print($id);?>' >" ."</td>";

And script is like:

var id = $(this).attr("id");

Hope this help you well!

Upvotes: 0

X A
X A

Reputation: 837

change you javascript, looks like you are not sending data at all

<script>
   $(function (){
            $('.press_me').click(function(){
        var id=<?php echo json_decode('$row[ID]'); ?>;          
            var request = $.ajax({
                                    type: "POST",
                                    url: "counter.php",
                                    // add this line
                                    data: { id: id}
                                  });
                                  request.done(function( msg ) {

                                        alert('Success');
                                       location.reload();
                                        return;

                                  });
                                  request.fail(function(jqXHR, textStatus) {
                                        alert( "Request failed: " + textStatus );
                                    });
            });
    }); 
    </script>

Upvotes: 2

paranoid
paranoid

Reputation: 7105

Your id is empty try this

echo "<td class='right-middle check'>" . "<img data-id='{$row['ID']}' src='img/check.png' class='press_me'>" ."</td>";

And in the script use this

  var id=$(this).data("id");  

Upvotes: 2

Related Questions