Hei!
1. WEB: Kun joku kirjoittaa PHP laatikkoon esimerkiksi "Jami" ja valitsee toisesta laatikosta esim. 5USD ja painaa "Donate!", aukeaa PayPal maksusivusto. Maksun jälkeen omaan databaseeni on tullut tietoa.
2. JAVA: Kun pelaaja kirjautuu peliin, peli tarkistaa onko tämän pelaajan nimellä tallennettu esim. "donateamount = 05", eli onko hän donatennut 5 USD. Kirjautuessani, peli ei edes taida tarkistaa tietokantaani ja lähettää tälläisen virheilmoituksen:
java.lang.NullPointerException
at MYSQL.donated5(MYSQL.java:47)
at client.intiliaze(client.java:9145)
at PlayerHandler.process(PlayerHandler.java:411)
at process.run(process.java:23)
at java.lang.Thread.run(Unknown Source)
1. PHP/MYSQL
BUYNOW.HTML:
<form name="form" method="post" action="donate.php"> Username: <input name="username" type="text" id="username"> Donate # <select name="donationamount2"> <option value="1">5 USD</option> <option value="2">10 USD</option> <option value="3">20 USD</option> <option value="4">30 USD</option> <option value="5">40 USD</option> <option value="6">75 USD</option> </select><br/><br/> <input type="submit" value="Donate!"/> </form>
DONATE.PHP:
<?php $host="mysql hostini"; $username="käyttäjätunnukseni"; $password="salasanani"; $db_name="tietokantani"; $link = mysql_connect("$host", "$username", "$password")or die("cannot connect"); mysql_select_db("$db_name")or die("cannot select DB"); $username=$_POST['username']; $username = stripslashes($username); $username = mysql_real_escape_string($username); function votenow($donateamount2) { $donateamount = ""; if($donateamount2) { switch($donateamount2) { case 1: $donateamount = "05"; break; case 2: $donateamount = "10"; break; case 3: $donateamount = "20"; break; case 4: $donateamount = "30"; break; case 5: $donateamount = "40"; break; case 6: $donateamount = "75"; break; default: die("Error!"); break; } } return $donateamount; } ?>
En osaa jatkaa tästä eteenpäin. Mitä minun pitäisi tehdä, että jos esim. valitaan "5 USD", tietokantaani tallentuisi username esim. "Jami" ja donateamount "05".
2. JAVA:
1. KOODI:
import java.sql.*; import java.security.MessageDigest; public class MYSQL { public static Connection con = null; public static Statement stm; public static void createConnection() { try { Class.forName("com.mysql.jdbc.Driver").newInstance(); con = DriverManager.getConnection("jdbc:mysql://mysql hostini/tietokantani", "käyttäjätunnukseni", "salasanani"); stm = con.createStatement(); } catch (Exception e) { e.printStackTrace(); } } public static ResultSet query(String s) throws SQLException { try { if (s.toLowerCase().startsWith("select")) { ResultSet rs = stm.executeQuery(s); return rs; } else { stm.executeUpdate(s); } return null; } catch (Exception e) { misc.println("MySQL Error:"+s); e.printStackTrace(); } return null; } public static void destroyCon() { try { stm.close(); con.close(); } catch (Exception e) { e.printStackTrace(); } } public static boolean donated5(String playerName) { try { String query = "SELECT * FROM `donate` WHERE `username` = '" + playerName + "' WHERE `donateamount` = '05'"; } catch (Exception e) { e.printStackTrace(); return false; } return true; } public static boolean donated10(String playerName) { try { String query = "SELECT * FROM `donate` WHERE `username` = '" + playerName + "' WHERE `donateamount` = '10'"; } catch (Exception e) { e.printStackTrace(); return false; } return true; } public static boolean donated20(String playerName) { try { String query = "SELECT * FROM `donate` WHERE `username` = '" + playerName + "' WHERE `donateamount` = '20'"; } catch (Exception e) { e.printStackTrace(); return false; } return true; } public static boolean donated30(String playerName) { try { String query = "SELECT * FROM `donate` WHERE `username` = '" + playerName + "' WHERE `donateamount` = '30'"; } catch (Exception e) { e.printStackTrace(); return false; } return true; } public static boolean donated40(String playerName) { try { String query = "SELECT * FROM `donate` WHERE `username` = '" + playerName + "' WHERE `donateamount` = '40'"; } catch (Exception e) { e.printStackTrace(); return false; } return true; } public static boolean donated75(String playerName) { try { String query = "SELECT * FROM `donate` WHERE `username` = '" + playerName + "' WHERE `donateamount` = '75'"; } catch (Exception e) { e.printStackTrace(); return false; } return true; } }
2. KOODI(ERI TIEDOSTO):
if(MYSQL.donated5(playerName)) { sM("Thank you for donating!"); } if(MYSQL.donated10(playerName)) { sM("Thank you for donating!"); } if(MYSQL.donated20(playerName)) { sM("Thank you for donating!"); } if(MYSQL.donated30(playerName)) { sM("Thank you for donating!"); } if(MYSQL.donated40(playerName)) { sM("Thank you for donating!"); } if(MYSQL.donated75(playerName)) { sM("Thank you for donating!"); }
sM tarkoittaa sendMessagea, eli pelaajalle tulee viesti hänen kirjautuessaan sisälle.
playerName taas tarkoittaa pelaajan käyttätunnusta.
Kiitos todella paljon. :)
Mod. lisäsi kooditagit.
En ole noita tietokantajuttuja käyttänyt Javan kanssa, mutta nuo donated-metodit luovat ainoastaan kyselyn. Missä se suoritetaan? Tuo merkkijono on roskaa heti kun metodin suoritus loppuu. Ja ylläpidettävyyden kannalta muuta
public static boolean donated40(String playerName)
muotoon
public static boolean donated(String playerName, int amount) String query = "SELECT * FROM `donate` WHERE `username` = '" + playerName + "' AND `donateamount` = '" + amount +"'";
Kiitos tuosta, mutta voisiko joku auttaa tuon web puolen kanssa. Monet puhuu IPN jutusta, mutta en edes tajua miten se toimii..
https://www.paypal.com/ipn
Kurkkaas tuolta
Voiko joku silti lähettää koodin tähän? :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.