Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP - PayPal - MySQL Ongelma

Jami [17.01.2011 07:50:42]

#

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.

Jaska [17.01.2011 10:03:16]

#

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 +"'";

Jami [17.01.2011 15:23:21]

#

Kiitos tuosta, mutta voisiko joku auttaa tuon web puolen kanssa. Monet puhuu IPN jutusta, mutta en edes tajua miten se toimii..

QPRocky [17.01.2011 17:40:13]

#

https://www.paypal.com/ipn
Kurkkaas tuolta

Jami [17.01.2011 19:40:28]

#

Voiko joku silti lähettää koodin tähän? :)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta