├── figures
├── README.md
├── DatabaseDesignSchema.jpg
└── DataFlowDiagramOfKickfounder.jpg
├── .gitignore
├── php
├── TODO.txt
├── logout.php
├── index.php
├── signup.php
├── likeprocess.php
├── unlikeprocess.php
├── useredit.php
├── follownow.php
├── new_tag.php
├── unfollow.php
├── editcomplete.php
├── newproject.php
├── rate_process.php
├── taglist.php
├── new_pledge.php
├── checktime.php
├── pledgeprocess.php
├── charge.php
├── newcomment.php
├── new_upload_file.php
├── signupprocess.php
├── acthistory.php
├── loged.php
├── createproject.php
├── userpage.php
├── browse.php
├── home.php
└── displayproject.php
├── README.md
└── SQL Files
├── part1_query.sql
├── createTables.sql
└── part1_dataset.sql
/figures/README.md:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 |
--------------------------------------------------------------------------------
/php/TODO.txt:
--------------------------------------------------------------------------------
1 | 1. Recommend system base on user act and Tag
2 | 2. Automate check Charge record.
--------------------------------------------------------------------------------
/figures/DatabaseDesignSchema.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/googlr/KickFounder/HEAD/figures/DatabaseDesignSchema.jpg
--------------------------------------------------------------------------------
/figures/DataFlowDiagramOfKickfounder.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/googlr/KickFounder/HEAD/figures/DataFlowDiagramOfKickfounder.jpg
--------------------------------------------------------------------------------
/php/logout.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Successfully logout
5 | ";
10 | ?>
11 |
12 |
--------------------------------------------------------------------------------
/php/index.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Kickfounder
5 |
11 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/php/signup.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | New User Registration
5 |
12 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/php/likeprocess.php:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 |
10 | connect_error) {
17 | die("Database connect_error: " . $con->connect_error);
18 | }
19 | $like_sql = "INSERT INTO `LIKE` VALUES('".$_SESSION['loginname']."', '".$_GET['projectname']."');";
20 | mysqli_query($con, $like_sql);
21 | echo "Back To Project!
";
22 |
23 | ?>
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/php/unlikeprocess.php:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 |
10 | connect_error) {
17 | die("Database connect_error: " . $con->connect_error);
18 | }
19 | $like_sql = "DELETE FROM `LIKE` WHERE loginname='".$_SESSION['loginname']."' AND projectname='".$_GET['projectname']."'";
20 | //echo $like_sql;
21 | mysqli_query($con, $like_sql);
22 | echo "Back To Project!
";
23 |
24 | ?>
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/php/useredit.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | User Profile
5 | Your name:".$curr_login."";
9 | if(!empty($_POST['uedit'])){
10 | echo $_POST['say'];
11 | echo $_POST['hometown'];
12 | echo $_POST['interests'];
13 | echo $_POST['creditcard'];
14 | }
15 | echo "
";
16 | ?>
17 |
24 |
25 |
--------------------------------------------------------------------------------
/php/follownow.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | User Home
5 | connect_error) {
13 | die("Database connect_error: " . $con->connect_error);
14 | }
15 | //check if user already followed
16 | $follow_sql = "INSERT INTO `FOLLOW` VALUES ('".$_SESSION["loginname"]."','".$_GET['uloginname']."')";
17 | $follow_result = $con->query($follow_sql);
18 | echo "
";
19 | //echo $_GET['uloginname'];
20 |
21 |
22 | ?>
23 |
24 |
--------------------------------------------------------------------------------
/php/new_tag.php:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 |
10 | connect_error) {
18 | die("Database connect_error: " . $con->connect_error);
19 | }
20 |
21 | $projectname = mysqli_real_escape_string($con, $_GET["projectname"]);
22 | $tagname = mysqli_real_escape_string($con, $_POST["tag"]);
23 |
24 |
25 | $sql_new_tag = "INSERT INTO TAG VALUES('$projectname', '$tagname');";
26 |
27 | mysqli_query($con, $sql_new_tag);
28 | echo "Back To Project!
";
29 |
30 | ?>
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/php/unfollow.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | User Home
5 | connect_error) {
13 | die("Database connect_error: " . $con->connect_error);
14 | }
15 | //check if user already followed
16 | $unfollow_sql = "DELETE FROM FOLLOW WHERE bfname=\"".$_GET['uloginname']."\" AND fname=\"".$_SESSION["loginname"]."\"";
17 | $unfollow_result = $con->query($unfollow_sql);
18 | echo "
";
19 | //echo $_GET['uloginname'];
20 |
21 |
22 | ?>
23 |
24 |
--------------------------------------------------------------------------------
/php/editcomplete.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Edit Success
5 | connect_error) {
14 | die("Database connect_error: " . $con->connect_error);
15 | }
16 | $update_user_sql = "UPDATE USER SET say = \"".$_POST['say']."\",
17 | hometown=\"".$_POST['hometown']."\", interests=\"".$_POST['interests']."\",
18 | creditcard=\"".$_POST['creditcard']."\" WHERE loginname=\"".$curr_login."\"";
19 | mysqli_query($con, $update_user_sql);
20 | echo "
";
21 | ?>
22 |
23 |
--------------------------------------------------------------------------------
/php/newproject.php:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 |
10 | Welcome
11 | Start your new project here.
12 |
13 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/php/rate_process.php:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 | connect_error) {
18 | die("Database connect_error: " . $con->connect_error);
19 | }
20 |
21 | //$projectname = mysqli_real_escape_string($con, $_POST["projectname"]);
22 | $projectname = $_POST["projectname"];
23 |
24 | $loginname = $_SESSION['loginname'];
25 | $score = $_POST["star"];
26 |
27 | $sql_insert_rate = "INSERT INTO RATE VALUES('$projectname', '$loginname', Now(), '$score');";
28 |
29 | $con->query($sql_insert_rate);
30 | echo "Back To Project!
";
31 | ?>
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/php/taglist.php:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 | connect_error) {
18 | die("Database connect_error: " . $con->connect_error);
19 | }
20 | $tagname = mysqli_real_escape_string($con, $_GET['tagname']);
21 |
22 | $tag_sql = "select * from TAG WHERE tagname = '".$tagname."';";
23 | $tag_result = $con->query($tag_sql);
24 | echo "Project related to this tag: ";
25 | if ($tag_result->num_rows > 0) {
26 | while($row = $tag_result->fetch_assoc()) {
27 | echo "".$row["projectname"]."
";
28 |
29 | }
30 | }
31 | echo "";
32 | echo "
";
33 | ?>
34 |
35 |
36 |
--------------------------------------------------------------------------------
/php/new_pledge.php:
--------------------------------------------------------------------------------
1 | ";
4 | ?>
5 |
6 |
7 |
8 |
9 |
10 | connect_error) {
22 | die("Database connect_error: " . $con->connect_error);
23 | }
24 |
25 | $sql_new_pledge = "INSERT INTO PLEDGE VALUES('$projectname', '$loginname', Now(), '$amount')";
26 | $result_new_pledge = $con->query($sql_new_pledge);
27 |
28 | echo "You have Pledged successfully with ".$amount." $ for ".$projectname." ";
29 |
30 | ?>
31 |
32 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/php/checktime.php:
--------------------------------------------------------------------------------
1 | connect_error) {
11 | die("Database connect_error: " . $con->connect_error);
12 | }
13 | $sql_pledge_check1 = "UPDATE PROJECT SET projectstatus = 'succeed'
14 | WHERE projectstatus='ongoing' AND
15 | NOW()>=endtime AND
16 | (SELECT SUM(amount) FROM PLEDGE WHERE PLEDGE.projectname=Project.projectname) >= Project.minfund";
17 | $sql_pledge_check2 = "UPDATE PROJECT SET projectstatus = 'failed'
18 | WHERE projectstatus='ongoing' AND
19 | NOW()>=endtime AND
20 | (SELECT SUM(amount) FROM PLEDGE WHERE PLEDGE.projectname=Project.projectname) < Project.minfund";
21 |
22 | do{
23 | mysqli_query($con, $sql_pledge_check1);
24 | mysqli_query($con, $sql_pledge_check2);
25 | sleep($interval);
26 | }while(true);
27 |
28 | ?>
--------------------------------------------------------------------------------
/php/pledgeprocess.php:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 |
10 | connect_error) {
17 | die("Database connect_error: " . $con->connect_error);
18 | }
19 |
20 | $credit_card_check = "SELECT * FROM USER WHERE loginname='".$_SESSION['loginname']."'";
21 | $credit_result = $con->query($credit_card_check);
22 | while ($row = mysqli_fetch_array($credit_result)) {
23 | if ($row["creditcard"] == NULL) {
24 | echo "pledge fail add your credit card first---->>
";
25 | }
26 | else {
27 | $pledge_sql = "INSERT INTO PLEDGE VALUES('".$_SESSION['loginname']."', '".$_GET['projectname']."', NOW(), '".$_POST["pledge"]."');";
28 | echo "pledge success
";
29 | mysqli_query($con, $pledge_sql);
30 | }
31 |
32 | }
33 |
34 | echo "Back To Project!
";
35 |
36 | ?>
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/php/charge.php:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 | connect_error) {
20 | die("Database connect_error: " . $con->connect_error);
21 | }
22 |
23 | $charge_sql = "select * from CHARGE WHERE loginname = '$loginname';";
24 | $charge_result = $con->query($charge_sql);
25 | echo "My Charge: ";
26 | echo "Project Charge Time Amount ";
27 | if ($charge_result->num_rows > 0) {
28 | while($row = $charge_result->fetch_assoc()) {
29 | echo "";
30 | echo "".$row["projectname"]."
";
31 | echo "".$row["chargetime"]."
";
32 | echo "".$row["totalamount"]."
";
33 | echo " ";
34 | }
35 | }
36 | echo "
";
37 | echo "
";
38 | ?>
39 |
40 |
41 |
--------------------------------------------------------------------------------
/php/newcomment.php:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
9 |
10 |
11 | connect_error) {
23 | die("Database connect_error: " . $con->connect_error);
24 | }
25 |
26 | $sql_display_project = "INSERT INTO DISCUSS VALUES('".$projectname."','".$loginname."', Now(), ? )";
27 |
28 |
29 |
30 | /* Prepared statement, stage 1: prepare */
31 | if (!($stmt = $con->prepare($sql_display_project))) {
32 | echo "Prepare failed: (" . $con->errno . ") " . $con->error;
33 | }
34 |
35 | //bind the variables to the stmt
36 | $stmt -> bind_param("s", $content);
37 | //execute
38 | $stmt ->execute();
39 |
40 |
41 | echo "Comment successfully."." ";
42 | echo "Back To Project!
";
43 | ?>
44 |
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/php/new_upload_file.php:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
8 |
9 |
10 | ";
12 | $projectname=$_GET["projectname"];
13 | if (isset($_FILES['file']) && !empty($_FILES['file']['tmp_name'])) {
14 |
15 | // record the upload into the database
16 |
17 | $loginname = $_SESSION['loginname'];
18 | $matdes = $_POST["matdes"];
19 | $file = addslashes(file_get_contents($_FILES['file']['tmp_name']));
20 | $mysql_server_name="127.0.0.1:3306"; //server name
21 | $mysql_username="root"; // username
22 | $mysql_password="root"; // password
23 | $mysql_database="kickfounder"; // database name
24 | $con = new mysqli($mysql_server_name, $mysql_username, $mysql_password, $mysql_database);
25 | if ($con->connect_error) {
26 | die("Database connect_error: " . $con->connect_error);
27 | }
28 |
29 | $sql_new_upload_file = "INSERT INTO MATERIAL VALUES('$projectname', Now(), ?, '$file' );";
30 | /* Prepared statement, stage 1: prepare */
31 | if (!($stmt = $con->prepare($sql_new_upload_file))) {
32 | echo "Prepare failed: (" . $con->errno . ") " . $con->error;
33 | }
34 |
35 | //bind the variables to the stmt
36 | $stmt -> bind_param("s", $matdes);
37 | //execute
38 | $stmt ->execute();
39 | }
40 | else
41 | {echo "Not set";}
42 |
43 |
44 |
45 | echo "
";
46 |
47 |
48 | ?>
49 |
50 |
51 |
52 |
53 |
--------------------------------------------------------------------------------
/php/signupprocess.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Online Shopping System
5 | connect_error) {
27 | die("Database connect_error: " . $con->connect_error);
28 | }
29 | //check if user exist
30 | $user_check_sql = "SELECT loginname FROM user WHERE loginname=\"".$loginname."\"";
31 | $user_result = $con->query($user_check_sql);
32 | if ($user_result->num_rows > 0) {
33 | echo "User already exist!";
34 | }
35 | else {
36 | echo $password;
37 | $insert_user_sql = "INSERT INTO `USER`(`loginname`, `username`, `password`) VALUES('".$loginname."','".$username."','".$password."')";
38 | mysqli_query($con, $insert_user_sql);
39 | echo "Sign Up Success!";
40 | }
41 | echo "
";
42 | ?>
43 |
44 |
--------------------------------------------------------------------------------
/php/acthistory.php:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 | connect_error) {
20 | die("Database connect_error: " . $con->connect_error);
21 | }
22 |
23 | $act_sql = "select * from USERACT WHERE loginname = '$loginname' ORDER BY acttime DESC;";
24 | $act_result = $con->query($act_sql);
25 | echo "My History: ";
26 | if ($act_result->num_rows > 0) {
27 | while($row = $act_result->fetch_assoc()) {
28 | if ($row["acttype"] == "search") {
29 | if ($row["actvalue"] != "ALL*") {
30 | echo "Search keyword: ".$row["actvalue"]."
";
31 | }
32 |
33 | }
34 | else if ($row["acttype"] == "visusr" && $row["actvalue"] != $loginname) {
35 | $name_sql = "select * from USER WHERE loginname = '".$row["actvalue"]."'";
36 | $name_result = $con->query($name_sql);
37 | while($row1 = $name_result->fetch_assoc()) {
38 | echo "Visit ".$row1["username"]." home page.
";
39 | }
40 |
41 | }
42 | else if ($row["acttype"] == "vispro") {
43 | echo "Browse Project: ".$row["actvalue"]." .
";
44 | }
45 | }
46 | }
47 | echo "";
48 | echo "
";
49 | ?>
50 |
51 |
52 |
60 |
61 |
--------------------------------------------------------------------------------
/php/loged.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Loged
5 | connect_error) {
12 | die("Database connect_error: " . $con->connect_error);
13 | }
14 |
15 | $loginname = $_POST["loginname"];
16 | $password = $_POST["password"];
17 | /* Prepared statement, stage 1: prepare */
18 | if (!($stmt = $con->prepare("SELECT * FROM USER WHERE loginname=?"))) {
19 | echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
20 | }
21 |
22 | //bind the variables to the stmt
23 | $stmt -> bind_param("s",$loginname);
24 | //execute
25 | $stmt ->execute();
26 | $res = $stmt->get_result();
27 |
28 |
29 | /*
30 | //check if user exist
31 | $user_check_sql = "SELECT loginname FROM USER WHERE loginname=\"".$_POST["loginname"]."\" AND password=\"".$_POST["password"]."\"";
32 | $user_result = $con->query($user_check_sql);
33 | */
34 | //if ($user_result->num_rows < 1) {
35 | if ($res->num_rows > 0) {
36 | while($row = $res->fetch_assoc()) {
37 | if(password_verify($password, $row["password"])) {
38 | echo "Login Success!";
39 | // store customer name as session value
40 | session_start();
41 | $_SESSION['loginname'] = $_POST["loginname"];
42 | setcookie("user", $_SESSION['loginname'], time()+3600);
43 | echo "
";
44 | }
45 | else {
46 | echo "Your password or username is incorrect";
47 | echo "
";
48 | }
49 | }
50 |
51 | }
52 | else {
53 |
54 | echo "Your password or username is incorrect";
55 | echo "
";
56 |
57 | }
58 |
59 | //close
60 | $stmt -> close();
61 | ?>
62 |
63 |
--------------------------------------------------------------------------------
/php/createproject.php:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
10 |
11 |
12 | connect_error) {
30 | die("Database connect_error: " . $con->connect_error);
31 | }
32 |
33 | $loginname = $_SESSION['loginname'];
34 | $projectname = test_input($_POST["projectname"]);
35 | $description = $_POST["description"];
36 | $projectstatus = "ongoing";
37 | $minfund = $_POST["minfund"];
38 | $maxfund = $_POST["maxfund"];
39 | $posttime;
40 | $endtime = $_POST["pledgetime"]." 00:00:00";
41 | $plantime = $_POST["plantime"]." 00:00:00";
42 |
43 | $sql_validate_projectname = "select * from PROJECT WHERE projectname = '".$projectname."'";
44 | $result_validate_projectname = $con->query($sql_validate_projectname);
45 | $number_of_rows = $result_validate_projectname->num_rows;
46 |
47 | if($number_of_rows > 0){
48 | echo "Projectname is duplicated"." ";
49 | require("newproject.php");
50 | } else {
51 |
52 | $sql_insert_new_project =
53 | "INSERT INTO PROJECT VALUES(
54 | '$projectname',
55 | '$loginname',
56 | '$description',
57 | '$projectstatus',
58 | '$minfund',
59 | '$maxfund',
60 | Now(),
61 | '$endtime',
62 | '$plantime');
63 | ";
64 | $sql_insert_new_project =
65 | "INSERT INTO PROJECT VALUES(?, ?, ?, ?, ?, ?, Now(),?,?)";
66 |
67 |
68 |
69 |
70 | /* Prepared statement, stage 1: prepare */
71 | if (!($stmt = $con->prepare($sql_insert_new_project))) {
72 | echo "Prepare failed: (" . $con->errno . ") " . $con->error;
73 | }
74 |
75 | //bind the variables to the stmt
76 | $stmt -> bind_param("ssssssss", $projectname, $loginname, $description, $projectstatus, $minfund, $maxfund, $endtime, $plantime);
77 | //execute
78 | $stmt ->execute();
79 |
80 |
81 |
82 | }
83 | ?>
84 |
85 |
89 |
90 |
91 |
92 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Welcome to KickFounder
2 | ## Description
3 | [Kickfounder](https://github.com/googlr/KickFounder), a new database-backed website for crowdfunding aim to help people raise money for various activities. In this platform, users can either create projects or pledge money toward any projects they like. When a project is funded and completed, users who pledge the project can rate the project.
4 |
5 | In addition, the platform provide attractive social features, users can leave their comment and discuss projects, like a project, and follow other people. Moverover, based on user activity logs and project tags, etc., our recommendation algorithm will recommend relevant projects that users might be interested in.
6 |
7 | ## Main Features
8 | - Designed the relational schema and implemented a web-based user interface with PHP and mySQL.
9 | - Integrated the service with a recommendation system based on tags and user activity logs.
10 | - Leveraged multiple defensive techniques to mitigate SQL injection and cross-site scripting(XSS) threats, including but not limited to
11 | 1. PHP prepared statements
12 | 2. HTML input attribute(type, pattern, maxlength)
13 | 3. Manual test of input
14 |
15 | ## Database Design Schema
16 |
17 |
18 |
19 |
20 | ## Data Flow Diagram
21 |
22 |
23 |
24 | ## A few words from the co-founders and future work
25 | > In this project, we have designed the schema from scratch and implemented a functional website for crowdfunding. Instead of making a toy model, we think from the perspective of various real-world situations and aim to make the website practical and robust.
26 |
27 | > As previously shown, we have implemented the fundamental features for a crowdfunding website, where users are free to create, pledge, rate and comment on a project. If we could bring real payment methods into our system, our system will run like any other similar service.
28 |
29 | > Frankly speaking, as the co-founder of KickFounder, we still have a long way to go if we’d like to make it available to the public, especially when compared with existing competitors like `KickStarter` or `Indiegogo`. Though we have taken proactive measures to block out potential hackers, for instance, prevention on `SQL injection` and `cross-site scripting`, store the hash value of passwords instead of plain text, etc, the security of our system is far from perfect. The future work include but not limited to end-to-end encryption, anti-brute-force-password-guessing policy. By the way, A user experience designer position is opening to the public and anyone who has previous experience is welcomed to apply. Join now and make a difference with us in **KickFouder**.
30 |
--------------------------------------------------------------------------------
/php/userpage.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | User Home
5 | connect_error) {
13 | die("Database connect_error: " . $con->connect_error);
14 | }
15 | // add to user act
16 | $useract_sql = "INSERT INTO `USERACT` VALUES('".$_SESSION['loginname']."',now(), 'visusr', '".$_GET['uloginname']."')";
17 | mysqli_query($con, $useract_sql);
18 |
19 | // User Information
20 | $user_sql = "SELECT * FROM USER WHERE loginname=\"".$_GET['uloginname']."\"";
21 | $user_result = $con->query($user_sql);
22 | if ($user_result->num_rows > 0) {
23 | while($row = $user_result->fetch_assoc()) {
24 |
25 | echo "Username: ".$row["username"]."
";
26 | echo "".$row["say"]."
";
27 | }
28 | }
29 | //check if user already followed
30 | $follow_check_sql = "SELECT * FROM FOLLOW WHERE bfname=\"".$_GET['uloginname']."\" AND fname=\"".$_SESSION["loginname"]."\"";
31 | $follow_result = $con->query($follow_check_sql);
32 | if ($follow_result->num_rows < 1) {
33 | echo "
";
34 | }
35 | else {
36 | echo "
";
37 |
38 | }
39 |
40 | // Follow action
41 | $act_sql1 = "SELECT *
42 | FROM DISCUSS, `USER` WHERE USER.loginname=DISCUSS.loginname AND USER.loginname='".$_GET['uloginname']."'";
43 | $act_sql2 = "SELECT *
44 | FROM PROJECT, `USER` WHERE USER.loginname=PROJECT.loginname AND USER.loginname='".$_GET['uloginname']."'";
45 | $act_sql3 = "SELECT *
46 | FROM PLEDGE, `USER` WHERE USER.loginname=PLEDGE.loginname AND USER.loginname='".$_GET['uloginname']."'";
47 | $act_result1 = $con->query($act_sql1);
48 | $act_result2 = $con->query($act_sql2);
49 | $act_result3 = $con->query($act_sql3);
50 | echo "Recent activity
";
51 | if ($act_result1->num_rows > 0) {
52 | while($row = $act_result1->fetch_assoc()) {
53 | echo "".$row["username"]." comment ".$row["projectname"]."
";
54 | }
55 | }
56 | if ($act_result2->num_rows > 0) {
57 | while($row = $act_result2->fetch_assoc()) {
58 | echo "".$row["username"]." create Project: ".$row["projectname"]."
";
59 | }
60 | }
61 | if ($act_result3->num_rows > 0) {
62 | while($row = $act_result3->fetch_assoc()) {
63 | echo "".$row["username"]." pledge ".$row["projectname"]."
";
64 | }
65 | }
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 | echo "
";
74 | ?>
75 |
76 |
88 |
--------------------------------------------------------------------------------
/php/browse.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Browse
5 | connect_error) {
17 | die("Database connect_error: " . $con->connect_error);
18 | }
19 | echo "Projects:
";
20 | // Project list
21 | if ($keyw == "" ) {
22 | $project_sql = "SELECT * FROM PROJECT";
23 | $useract_sql = "INSERT INTO `USERACT` VALUES('".$_SESSION['loginname']."',now(), 'search', 'ALL*')";
24 | $project_result = $con->query($project_sql);
25 | if ($project_result->num_rows > 0) {
26 | while($row = $project_result->fetch_assoc()) {
27 | echo "".$row["projectname"]."
";
28 | }
29 | }
30 |
31 | }
32 | else {
33 | //$project_sql = "SELECT * FROM PROJECT WHERE projectname LIKE "."\"%".$keyw."%\"";
34 |
35 | /* Prepared statement, stage 1: prepare */
36 | if (!($stmt = $con->prepare("SELECT * FROM PROJECT WHERE projectname LIKE ? OR description LIKE ?"))) {
37 | echo "Prepare failed: (" . $con->errno . ") " . $con->error;
38 | }
39 |
40 |
41 | //bind the variables to the stmt
42 | $keywords = "%".$keyw."%";
43 | $stmt -> bind_param("ss",$keywords, $keywords);
44 |
45 | //execute
46 | $stmt ->execute();
47 |
48 | $project_result = $stmt->get_result();
49 |
50 | $projarr = array();
51 | if ($project_result->num_rows > 0) {
52 |
53 | while($row = $project_result->fetch_assoc()) {
54 |
55 | $projarr[]=$row["projectname"];
56 | //echo "".$row["projectname"]."
";
57 | }
58 | }
59 | $stmt -> close();
60 | if (!($stmt2 = $con->prepare("SELECT * FROM TAG WHERE tagname= ?"))) {
61 | echo "Prepare failed: (" . $con->errno . ") " . $con->error;
62 | }
63 | $stmt2 -> bind_param("s",$keyw);
64 | $stmt2 ->execute();
65 | $project_result2 = $stmt2->get_result();
66 | if ($project_result2->num_rows > 0) {
67 |
68 | while($row = $project_result2->fetch_assoc()) {
69 |
70 | $projarr[]=$row["projectname"];
71 | //echo "".$row["projectname"]."
";
72 | }
73 | }
74 | $stmt2 -> close();
75 | $projarr = array_flip(array_flip($projarr));
76 | echo " Recommed this project to you: ";
77 | foreach ($projarr as $recom_proj){
78 | echo "".$recom_proj." ";
79 | }
80 | echo "
";
81 |
82 |
83 | //$useract_sql = "INSERT INTO `USERACT` VALUES('".$_SESSION['loginname']."',now(), 'search', '".$keyw."')";
84 | /* Prepared statement, stage 1: prepare */
85 | if (!($ureract_stmt = $con->prepare("INSERT INTO `USERACT` VALUES('".$_SESSION['loginname']."',now(), 'search', ?)"))) {
86 | echo "Prepare failed: (" . $con->errno . ") " . $con->error;
87 | }
88 |
89 | //bind the variables to the ureract_stmt
90 | $ureract_keyw = $keyw;
91 | $ureract_stmt -> bind_param("s", $ureract_keyw );
92 | //execute
93 | $ureract_stmt ->execute();
94 |
95 |
96 |
97 | }
98 |
99 |
100 |
101 | echo "
";
102 |
103 | ?>
104 |
105 |
--------------------------------------------------------------------------------
/SQL Files/part1_query.sql:
--------------------------------------------------------------------------------
1 | # proj1 c
2 | USE kickfounder;
3 | # 1
4 | INSERT INTO `USER`(`loginname`, `username`, `password`)
5 | VALUES ('johnth1@gmail.com', 'John Wu', '12345678');
6 | # SELECT * FROM USER;
7 | # 2
8 | SELECT projectname FROM PROJECT
9 | WHERE projectstatus="ongoing"
10 | AND description LIKE "%jazz%"
11 | ORDER BY posttime DESC;
12 | # 3
13 | SELECT pl.loginname, SUM(amount)
14 | FROM PLEDGE AS pl JOIN TAG AS tag
15 | ON pl.projectname = tag.projectname
16 | GROUP BY pl.loginname
17 | HAVING pl.chargestatus = 'succeed' AND tag.tagname = 'jazz';
18 | # 4
19 | SELECT loginname FROM PROJECT
20 | WHERE projectname IN (
21 | SELECT PROJECT.projectname
22 | FROM RATE, PROJECT
23 | WHERE projectstatus="complete" AND
24 | PROJECT.projectname=RATE.projectname
25 | GROUP BY PROJECT.projectname
26 | HAVING AVG(score) >= 4
27 | )
28 | GROUP BY loginname
29 | HAVING COUNT(loginname) >=3;
30 | # 5
31 | SELECT content
32 | FROM DISCUSS AS dis
33 | WHERE dis.loginname IN (
34 | SELECT bfname FROM FOLLOW AS fol
35 | WHERE fname = 'BobInBrooklyn');
36 | # 6
37 | INSERT INTO `PROJECT`(`projectname`, `loginname`, `description`, `projectstatus`, `minfund`, `maxfund`, `posttime`, `endtime`, `plantime`)
38 | VALUES ('Great song', 'John Wu', 'I want produce a song, do you like that?', 'ongoing', 200, 300, '2017-03-11 12:10:29', '2017-05-11 12:10:29', '2017-09-12 12:10:29');
39 | SELECT * FROM PROJECT;
40 |
41 | # 7
42 | INSERT INTO PLEDGE(`loginname`, `projectname`, `amount`, `pledgetime`, chargestatus)
43 | VALUES ('BobInBrooklyn', 'KickFounder', 10000, '2017-04-13 18:30:59', 'ongoing');
44 |
45 | # 8
46 | delimiter //
47 | CREATE TRIGGER charge_trigger AFTER INSERT ON PLEDGE
48 | FOR EACH ROW BEGIN
49 | IF (SELECT SUM(amount) FROM PLEDGE WHERE PLEDGE.projectname=NEW.projectname) >= (SELECT maxfund FROM PROJECT WHERE PROJECT.projectname=NEW.projectname) THEN
50 | UPDATE PROJECT SET projectstatus='successed' WHERE PROJECT.projectname=NEW.projectname;
51 | INSERT INTO `CHARGE` VALUE (NEW.loginname, NEW.projectname, NOW(),
52 | (SELECT SUM(amount) FROM PLEDGE WHERE PLEDGE.projectname=NEW.projectname), (SELECT creditcard FROM USER WHERE USER.loginname=NEW.loginname));
53 | END IF;
54 | END; //
55 | delimiter ;
56 |
57 | DELIMITER |
58 |
59 | DROP PROCEDURE IF EXISTS e_test |
60 | CREATE PROCEDURE e_test()
61 |
62 | BEGIN
63 | DECLARE i INT DEFAULT 1;# can not be 0
64 | WHILE i <= (SELECT COUNT(*) FROM PROJECT WHERE NOW() > endtime ORDER BY projectname)
65 | DO
66 |
67 | IF (SELECT SUM(amount) FROM PLEDGE WHERE projectname=(SELECT projectname FROM PROJECT WHERE NOW() > endtime ORDER BY projectname LIMIT i-1, 1)) >= (SELECT minfund FROM PROJECT WHERE PROJECT.projectname=(SELECT projectname FROM PROJECT WHERE NOW() > endtime ORDER BY projectname LIMIT i-1, 1)) THEN
68 | UPDATE PROJECT SET projectstatus='successed' WHERE projectname=(SELECT projectname FROM PROJECT WHERE NOW() > endtime ORDER BY projectname LIMIT i-1, 1);
69 | INSERT INTO `CHARGE` VALUE ((SELECT loginname FROM PROJECT WHERE NOW() > endtime ORDER BY projectname LIMIT i-1, 1),
70 | (SELECT projectname FROM PROJECT WHERE NOW() > endtime ORDER BY projectname LIMIT i-1, 1), NOW(),
71 | (SELECT SUM(amount) FROM PLEDGE WHERE PLEDGE.projectname=SELECT projectname FROM PROJECT WHERE NOW() > endtime ORDER BY projectname LIMIT i-1, 1)), (SELECT creditcard FROM USER WHERE USER.loginname=(SELECT loginname FROM PROJECT WHERE NOW() > endtime ORDER BY projectname LIMIT i-1, 1)));
72 |
73 | ELSE
74 | UPDATE PROJECT SET projectstatus='failed' WHERE PLEDGE.projectname=SELECT projectname FROM PROJECT WHERE NOW() > endtime ORDER BY projectname LIMIT i-1, 1);
75 | END IF;
76 | SET i=i+1;
77 | END WHILE ;
78 | END
79 |
80 | |
81 |
82 | SET GLOBAL event_scheduler = 1; |
83 | CREATE EVENT IF NOT EXISTS event_test
84 |
85 | ON SCHEDULE EVERY 1 SECOND
86 |
87 | ON COMPLETION PRESERVE
88 |
89 | DO CALL e_test();
90 | |
91 | ALTER EVENT event_test ON
92 |
93 | COMPLETION PRESERVE ENABLE;
94 | |
95 |
96 | # NEW
97 | UPDATE PROJECT SET projectstatus = 'succeed'
98 | WHERE projectstatus="ongoing" AND
99 | NOW()>=endtime AND
100 | (SELECT SUM(amount) FROM PLEDGE WHERE PLEDGE.projectname=Project.projectname) >= Project.minfund
101 | ;
102 |
103 | UPDATE PROJECT SET projectstatus = 'failed'
104 | WHERE projectstatus="ongoing" AND
105 | NOW()>=endtime AND
106 | (SELECT SUM(amount) FROM PLEDGE WHERE PLEDGE.projectname=Project.projectname) < Project.minfund
107 | ;
108 |
109 | delimiter //
110 | CREATE TRIGGER charge_trigger AFTER UPDATE ON PROJECT
111 | FOR EACH ROW BEGIN
112 | IF (SELECT projectstatus FROM PROJECT WHERE PROJECT.projectname=NEW.projectname) = 'succeed' THEN
113 | INSERT INTO `CHARGE` VALUE (NEW.loginname, NEW.projectname, NOW(),
114 | (SELECT SUM(amount) FROM PLEDGE WHERE PLEDGE.projectname=NEW.projectname), (SELECT creditcard FROM USER WHERE USER.loginname=NEW.loginname));
115 | END IF;
116 | END; //
117 | delimiter ;
118 |
--------------------------------------------------------------------------------
/SQL Files/createTables.sql:
--------------------------------------------------------------------------------
1 | USE kickfounder;
2 | SET FOREIGN_KEY_CHECKS=0;
3 |
4 | # USER: loginname, username, password, say, hometown, interests, creditcard
5 | DROP TABLE IF EXISTS `USER`;
6 |
7 | CREATE TABLE `USER` (
8 | `loginname` varchar(40) NOT NULL,
9 | `username` varchar(40) NOT NULL,
10 | `password` varchar(100) NOT NULL,
11 | `say` varchar(255) DEFAULT NULL,
12 | `hometown` varchar(40) DEFAULT NULL,
13 | `interests` varchar(40) DEFAULT NULL,
14 | `creditcard` varchar(40) DEFAULT NULL,
15 | PRIMARY KEY (`loginname`)
16 | );
17 |
18 |
19 | # PROJECT: projectname, loginname, description, status, posttime, minfund, maxfund, endtime, plantime
20 | DROP TABLE IF EXISTS `PROJECT`;
21 |
22 | CREATE TABLE `PROJECT` (
23 | `projectname` varchar(100) NOT NULL,
24 | `loginname` varchar(40) NOT NULL,
25 | `description` varchar(4096) NOT NULL,
26 | `projectstatus` varchar(20) NOT NULL, #ongoing, succeed, failed, complete
27 | `minfund` decimal(10,2) DEFAULT NULL,
28 | `maxfund` decimal(10,2) DEFAULT NULL,
29 | `posttime` DATETIME DEFAULT NULL,
30 | `endtime` DATETIME DEFAULT NULL,
31 | `plantime` DATETIME DEFAULT NULL,
32 | PRIMARY KEY (`projectname`),
33 | FOREIGN KEY (`loginname`) REFERENCES `USER` (`loginname`)
34 | );
35 |
36 | # TAG: projectname, tagname
37 | DROP TABLE IF EXISTS `TAG`;
38 |
39 | CREATE TABLE `TAG` (
40 | `projectname` varchar(100) NOT NULL,
41 | `tagname` varchar(40) NOT NULL,
42 | PRIMARY KEY (`projectname`, `tagname`),
43 | FOREIGN KEY (`projectname`) REFERENCES `PROJECT` (`projectname`)
44 | );
45 |
46 | # DISCUSS: loginname, projectname, commmenttime, content
47 | DROP TABLE IF EXISTS `DISCUSS`;
48 |
49 | CREATE TABLE `DISCUSS` (
50 | `projectname` varchar(100) NOT NULL,
51 | `loginname` varchar(40) NOT NULL,
52 | `commenttime` DATETIME NOT NULL,
53 | `content` varchar(4096) DEFAULT NULL,
54 | PRIMARY KEY (`projectname`, `loginname`, `commenttime`),
55 | FOREIGN KEY (`projectname`) REFERENCES `PROJECT` (`projectname`),
56 | FOREIGN KEY (`loginname`) REFERENCES `USER` (`loginname`)
57 | );
58 |
59 | # MATERIAL: projectname, uploadtime, matdes, file
60 | DROP TABLE IF EXISTS `MATERIAL`;
61 |
62 | CREATE TABLE `MATERIAL` (
63 | `projectname` varchar(100) NOT NULL,
64 | `uploadtime` DATETIME NOT NULL,
65 | `matdes` varchar(4096) DEFAULT NULL,
66 | `file` mediumblob DEFAULT NULL,
67 | PRIMARY KEY (`projectname`, `uploadtime`),
68 | FOREIGN KEY (`projectname`) REFERENCES `PROJECT` (`projectname`)
69 | );
70 |
71 | # RATE: projectname, loginname, score, ratetime
72 | DROP TABLE IF EXISTS `RATE`;
73 | CREATE TABLE `RATE` (
74 | `projectname` varchar(100) NOT NULL,
75 | `loginname` varchar(40) NOT NULL,
76 | `ratetime` DATETIME NOT NULL,
77 | `score` float DEFAULT 0,
78 | PRIMARY KEY (`projectname`, `loginname`),
79 | FOREIGN KEY (`projectname`) REFERENCES `PROJECT` (`projectname`),
80 | FOREIGN KEY (`loginname`) REFERENCES `USER` (`loginname`)
81 | );
82 |
83 | # PLEDGE: loginname, projectname, amount, pledgetime
84 | DROP TABLE IF EXISTS `PLEDGE`;
85 | CREATE TABLE `PLEDGE` (
86 | `loginname` varchar(40) NOT NULL,
87 | `projectname` varchar(100) NOT NULL,
88 | `pledgetime` DATETIME NOT NULL,
89 | `amount` decimal(10,2) DEFAULT NULL,
90 | #`chargestatus` varchar(20) NOT NULL, #ongoing, succeed, failed
91 | PRIMARY KEY (`projectname`, `loginname`,`pledgetime`),
92 | FOREIGN KEY (`projectname`) REFERENCES `PROJECT` (`projectname`),
93 | FOREIGN KEY (`loginname`) REFERENCES `USER` (`loginname`)
94 | );
95 |
96 | # CHARGE: loginname, projectname, chargetime, totalamount, creditcard
97 | DROP TABLE IF EXISTS `CHARGE`;
98 | CREATE TABLE `CHARGE` (
99 | `loginname` varchar(40) NOT NULL,
100 | `projectname` varchar(100) NOT NULL,
101 | `chargetime` DATETIME NOT NULL,
102 | `totalamount` decimal(10,2) DEFAULT NULL,
103 | `creditcard` varchar(40) NOT NULL,
104 | PRIMARY KEY (`projectname`, `loginname`),
105 | FOREIGN KEY (`projectname`) REFERENCES `PROJECT` (`projectname`),
106 | FOREIGN KEY (`loginname`) REFERENCES `USER` (`loginname`)
107 | );
108 |
109 | # LIKE: loginname, projectname
110 | DROP TABLE IF EXISTS `LIKE`;
111 | CREATE TABLE `LIKE` (
112 | `loginname` varchar(40) NOT NULL,
113 | `projectname` varchar(100) NOT NULL,
114 | PRIMARY KEY (`projectname`, `loginname`),
115 | FOREIGN KEY (`projectname`) REFERENCES `PROJECT` (`projectname`),
116 | FOREIGN KEY (`loginname`) REFERENCES `USER` (`loginname`)
117 | );
118 | # FOLLOW: fname, bfname
119 | DROP TABLE IF EXISTS `FOLLOW`;
120 | CREATE TABLE `FOLLOW` (
121 | `fname` varchar(40) NOT NULL,
122 | `bfname` varchar(40) NOT NULL,
123 | PRIMARY KEY (`fname`, `bfname`),
124 | FOREIGN KEY (`fname`) REFERENCES `USER` (`loginname`),
125 | FOREIGN KEY (`bfname`) REFERENCES `USER` (`loginname`)
126 | );
127 |
128 | # USERACT: loginname, acttime, acttype, actvalue
129 | DROP TABLE IF EXISTS `USERACT`;
130 | CREATE TABLE `USERACT` (
131 | `loginname` varchar(40) NOT NULL,
132 | `acttime` DATETIME NOT NULL,
133 | `acttype` varchar(40) NOT NULL, # search, vispro, visusr
134 | `actvalue` varchar(60) NOT NULL,
135 | PRIMARY KEY (`loginname`, `acttime`),
136 | FOREIGN KEY (`loginname`) REFERENCES `USER` (`loginname`)
137 | );
138 |
--------------------------------------------------------------------------------
/SQL Files/part1_dataset.sql:
--------------------------------------------------------------------------------
1 | # USER
2 | INSERT INTO `USER` VALUES('BobInBrooklyn','Bob Stark','qwert123','Change the world','Brooklyn','Skiing','8888 8888 8888 8888');
3 | INSERT INTO `USER` VALUES('johnth1@gmail.com','John Wu','12345678','To be or not to be','Manhattan','Money','2222 2222 2222 2222');
4 | INSERT INTO `USER` VALUES('AllenShow','Allen Degenerous','hi5allen','Gay pride, LGBT go','Queens','TV shows','7777 7777 7777 7777');
5 | INSERT INTO `USER` VALUES('CaptainAmerican','Steve Rogers','lovepeggy','I can do this all day','Brooklyn','Dancing','6666 6666 6666 6666');
6 | INSERT INTO `USER` VALUES('DeadPool','Wade Wilson','deadpool','Screw the heros','Canada','Porn','3333 3333 3333 3333');
7 |
8 | # PROJECT
9 | INSERT INTO `PROJECT`(`projectname`, `loginname`, `description`, `projectstatus`, `minfund`, `maxfund`, `posttime`, `endtime`, `plantime`) VALUES ('Great song', 'johnth1@gmail.com', 'I want produce a jazz, do you like that?', 'ongoing', 500, 800, '2017-03-12 12:10:29', '2017-05-12 12:10:29', '2017-09-13 12:10:29');
10 | INSERT INTO `PROJECT`(`projectname`, `loginname`, `description`, `projectstatus`, `minfund`, `maxfund`, `posttime`, `endtime`, `plantime`) VALUES ('Good Music', 'BobInBrooklyn', 'Jazz is my life! Come on, let dance.', 'ongoing', 300, 400, '2017-03-11 12:10:29', '2017-05-11 12:10:29', '2017-10-13 12:10:29');
11 | INSERT INTO `PROJECT`(`projectname`, `loginname`, `description`, `projectstatus`, `minfund`, `maxfund`, `posttime`, `endtime`, `plantime`) VALUES ('Good Music2', 'DeadPool', 'Jazz is my life! Come on, let dance.', 'ongoing', 304, 4060, '2017-03-15 12:10:29', '2017-04-11 12:16:29', '2017-11-13 12:10:29');
12 | INSERT INTO `PROJECT`(`projectname`, `loginname`, `description`, `projectstatus`, `minfund`, `maxfund`, `posttime`, `endtime`, `plantime`) VALUES ('Music part1', 'BobInBrooklyn', 'Jazz is my life! Come on, let dance.', 'complete', 340, 440, '2017-03-13 12:10:29', '2017-05-13 12:10:29', '2017-10-14 12:10:29');
13 | INSERT INTO `PROJECT`(`projectname`, `loginname`, `description`, `projectstatus`, `minfund`, `maxfund`, `posttime`, `endtime`, `plantime`) VALUES ('Music part2', 'BobInBrooklyn', 'Jazz is my life! Come on, let dance.', 'complete', 400, 500, '2017-03-14 12:10:29', '2017-05-14 12:10:29', '2017-10-15 12:10:29');
14 | INSERT INTO `PROJECT`(`projectname`, `loginname`, `description`, `projectstatus`, `minfund`, `maxfund`, `posttime`, `endtime`, `plantime`) VALUES ('Music part3', 'BobInBrooklyn', 'Jazz is my life! Come on, let dance.', 'complete', 500, 600, '2017-04-15 12:10:29', '2017-05-15 12:10:29', '2017-10-16 12:10:29');
15 | # RATE
16 | INSERT INTO `RATE` VALUES ('Music part1', 'DeadPool','2017-03-16 12:10:29', 5);
17 | INSERT INTO `RATE` VALUES ('Music part2', 'DeadPool','2017-03-16 12:10:39', 5);
18 | INSERT INTO `RATE` VALUES ('Music part3', 'DeadPool','2017-03-16 12:10:49', 5);
19 |
20 | # TAG
21 | INSERT INTO `TAG` VALUES('Great song','jazz');
22 | INSERT INTO `TAG` VALUES('Great song','vocal');
23 | INSERT INTO `TAG` VALUES('Great song','music');
24 | INSERT INTO `TAG` VALUES('Good Music','jazz');
25 | INSERT INTO `TAG` VALUES('Good Music','music');
26 | INSERT INTO `TAG` VALUES('Music part1','jazz');
27 | INSERT INTO `TAG` VALUES('Music part1','music');
28 | INSERT INTO `TAG` VALUES('Music part2','jazz');
29 | INSERT INTO `TAG` VALUES('Music part2','music');
30 | INSERT INTO `TAG` VALUES('Music part3','jazz');
31 | INSERT INTO `TAG` VALUES('Music part3','music');
32 |
33 | # DISCUSS
34 | INSERT INTO `DISCUSS` VALUES('Great song','johnth1@gmail.com','2017-03-12 12:11:00','Voice from heaven, thank you for your support');
35 | INSERT INTO `DISCUSS` VALUES('Great song','AllenShow','2017-03-12 12:12:12','First one to comment LOL');
36 | INSERT INTO `DISCUSS` VALUES('Great song','DeadPool','2017-03-15 17:12:00','I hate loud music');
37 | INSERT INTO `DISCUSS` VALUES('Good Music','BobInBrooklyn','2017-03-11 13:10:45','Jazz you have never heard before, you can not miss it');
38 | INSERT INTO `DISCUSS` VALUES('Good Music','CaptainAmerican','2017-03-15 17:10:45','Yo~ bro, we are brooklyn boys');
39 | INSERT INTO `DISCUSS` VALUES('Music part1','BobInBrooklyn','2017-03-13 13:10:29','Here comes BobInBrooklyn, Let us rock together');
40 | INSERT INTO `DISCUSS` VALUES('Music part1','AllenShow','2017-04-13 14:10:29','It is gona to be HUGE');
41 | INSERT INTO `DISCUSS` VALUES('Music part1','DeadPool','2017-04-17 13:13:29','Why kate perry is still single? soooo sad');
42 | INSERT INTO `DISCUSS` VALUES('Music part2','CaptainAmerican','2017-03-14 12:15:37','Go, Brooklyn boys, go');
43 | INSERT INTO `DISCUSS` VALUES('Music part2','AllenShow','2017-03-18 19:35:00','Master Piece, like always');
44 |
45 | #PLEDGE
46 | SET SQL_SAFE_UPDATES=0;
47 | INSERT INTO `PLEDGE` VALUES ('johnth1@gmail.com', 'Great song', '2017-04-01 12:10:29', 100);
48 | INSERT INTO `PLEDGE` VALUES ('johnth1@gmail.com', 'Great song', '2017-04-01 13:10:29', 200);
49 | INSERT INTO `PLEDGE` VALUES ('johnth1@gmail.com', 'Great song', '2017-04-01 14:10:29', 800);
50 | INSERT INTO `PLEDGE` VALUES ('johnth1@gmail.com', 'Good Music', '2017-04-01 15:10:29', 700);
51 | INSERT INTO `PLEDGE` VALUES ('johnth1@gmail.com', 'Music part1', '2017-04-01 16:10:29', 100);
52 | INSERT INTO `PLEDGE` VALUES ('johnth1@gmail.com', 'Music part2', '2017-04-01 17:10:29', 100);
53 | INSERT INTO `PLEDGE` VALUES ('johnth1@gmail.com', 'Music part3', '2017-04-01 18:10:29', 100);
54 |
55 | # FOLLOW
56 | # FOLLOW
57 | INSERT INTO `FOLLOW` VALUES('BobInBrooklyn', 'AllenShow');
58 | INSERT INTO `FOLLOW` VALUES('BobInBrooklyn', 'CaptainAmerican');
59 | INSERT INTO `FOLLOW` VALUES('BobInBrooklyn', 'DeadPool');
60 | INSERT INTO `FOLLOW` VALUES('BobInBrooklyn', 'johnth1@gmail.com');
61 | INSERT INTO `FOLLOW` VALUES('AllenShow','BobInBrooklyn');
62 | INSERT INTO `FOLLOW` VALUES('AllenShow', 'DeadPool');
63 | INSERT INTO `FOLLOW` VALUES('AllenShow', 'CaptainAmerican');
64 | INSERT INTO `FOLLOW` VALUES('CaptainAmerican', 'AllenShow');
65 | INSERT INTO `FOLLOW` VALUES('CaptainAmerican', 'DeadPool');
66 | INSERT INTO `FOLLOW` VALUES('DeadPool', 'AllenShow');
67 |
--------------------------------------------------------------------------------
/php/home.php:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 | ";
20 | die("Session or Cookie Error!");
21 | exit();
22 | }
23 |
24 | }
25 |
26 | echo "User Home: ".$_SESSION['loginname']." ";
27 | $mysql_server_name="127.0.0.1:3306"; //server name
28 | $mysql_username="root"; // username
29 | $mysql_password="root"; // password
30 | $mysql_database="kickfounder"; // database name
31 | $con = new mysqli($mysql_server_name, $mysql_username, $mysql_password, $mysql_database);
32 | if ($con->connect_error) {
33 | die("Database connect_error: " . $con->connect_error);
34 | }
35 |
36 |
37 |
38 | echo "
";
39 | echo "
";
40 | echo "
";
41 | echo "
";
42 | echo "
";
43 |
44 | echo "";
48 |
49 |
50 | if(!empty($_POST['find'])){
51 | echo $_POST['keyword'];
52 | }
53 |
54 | // Project list
55 |
56 | $project_sql = "SELECT projectname FROM PROJECT WHERE loginname=\"".$_SESSION['loginname']."\"";
57 | $project_result = $con->query($project_sql);
58 | echo " My Projects: ";
59 | if ($project_result->num_rows > 0) {
60 |
61 | while($row = $project_result->fetch_assoc()) {
62 | echo "".$row["projectname"]."
";
63 | }
64 | }
65 | echo "
";
66 | // Like list
67 |
68 | $like_sql = "SELECT projectname FROM `LIKE` WHERE loginname=\"".$_SESSION['loginname']."\"";
69 | $like_result = $con->query($like_sql);
70 | echo " My LIKES: ";
71 | if ($like_result->num_rows > 0) {
72 | while($row = $like_result->fetch_assoc()) {
73 | echo "".$row["projectname"]."
";
74 | }
75 | }
76 |
77 | echo "
";
78 | // Pledge List
79 | $pledge_sql = "SELECT * FROM PLEDGE WHERE loginname=\"".$_SESSION['loginname']."\"";
80 | $pledge_result = $con->query($pledge_sql);
81 | echo "My PLEDGE: ";
82 | echo " Project Pledge Time Amount ";
83 | if ($pledge_result->num_rows > 0) {
84 | while($row = $pledge_result->fetch_assoc()) {
85 | echo "";
86 | echo "".$row["projectname"]."
";
87 | echo "".$row["pledgetime"]."
";
88 | echo "".$row["amount"]."
";
89 | echo " ";
90 | }
91 | }
92 | echo "
";
93 |
94 | // Follow List
95 | $follow_sql = "SELECT * FROM FOLLOW, USER WHERE USER.loginname=FOLLOW.bfname AND fname=\"".$_SESSION['loginname']."\"";
96 | $follow_result = $con->query($follow_sql);
97 | echo "My FOLLOWS: ";
98 | if ($follow_result->num_rows > 0) {
99 | while($row = $follow_result->fetch_assoc()) {
100 | echo "".$row["username"]."
";
101 | }
102 | }
103 | echo "
";
104 |
105 | // Follow action
106 | $act_sql1 = "SELECT *
107 | FROM DISCUSS, `USER` WHERE USER.loginname=DISCUSS.loginname AND USER.loginname IN (
108 | SELECT bfname FROM FOLLOW WHERE fname=\"".$_SESSION['loginname']."\") ORDER BY commenttime DESC";
109 | $act_sql2 = "SELECT *
110 | FROM PROJECT, `USER` WHERE USER.loginname=PROJECT.loginname AND USER.loginname IN (
111 | SELECT bfname FROM FOLLOW WHERE fname=\"".$_SESSION['loginname']."\") ORDER BY posttime DESC";
112 | $act_sql3 = "SELECT *
113 | FROM PLEDGE, `USER` WHERE USER.loginname=PLEDGE.loginname AND USER.loginname IN (
114 | SELECT bfname FROM FOLLOW WHERE fname=\"".$_SESSION['loginname']."\") ORDER BY pledgetime DESC";
115 | $act_result1 = $con->query($act_sql1);
116 | $act_result2 = $con->query($act_sql2);
117 | $act_result3 = $con->query($act_sql3);
118 | echo "My Follow News ";
119 |
120 | if ($act_result1->num_rows > 0) {
121 | $count=0;
122 | while($row = $act_result1->fetch_assoc()) {
123 | $count=$count + 1;
124 | if ($count > 3) {break;}
125 | echo "".$row["username"]." comment ".$row["projectname"]."
";
126 | }
127 | }
128 | if ($act_result2->num_rows > 0) {
129 | $count=0;
130 | while($row = $act_result2->fetch_assoc()) {
131 | $count=$count + 1;
132 | if ($count > 3) {break;}
133 | echo "".$row["username"]." create Project: ".$row["projectname"]."
";
134 | }
135 | }
136 | if ($act_result3->num_rows > 0) {
137 | $count=0;
138 | while($row = $act_result3->fetch_assoc()) {
139 | $count=$count + 1;
140 | if ($count > 3) {break;}
141 | echo "".$row["username"]." pledge ".$row["projectname"]."
";
142 | }
143 | }
144 |
145 | // recommendation system
146 |
147 |
148 | $rec_sql="SELECT tagname, COUNT(tagname) AS tag_num
149 | FROM tag WHERE projectname in
150 | (SELECT distinct actvalue FROM USERACT WHERE loginname='".$_SESSION['loginname']."' AND acttype='vispro')
151 | GROUP BY tagname ORDER BY tag_num DESC LIMIT 0,2";
152 | $rec_result = $con->query($rec_sql);
153 | $projarr = array();
154 | if ($rec_result->num_rows > 0) {
155 |
156 | while($row = $rec_result->fetch_assoc()) {
157 |
158 | $rec_proj_sql="SELECT projectname FROM tag where tagname='".$row["tagname"]."' AND projectname not in
159 | (SELECT projectname FROM `LIKE` where `LIKE`.loginname='".$_SESSION['loginname']."')";
160 | $rec_proj_result=$con->query($rec_proj_sql);
161 | if ($rec_proj_result->num_rows > 0) {
162 | while($row_proj = $rec_proj_result->fetch_assoc()) {
163 | $projarr[]=$row_proj["projectname"];
164 | }
165 | }
166 |
167 | }
168 | }
169 | $projarr = array_flip(array_flip($projarr));
170 | echo " Recommed projects ";
171 | foreach ($projarr as $recom_proj){
172 | echo "".$recom_proj." ";
173 | }
174 | echo "
";
175 | // end recommendation system
176 | ?>
177 |
178 |
179 |
180 |
181 |
243 |
--------------------------------------------------------------------------------
/php/displayproject.php:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 | connect_error) {
18 | die("Database connect_error: " . $con->connect_error);
19 | }
20 |
21 | $projectname = mysqli_real_escape_string($con, $_GET["projectname"]);
22 | $loginname = $_SESSION['loginname'];
23 |
24 | $sql_display_project = "select * from PROJECT WHERE projectname = '$projectname';";
25 | $result_display_project = $con->query($sql_display_project);
26 | $number_of_rows = mysqli_num_rows($result_display_project);
27 |
28 | // add to user act
29 | $useract_sql = "INSERT INTO `USERACT` VALUES('".$_SESSION['loginname']."',now(), 'vispro', '".$projectname."')";
30 |
31 | mysqli_query($con, $useract_sql);
32 |
33 | // display proj information
34 | if($number_of_rows > 1){
35 | echo "Database compromised, Projectname is duplicated"." ";
36 | } else {
37 | echo "Here is the information of the project: ";
38 | while ($row = mysqli_fetch_array($result_display_project)) {
39 | $founder_sql = "SELECT * FROM PROJECT,USER WHERE project.loginname=user.loginname AND PROJECT.projectname=\"".$projectname."\"";
40 | $founder_result = $con->query($founder_sql);
41 | while($row_foun = $founder_result->fetch_assoc()) {
42 | echo "The founder of this project is: ".$row_foun["username"]."
";
43 | }
44 |
45 |
46 | echo "Project name: ".$row["projectname"]."
";
47 | echo "Project description: ".$row["description"]."
";
48 | echo "Project status: '".$row["projectstatus"]."'
";
49 | if ($row["projectstatus"]=='successed' && $_SESSION['loginname']==$row["loginname"]) {
50 | $update_sql="UPDATE PROJECT SET projectstatus='complete' WHERE projectname='".$projectname."'";
51 | mysqli_query($con, $update_sql);
52 | echo "Change status to complete? Click me!
";
53 | }
54 | echo "Project minimum fund: ".$row["minfund"]."$
";
55 | echo "Project maximum fund: ".$row["maxfund"]."$
";
56 | $current_ple_sql="SELECT SUM(amount) AS sumple FROM PLEDGE WHERE projectname='".$projectname."'";
57 | $current_ple_result = $con->query($current_ple_sql);
58 | while($row_ple = $current_ple_result->fetch_assoc()) {
59 | echo "Project Now Have: ".$row_ple["sumple"]."$
";
60 | }
61 |
62 |
63 | echo "End for funding date: '".$row["endtime"]."'
";
64 | echo "Finish project date: '".$row["plantime"]."'
";
65 | //TAG
66 | //display tags of project
67 | $sql_get_project_tag = "SELECT * from TAG WHERE projectname = '$projectname';";
68 | $result_get_project_tag = $con->query($sql_get_project_tag);
69 | echo "Tags: ";
70 | while( $row_tag = mysqli_fetch_array($result_get_project_tag) ){
71 | echo "[".$row_tag["tagname"]."] ";
72 | }
73 | echo "
";
74 | //user could also add tag of project
75 | $tag_button = "";
79 | echo $tag_button." ";
80 |
81 | //if user is owner of project, display upload option
82 | if($loginname == $row['loginname']){
83 | $upload_button = "";
91 | echo $upload_button." ";
92 | }
93 |
94 | //RATE
95 | //if project is completed and user has pledged, ask user to rate it
96 | if( $row["projectstatus"] == "complete" ){
97 | // display rate
98 | $all_rate_check_sql = "SELECT * FROM RATE WHERE loginname = '$loginname' AND projectname = '$projectname';";
99 | $rate_check_result = $con->query($all_rate_check_sql);
100 | $number_of_rate = mysqli_num_rows($rate_check_result);
101 | if( $number_of_rate > 0 ){
102 | $ave_sql = "SELECT avg(score) AS ave_value FROM RATE WHERE loginname = '$loginname' AND projectname = '$projectname';";
103 | $ave_result = $con->query($ave_sql);
104 | while($row_ave = $ave_result->fetch_assoc()) {
105 | echo "Average score of this project is: ".$row_ave["ave_value"]."
";
106 | }
107 | }
108 |
109 |
110 | // rating
111 | $rate_check_sql = "SELECT * FROM RATE WHERE loginname = '$loginname' AND projectname = '$projectname';";
112 | $rate_check_result2 = $con->query($rate_check_sql);
113 | $already_rated = mysqli_num_rows($rate_check_result2);
114 | if( $already_rated < 1 ){
115 | $sql_check_if_pledged = "SELECT * FROM PLEDGE WHERE loginname = '$loginname' AND projectname = '$projectname';";
116 | $result_check_if_pledged = $con->query($sql_check_if_pledged);
117 | $number_of_rows_check_if_pledged = mysqli_num_rows($result_check_if_pledged);
118 | if( $number_of_rows_check_if_pledged > 0 ){
119 | $project_rate_button=
120 | "
121 |
122 |
Please Rate This Project:
123 |
137 |
138 | ";
139 | echo $project_rate_button;
140 | }
141 | }
142 |
143 |
144 | }
145 |
146 | }
147 | }
148 | // Pledge
149 | //check if user create this project? if so cannot pledge his own project
150 | $status_check_sql = "select * from PROJECT WHERE projectname = '$projectname';";
151 | $status_result = $con->query($status_check_sql);
152 | while ($row = mysqli_fetch_array($status_result)) {
153 | if ($row["projectstatus"] == "ongoing") {
154 | $project_check_sql = "SELECT * FROM PROJECT WHERE projectname=\"".$_GET['projectname']."\" AND loginname=\"".$_SESSION["loginname"]."\"";
155 | $pro_result = $con->query($project_check_sql);
156 | if ($pro_result->num_rows < 1) {
157 | echo "";
162 | }
163 | }
164 | }
165 |
166 |
167 |
168 |
169 |
170 |
171 | // Like this project
172 | //check if user already likeed
173 | $like_check_sql = "SELECT * FROM `LIKE` WHERE projectname=\"".$projectname."\" AND loginname=\"".$_SESSION["loginname"]."\"";
174 | $like_result = $con->query($like_check_sql);
175 | if ($like_result->num_rows < 1) {
176 | echo "
";
177 | }
178 | else {
179 | echo "
";
180 |
181 | }
182 |
183 | //List all comments
184 | echo "Comment: ";
185 | $sql_display_comment = "select * from DISCUSS,USER WHERE DISCUSS.loginname=USER.loginname AND DISCUSS.projectname = '$projectname'; ";
186 | $result_display_comment = $con->query($sql_display_comment);
187 | while ($row_comment = mysqli_fetch_array($result_display_comment)) {
188 | //echo $row_comment["content"]." ";
189 | //TO_DO add button to lick to user
190 | echo "".$row_comment["username"]." : ".$row_comment["content"]."
";
191 | }
192 | echo "
";
193 |
194 | $fig_sql = "SELECT * FROM MATERIAL WHERE projectname='".$projectname."'";
195 | $fig_result = $con->query($fig_sql);
196 | if ($fig_result->num_rows > 0) {
197 | echo "Project material ";
198 | while($row = $fig_result->fetch_assoc()) {
199 |
200 | echo '
';
201 | echo "Figure Description: ".$row['matdes']."
";
202 | }
203 | }
204 | ?>
205 |
206 |
207 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
269 |
270 |
271 |
--------------------------------------------------------------------------------