hydravink
hydravink

Reputation: 63

How do I update MySQL database using a button's onclick event?

Ok I know this can't be done using PHP and I think it's done by using Ajax/Javascript... Unfortunately I'm very low on these and I need your help..

So I have made a <select> based on what players there are playing for the team the user has selected. It works fine, no problems.

What I need for it is a button that will add 1 XP to the player that the user has selected.

<?php
    $query = mysql_query("SELECT `team` FROM `users` WHERE `username`='". $_SESSION['username'] ."'"); 
    $row2 = mysql_fetch_assoc($query);

    $result = mysql_query("SELECT `name` FROM `players` WHERE `team`='". $row2['team'] ."'");

    $dropdown = "<select name='players'>";
    while($row = mysql_fetch_assoc($result)) {
        $dropdown .= "\r\n<option value='{$row['name']}'>{$row['name']}</option>";
    }

    $dropdown .= "\r\n</select>";
    echo $dropdown;
?>

    <button onclick="">Support</button>

In my case, the update would look something like this:

$oldxp = mysql_query("SELECT `xp` FROM `players` WHERE `name`="the option the user selected,got stuck here");
mysql_query("UPDATE `players`SET `xp`=''". $oldxp ."' + 1' WHERE `name` = "the option the user selected, got stuck here");

So what I need is how do I get what the user has selected and replace it with that "the option user selected, got stuck here" and how do I do this in Java since I can't put that PHP code in the onclick event because it won't work?

Thanks a lot.

Upvotes: 3

Views: 38135

Answers (2)

Awlad Liton
Awlad Liton

Reputation: 9351

Change your button html
-- add a onclick function
html:

<button onclick="saveData()">Support</button>

onclick in the button send an ajax request to the server and run your query.

jquery:

function saveData(){
      $.ajax({
        type: "POST",
        url: "your_php_page.php",
        data: { name: $("select[name='players']").val()},
        success:function( msg ) {
         alert( "Data Saved: " + msg );
        }
       });
  }

php:

your_php_page.php:

   $sql = "UPDATE `players`SET `xp`= `xp`+ 1 WHERE `name` = '".$_REQUEST['name']."'";
   if(mysql_query($sql)){
     return "success!";
   }
   else {
    return "failed!";
  }

you should not use mysql_* since it is deprecated. you should use pdo or mysqli_*

jquery ajax api doc

Upvotes: 5

Jono20201
Jono20201

Reputation: 3205

First off, Java and Javascript are totally different languages. They share very little except a name and their both a programming language.

You'd need to use Ajax to do this, so you'd need a PHP file on your server that the AJAX can request to run the query you're wanting. You would then use AJAX to request this file to add the XP, I suggest you use jQuery (http://jquery.com/) for AJAX calls as its much easier to use than pure javascript.

Once you have included jQuery into your site you can use the following to make an ajax call:

$.ajax({
    type: 'post',
    url: 'http://domain.com/myscript.php',
    success: function(data){
        // callback function
    }
});

Documentation: https://api.jquery.com/jQuery.ajax/

You could wrap the ajax call in a function and then call that function using onclick on the button you're wanting to use.

eg:

<button onclick='javascript:ajaxCall()'>Call AJAX</button>

function ajaxCall(){
    // include code above

    return false; // not always essential, but I usually return false.
}

Upvotes: 1

Related Questions