Added work from my other class repositories before deletion

This commit is contained in:
2017-11-29 10:28:24 -08:00
parent cb0b5f4d25
commit 5ea24c81b5
198 changed files with 739603 additions and 0 deletions

View File

@@ -0,0 +1,738 @@
var root_url = '/~perrenc/CS340_Final_Website/';
var get_members_url = 'db_interactions/get_members.php';
var get_positions_url = root_url + 'db_interactions/get_positions.php';
var get_teams_url = root_url + 'db_interactions/get_teams.php';
var get_skills_url = root_url + 'db_interactions/get_skills.php';
var add_new_mem_url = root_url + 'db_interactions/add_member.php';
var del_mem_url = root_url + 'db_interactions/del_member.php';
var assign_skill_mem_url = root_url + 'db_interactions/assign_skill.php';
var assign_team_mem_url = root_url + 'db_interactions/assign_team.php';
var add_new_skill_url = root_url + 'db_interactions/add_new_skill.php';
var add_new_team_url = root_url + 'db_interactions/add_new_team.php';
var add_new_position_url = root_url + 'db_interactions/add_new_position.php';
var find_with_skill_url = root_url + 'db_interactions/find_with_skill.php';
var find_with_team_url = root_url + 'db_interactions/find_with_team.php';
var find_with_position_url = root_url + 'db_interactions/find_with_position.php';
////////// Function to reset inputs //////////
function reset_inputs() {
document.getElementById('mem_add_first_name').value = "";
document.getElementById('mem_add_last_name').value = "";
document.getElementById('mem_add_position_drop').selectedIndex = 0;
document.getElementById('mem_add_superior_drop').selectedIndex = 0;
document.getElementById('mem_add_email').value = "";
document.getElementById('mem_add_phone').value = "";
document.getElementById('mem_add_osuid').value = "";
document.getElementById('mem_add_rfid').value = "";
document.getElementById('mem_del_first_name').value = "";
document.getElementById('mem_del_last_name').value = "";
document.getElementById('assign_skill_first_name').value = "";
document.getElementById('assign_skill_last_name').value = "";
document.getElementById('assign_skill_position_drop').selectedIndex = 0;
document.getElementById('add_team_first_name').value = "";
document.getElementById('add_team_last_name').value = "";
document.getElementById('add_team_position_drop').selectedIndex = 0;
document.getElementById('skill_add_name').value = "";
document.getElementById('skill_add_description').value = "";
document.getElementById('team_add_name').value = "";
document.getElementById('team_add_description').value = "";
document.getElementById('position_add_name').value = "";
document.getElementById('position_add_description').value = "";
document.getElementById('show_with_skill_drop').selectedIndex = 0;
document.getElementById('show_with_team_drop').selectedIndex = 0;
document.getElementById('show_with_position_drop').selectedIndex = 0;
}
////////// Functions to show position search //////////
function show_with_position() {
var position_name = document.getElementById('show_with_position_drop').value;
var req = new XMLHttpRequest();
req.open('POST', find_with_position_url, true);
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
req.addEventListener('load', on_show_with_position_response_received);
req.send("name=" + position_name);
}
function on_show_with_position_response_received(response) {
var status_box = document.getElementById('header_status_bar');
var err_box = document.getElementById('header_error_bar');
status_box.textContent = "";
err_box.textContent = "";
var header_data = ["First Name", "Last Name", "Position"];
var req_status = response.srcElement.status;
if(req_status >=200 && req_status < 400){
var response_json = JSON.parse(response.srcElement.responseText);
if(!response_json.is_error){
var members = response_json.members;
generate_table_and_show("Members Position Search", header_data, members);
status_box.textContent = "Members position list shown successfully!"
}else{
err_box.textContent = "MEMBERS POSITION SHOW: Unknown error with request. Please consult logs.";
}
}else{
err_box.textContent = "MEMBERS POSITION SHOW: Failed to contact server for request. Please verify webserver is up and files exist.";
}
}
////////// Functions to show team search //////////
function show_with_team() {
var team_name = document.getElementById('show_with_team_drop').value;
var req = new XMLHttpRequest();
req.open('POST', find_with_team_url, true);
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
req.addEventListener('load', on_show_with_team_response_received);
req.send("name=" + team_name);
}
function on_show_with_team_response_received(response) {
var status_box = document.getElementById('header_status_bar');
var err_box = document.getElementById('header_error_bar');
status_box.textContent = "";
err_box.textContent = "";
var header_data = ["First Name", "Last Name", "Team"];
var req_status = response.srcElement.status;
if(req_status >=200 && req_status < 400){
var response_json = JSON.parse(response.srcElement.responseText);
if(!response_json.is_error){
var members = response_json.members;
generate_table_and_show("Members Team Search", header_data, members);
status_box.textContent = "Members team list shown successfully!"
}else{
err_box.textContent = "MEMBERS TEAM SHOW: Unknown error with request. Please consult logs.";
}
}else{
err_box.textContent = "MEMBERS TEAM SHOW: Failed to contact server for request. Please verify webserver is up and files exist.";
}
}
////////// Functions to show skill search //////////
function show_with_skill() {
var skill_name = document.getElementById('show_with_skill_drop').value;
var req = new XMLHttpRequest();
req.open('POST', find_with_skill_url, true);
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
req.addEventListener('load', on_show_with_skill_response_received);
req.send("name=" + skill_name);
}
function on_show_with_skill_response_received(response) {
var status_box = document.getElementById('header_status_bar');
var err_box = document.getElementById('header_error_bar');
status_box.textContent = "";
err_box.textContent = "";
var header_data = ["First Name", "Last Name", "Skill"];
var req_status = response.srcElement.status;
if(req_status >=200 && req_status < 400){
var response_json = JSON.parse(response.srcElement.responseText);
if(!response_json.is_error){
var members = response_json.members;
generate_table_and_show("Members Skill Search", header_data, members);
status_box.textContent = "Members skill list shown successfully!"
}else{
err_box.textContent = "MEMBERS SKILLS SHOW: Unknown error with request. Please consult logs.";
}
}else{
err_box.textContent = "MEMBERS SKILLS SHOW: Failed to contact server for request. Please verify webserver is up and files exist.";
}
}
////////// Functions to show positions //////////
function show_positions() {
var req = new XMLHttpRequest();
req.open('POST', get_positions_url, true);
req.addEventListener('load', on_show_positions_response_received);
req.send(null);
}
function on_show_positions_response_received(response) {
var status_box = document.getElementById('header_status_bar');
var err_box = document.getElementById('header_error_bar');
status_box.textContent = "";
err_box.textContent = "";
var header_data = ["Name", "Description"];
var req_status = response.srcElement.status;
if(req_status >=200 && req_status < 400){
var response_json = JSON.parse(response.srcElement.responseText);
if(!response_json.is_error){
var positions = response_json.positions;
generate_table_and_show("Positions List", header_data, positions);
status_box.textContent = "Positions list shown successfully!"
}else{
err_box.textContent = "POSITIONS SHOW: Unknown error with request. Please consult logs.";
}
}else{
err_box.textContent = "POSITIONS SHOW: Failed to contact server for request. Please verify webserver is up and files exist.";
}
}
////////// Functions to show teams //////////
function show_teams() {
var req = new XMLHttpRequest();
req.open('POST', get_teams_url, true);
req.addEventListener('load', on_show_teams_response_received);
req.send(null);
}
function on_show_teams_response_received(response) {
var status_box = document.getElementById('header_status_bar');
var err_box = document.getElementById('header_error_bar');
status_box.textContent = "";
err_box.textContent = "";
var header_data = ["Name", "Description"];
var req_status = response.srcElement.status;
if(req_status >=200 && req_status < 400){
var response_json = JSON.parse(response.srcElement.responseText);
if(!response_json.is_error){
var teams = response_json.teams;
generate_table_and_show("Teams List", header_data, teams);
status_box.textContent = "Teams list shown successfully!"
}else{
err_box.textContent = "TEAMS SHOW: Unknown error with request. Please consult logs.";
}
}else{
err_box.textContent = "TEAMS SHOW: Failed to contact server for request. Please verify webserver is up and files exist.";
}
}
////////// Functions to show skills //////////
function show_skills() {
var req = new XMLHttpRequest();
req.open('POST', get_skills_url, true);
req.addEventListener('load', on_show_skills_response_received);
req.send(null);
}
function on_show_skills_response_received(response) {
var status_box = document.getElementById('header_status_bar');
var err_box = document.getElementById('header_error_bar');
status_box.textContent = "";
err_box.textContent = "";
var header_data = ["Name", "Description"];
var req_status = response.srcElement.status;
if(req_status >=200 && req_status < 400){
var response_json = JSON.parse(response.srcElement.responseText);
if(!response_json.is_error){
var skills = response_json.skills;
generate_table_and_show("Skills List", header_data, skills);
status_box.textContent = "Skills list shown successfully!"
}else{
err_box.textContent = "SKILLS SHOW: Unknown error with request. Please consult logs.";
}
}else{
err_box.textContent = "SKILLS SHOW: Failed to contact server for request. Please verify webserver is up and files exist.";
}
}
////////// Functions to show members //////////
function show_members() {
var req = new XMLHttpRequest();
req.open('POST', get_members_url, true);
req.addEventListener('load', on_show_members_response_received);
req.send(null);
}
function on_show_members_response_received(response) {
var status_box = document.getElementById('header_status_bar');
var err_box = document.getElementById('header_error_bar');
status_box.textContent = "";
err_box.textContent = "";
var header_data = ["First Name", "Last Name", "Position", "Superior", "Email", "Phone", "OSU ID #", "RFID #"];
var req_status = response.srcElement.status;
if(req_status >=200 && req_status < 400){
var response_json = JSON.parse(response.srcElement.responseText);
if(!response_json.is_error){
var members = response_json.members;
generate_table_and_show("Members List", header_data, members);
status_box.textContent = "Members list shown successfully!"
}else{
err_box.textContent = "MEMBER SHOW: Unknown error with request. Please consult logs.";
}
}else{
err_box.textContent = "MEMBER SHOW: Failed to contact server for request. Please verify webserver is up and files exist.";
}
}
////////// Generate table and show //////////
function generate_table_and_show(title, headers, array_data) {
var table_div = document.getElementById('main_output_content');
table_div.innerHTML = "";
var new_h2 = document.createElement("h2");
new_h2.textContent = title;
table_div.appendChild(new_h2);
var table = document.createElement("table");
var table_header = table.createTHead();
var row = table_header.insertRow(0);
for(var head_iter in headers){
var cell = row.insertCell(head_iter);
cell.textContent = headers[head_iter];
}
row.style.fontWeight = "bold";
for(var row_iter in array_data){
var cur_row = array_data[row_iter];
row = table.insertRow(parseInt(row_iter) + 1);
for(var col_iter in cur_row){
cell = row.insertCell(col_iter);
cell.textContent = array_data[row_iter][col_iter];
}
}
table_div.appendChild(table);
}
////////// Add new position on_click_handler //////////
function on_add_new_position_clicked() {
var status_box = document.getElementById('header_status_bar');
var err_box = document.getElementById('header_error_bar');
status_box.textContent = "";
err_box.textContent = "";
var name = document.getElementById('position_add_name').value;
var description = document.getElementById('position_add_description').value;
if(!name){
status_box.textContent = "";
err_box.textContent = "Name must be present!";
return;
}
var param_string = "name=" + name;
if (description) { param_string += "&description=" + description; }
var req = new XMLHttpRequest();
req.open('POST', add_new_position_url, true);
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
req.addEventListener('load', on_add_change_delete_response_received);
req.send(param_string);
}
////////// Add new team on_click_handler //////////
function on_add_new_team_clicked() {
var status_box = document.getElementById('header_status_bar');
var err_box = document.getElementById('header_error_bar');
status_box.textContent = "";
err_box.textContent = "";
var name = document.getElementById('team_add_name').value;
var description = document.getElementById('team_add_description').value;
if(!name){
status_box.textContent = "";
err_box.textContent = "Name must be present!";
return;
}
var param_string = "name=" + name;
if (description) { param_string += "&description=" + description; }
var req = new XMLHttpRequest();
req.open('POST', add_new_team_url, true);
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
req.addEventListener('load', on_add_change_delete_response_received);
req.send(param_string);
}
////////// Add new skill on_click_handler //////////
function on_add_new_skill_clicked() {
var status_box = document.getElementById('header_status_bar');
var err_box = document.getElementById('header_error_bar');
status_box.textContent = "";
err_box.textContent = "";
var name = document.getElementById('skill_add_name').value;
var description = document.getElementById('skill_add_description').value;
if(!name){
status_box.textContent = "";
err_box.textContent = "Name must be present!";
return;
}
var param_string = "name=" + name;
if (description) { param_string += "&description=" + description; }
var req = new XMLHttpRequest();
req.open('POST', add_new_skill_url, true);
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
req.addEventListener('load', on_add_change_delete_response_received);
req.send(param_string);
}
////////// Assign team to member on_click_handler //////////
function on_assign_team_to_member_clicked() {
var status_box = document.getElementById('header_status_bar');
var err_box = document.getElementById('header_error_bar');
status_box.textContent = "";
err_box.textContent = "";
var first = document.getElementById('add_team_first_name').value;
var last = document.getElementById('add_team_last_name').value;
var team = document.getElementById('add_team_position_drop').value;
if(!first || !last){
status_box.textContent = "";
err_box.textContent = "First and last must be present!";
return;
}
var param_string = "first_name=" + first + "&last_name=" + last + "&team=" + team;
var req = new XMLHttpRequest();
req.open('POST', assign_team_mem_url, true);
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
req.addEventListener('load', on_add_change_delete_response_received);
req.send(param_string);
}
////////// Assign skill to member on_click_handler //////////
function on_assign_skill_to_member_clicked() {
var status_box = document.getElementById('header_status_bar');
var err_box = document.getElementById('header_error_bar');
status_box.textContent = "";
err_box.textContent = "";
var first = document.getElementById('assign_skill_first_name').value;
var last = document.getElementById('assign_skill_last_name').value;
var skill = document.getElementById('assign_skill_position_drop').value;
if(!first || !last){
status_box.textContent = "";
err_box.textContent = "First and last must be present!";
return;
}
var param_string = "first_name=" + first + "&last_name=" + last + "&skill=" + skill;
var req = new XMLHttpRequest();
req.open('POST', assign_skill_mem_url, true);
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
req.addEventListener('load', on_add_change_delete_response_received);
req.send(param_string);
}
////////// Delete member on_click_handler //////////
function on_delete_member_clicked() {
var status_box = document.getElementById('header_status_bar');
var err_box = document.getElementById('header_error_bar');
status_box.textContent = "";
err_box.textContent = "";
var first = document.getElementById('mem_del_first_name').value;
var last = document.getElementById('mem_del_last_name').value;
if(!first || !last){
status_box.textContent = "";
err_box.textContent = "First and last must be present!";
return;
}
var param_string = "first_name=" + first + "&last_name=" + last
var req = new XMLHttpRequest();
req.open('POST', del_mem_url, true);
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
req.addEventListener('load', on_add_change_delete_response_received);
req.send(param_string);
}
////////// Add member on_click_handler //////////
function on_add_member_clicked() {
var status_box = document.getElementById('header_status_bar');
var err_box = document.getElementById('header_error_bar');
status_box.textContent = "";
err_box.textContent = "";
var first = document.getElementById('mem_add_first_name').value;
var last = document.getElementById('mem_add_last_name').value;
var position = document.getElementById('mem_add_position_drop').value;
var superior = document.getElementById('mem_add_superior_drop').value;
var email = document.getElementById('mem_add_email').value;
var phone = document.getElementById('mem_add_phone').value;
var osuid = document.getElementById('mem_add_osuid').value;
var rfid = document.getElementById('mem_add_rfid').value;
if(!first || !last || !position || !email || !osuid){
status_box.textContent = "";
err_box.textContent = "First, last, position, email, and OSU ID must be present!";
return;
}
var param_string = "first_name=" + first + "&last_name=" + last + "&position=" + position;
if (superior != "--") { param_string += "&superior=" + superior; }
param_string += "&email=" + email;
if (phone) { param_string += "&phone=" + phone; }
param_string += "&osu_num=" + osuid;
if (rfid) { param_string += "&rfid_num=" + rfid; }
var req = new XMLHttpRequest();
req.open('POST', add_new_mem_url, true);
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
req.addEventListener('load', on_add_change_delete_response_received);
req.send(param_string);
}
////////// Functions for updating club skill dropdowns //////////
function update_skill_dropdowns() {
var req = new XMLHttpRequest();
req.open('POST', get_skills_url, true);
req.addEventListener('load', on_update_skills_response_received);
req.send(null);
}
function on_update_skills_response_received(response) {
var status_box = document.getElementById('header_status_bar');
var err_box = document.getElementById('header_error_bar');
//status_box.textContent = "";
//err_box.textContent = "";
var assign_skill = document.getElementById('assign_skill_position_drop');
var skill_search = document.getElementById('show_with_skill_drop');
var req_status = response.srcElement.status;
if(req_status >=200 && req_status < 400){
var response_json = JSON.parse(response.srcElement.responseText);
if(!response_json.is_error){
var skills = response_json.skills;
assign_skill.innerHTML = "";
populate_select_with_options(assign_skill, skills);
skill_search.innerHTML = "";
populate_select_with_options(skill_search, skills);
}else {
//err_box.textContent = "SKILLS UPDATE: Unknown error with request. Please consult logs.";
}
}else{
//err_box.textContent = "SKILLS UPDATE: Failed to contact server for request. Please verify webserver is up and files exist.";
}
}
////////// Functions for updating club team dropdowns //////////
function update_team_dropdowns() {
var req = new XMLHttpRequest();
req.open('POST', get_teams_url, true);
req.addEventListener('load', on_update_teams_response_received);
req.send(null);
}
function on_update_teams_response_received(response) {
var status_box = document.getElementById('header_status_bar');
var err_box = document.getElementById('header_error_bar');
//status_box.textContent = "";
//err_box.textContent = "";
var add_to_team = document.getElementById('add_team_position_drop');
var team_search = document.getElementById('show_with_team_drop');
var req_status = response.srcElement.status;
if(req_status >=200 && req_status < 400){
var response_json = JSON.parse(response.srcElement.responseText);
if(!response_json.is_error){
var teams = response_json.teams;
add_to_team.innerHTML = "";
populate_select_with_options(add_to_team, teams);
team_search.innerHTML = "";
populate_select_with_options(team_search, teams);
}else {
//err_box.textContent = "TEAMS UPDATE: Unknown error with request. Please consult logs.";
}
}else{
//err_box.textContent = "TEAMS UPDATE: Failed to contact server for request. Please verify webserver is up and files exist.";
}
}
////////// Functions for updating club position dropdowns //////////
function update_position_dropdowns() {
var req = new XMLHttpRequest();
req.open('POST', get_positions_url, true);
req.addEventListener('load', on_update_positions_response_received);
req.send(null);
}
function on_update_positions_response_received(response) {
var status_box = document.getElementById('header_status_bar');
var err_box = document.getElementById('header_error_bar');
//status_box.textContent = "";
//err_box.textContent = "";
var pos_add = document.getElementById('mem_add_position_drop');
var sup_add = document.getElementById('mem_add_superior_drop');
var pos_search = document.getElementById('show_with_position_drop');
var req_status = response.srcElement.status;
if(req_status >=200 && req_status < 400){
var response_json = JSON.parse(response.srcElement.responseText);
if(!response_json.is_error){
var positions = response_json.positions;
clear_dropdown(pos_add);
populate_select_with_options(pos_add, positions);
clear_dropdown(sup_add);
populate_select_with_options(sup_add, [["--"]]);
populate_select_with_options(sup_add, positions);
clear_dropdown(pos_search);
populate_select_with_options(pos_search, positions);
}else {
//err_box.textContent = "POSITIONS UPDATE: Unknown error with request. Please consult logs.";
}
}else{
//err_box.textContent = "POSITIONS UPDATE: Failed to contact server for request. Please verify webserver is up and files exist.";
}
}
////////// Generic use functions //////////
function populate_select_with_options(select_element, option_array){
for(var option_iter in option_array){
var option = document.createElement("option");
option.textContent = option_array[option_iter][0];
select_element.add(option);
}
}
function on_add_change_delete_response_received(response) {
var status_box = document.getElementById('header_status_bar');
var err_box = document.getElementById('header_error_bar');
var response_json = JSON.parse(response.srcElement.responseText);
if(response.is_error){
err_box.textContent = "Full failure. Please verify that the entry does not already exist, or check the backend code!"
}else{
if(response_json.affected_rows > 0){
status_box.textContent = "Request completed successfully!"
}else if (response_json.affected_rows == -1){
err_box.textContent = "This entry already exists. Please make a unique entry!"
}else{
err_box.textContent = "No records exist, or a large error has occurred!"
}
}
populate_page_and_show_members();
}
function clear_dropdown(dropdown) {
while(dropdown.options.length > 0){
dropdown.remove(0);
}
}
////////// Load listener to populate page with data //////////
function populate_page_and_show_members(){
update_skill_dropdowns();
update_team_dropdowns();
update_position_dropdowns();
reset_inputs();
show_members();
}
function assign_window_event_handlers() {
document.getElementById('mem_add_submit').addEventListener('click', on_add_member_clicked);
document.getElementById('mem_del_submit').addEventListener('click', on_delete_member_clicked);
document.getElementById('assign_skill_submit').addEventListener('click', on_assign_skill_to_member_clicked);
document.getElementById('add_team_submit').addEventListener('click', on_assign_team_to_member_clicked);
document.getElementById('skill_add_submit').addEventListener('click', on_add_new_skill_clicked);
document.getElementById('team_add_submit').addEventListener('click', on_add_new_team_clicked);
document.getElementById('position_add_submit').addEventListener('click', on_add_new_position_clicked);
document.getElementById('show_members_submit').addEventListener('click', show_members);
document.getElementById('show_skills_submit').addEventListener('click', show_skills);
document.getElementById('show_teams_submit').addEventListener('click', show_teams);
document.getElementById('show_positions_submit').addEventListener('click', show_positions);
document.getElementById('skill_search_submit').addEventListener('click', show_with_skill);
document.getElementById('team_search_submit').addEventListener('click', show_with_team);
document.getElementById('position_search_submit').addEventListener('click', show_with_position);
}
function setup_page_on_load() {
populate_page_and_show_members();
assign_window_event_handlers();
}
window.addEventListener("load", setup_page_on_load);

View File

@@ -0,0 +1,5 @@
<?php
$db_host = 'oniddb.cws.oregonstate.edu';
$db_name = 'perrenc-db';
$db_user = 'perrenc-db';
$db_pass = 'rjqm1mGiAFpoEI8R';

View File

@@ -0,0 +1,57 @@
<?php
include '../db_creds.php';
ini_set('display_errors', 'On');
$robo_db = new mysqli($db_host, $db_user, $db_pass, $db_name);
$resp_arr = array();
if($robo_db->connect_errno){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Failed to connect to database!";
echo json_encode($resp_arr);
return;
}else{
$db_query = $robo_db->prepare(<<<QUERY_STRING
INSERT INTO members(first_name, last_name, position, superior, email, phone, osu_num, rfid_num)
VALUES (
?,
?,
(SELECT id FROM club_positions cp WHERE cp.name = ?),
(SELECT id FROM club_positions cp WHERE cp.name = ?),
?,
?,
?,
?
)
QUERY_STRING
);
$db_query->bind_param("ssssssii", $_POST['first_name'], $_POST['last_name'], $_POST['position'],
$_POST['superior'], $_POST['email'], $_POST['phone'], $_POST['osu_num'], $_POST['rfid_num']);
if(!$db_query){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Parameter bind failed!";
echo json_encode($resp_arr);
return;
}
$db_query->execute();
if(!$db_query){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Database query failed!";
$resp_arr['mysqli_errno'] = $db_query->errno;
$resp_arr['mysqli_error'] = $db_query->error;
echo json_encode($resp_arr);
return;
}else{
$resp_arr['is_error'] = false;
$resp_arr['affected_rows'] = $db_query->affected_rows;
echo json_encode($resp_arr);
}
}

View File

@@ -0,0 +1,46 @@
<?php
include '../db_creds.php';
ini_set('display_errors', 'On');
$robo_db = new mysqli($db_host, $db_user, $db_pass, $db_name);
$resp_arr = array();
if($robo_db->connect_errno){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Failed to connect to database!";
echo json_encode($resp_arr);
return;
}else{
$db_query = $robo_db->prepare(<<<QUERY_STRING
INSERT INTO club_positions(name, description) VALUES (?, ?)
QUERY_STRING
);
$db_query->bind_param("ss", $_POST['name'], $_POST['description']);
if(!$db_query){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Parameter bind failed!";
echo json_encode($resp_arr);
return;
}
$db_query->execute();
if(!$db_query){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Database query failed!";
$resp_arr['mysqli_errno'] = $db_query->errno;
$resp_arr['mysqli_error'] = $db_query->error;
echo json_encode($resp_arr);
return;
}else{
$resp_arr['is_error'] = false;
$resp_arr['affected_rows'] = $db_query->affected_rows;
echo json_encode($resp_arr);
}
}

View File

@@ -0,0 +1,46 @@
<?php
include '../db_creds.php';
ini_set('display_errors', 'On');
$robo_db = new mysqli($db_host, $db_user, $db_pass, $db_name);
$resp_arr = array();
if($robo_db->connect_errno){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Failed to connect to database!";
echo json_encode($resp_arr);
return;
}else{
$db_query = $robo_db->prepare(<<<QUERY_STRING
INSERT INTO club_skills(name, description) VALUES (?, ?)
QUERY_STRING
);
$db_query->bind_param("ss", $_POST['name'], $_POST['description']);
if(!$db_query){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Parameter bind failed!";
echo json_encode($resp_arr);
return;
}
$db_query->execute();
if(!$db_query){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Database query failed!";
$resp_arr['mysqli_errno'] = $db_query->errno;
$resp_arr['mysqli_error'] = $db_query->error;
echo json_encode($resp_arr);
return;
}else{
$resp_arr['is_error'] = false;
$resp_arr['affected_rows'] = $db_query->affected_rows;
echo json_encode($resp_arr);
}
}

View File

@@ -0,0 +1,46 @@
<?php
include '../db_creds.php';
ini_set('display_errors', 'On');
$robo_db = new mysqli($db_host, $db_user, $db_pass, $db_name);
$resp_arr = array();
if($robo_db->connect_errno){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Failed to connect to database!";
echo json_encode($resp_arr);
return;
}else{
$db_query = $robo_db->prepare(<<<QUERY_STRING
INSERT INTO club_teams(name, description) VALUES (?, ?)
QUERY_STRING
);
$db_query->bind_param("ss", $_POST['name'], $_POST['description']);
if(!$db_query){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Parameter bind failed!";
echo json_encode($resp_arr);
return;
}
$db_query->execute();
if(!$db_query){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Database query failed!";
$resp_arr['mysqli_errno'] = $db_query->errno;
$resp_arr['mysqli_error'] = $db_query->error;
echo json_encode($resp_arr);
return;
}else{
$resp_arr['is_error'] = false;
$resp_arr['affected_rows'] = $db_query->affected_rows;
echo json_encode($resp_arr);
}
}

View File

@@ -0,0 +1,50 @@
<?php
include '../db_creds.php';
ini_set('display_errors', 'On');
$robo_db = new mysqli($db_host, $db_user, $db_pass, $db_name);
$resp_arr = array();
if($robo_db->connect_errno){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Failed to connect to database!";
echo json_encode($resp_arr);
return;
}else{
$db_query = $robo_db->prepare(<<<QUERY_STRING
INSERT INTO member_skills_relations(member_id, skills_id)
VALUES (
(SELECT id FROM members m WHERE m.first_name = ? AND m.last_name = ?),
(SELECT id from club_skills cs WHERE cs.name = ?)
)
QUERY_STRING
);
$db_query->bind_param("sss", $_POST['first_name'], $_POST['last_name'], $_POST['skill']);
if(!$db_query){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Parameter bind failed!";
echo json_encode($resp_arr);
return;
}
$db_query->execute();
if(!$db_query){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Database query failed!";
$resp_arr['mysqli_errno'] = $db_query->errno;
$resp_arr['mysqli_error'] = $db_query->error;
echo json_encode($resp_arr);
return;
}else{
$resp_arr['is_error'] = false;
$resp_arr['affected_rows'] = $db_query->affected_rows;
echo json_encode($resp_arr);
}
}

View File

@@ -0,0 +1,50 @@
<?php
include '../db_creds.php';
ini_set('display_errors', 'On');
$robo_db = new mysqli($db_host, $db_user, $db_pass, $db_name);
$resp_arr = array();
if($robo_db->connect_errno){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Failed to connect to database!";
echo json_encode($resp_arr);
return;
}else{
$db_query = $robo_db->prepare(<<<QUERY_STRING
INSERT INTO member_teams_relations(member_id, team_id)
VALUES (
(SELECT id FROM members m WHERE m.first_name = ? AND m.last_name = ?),
(SELECT id from club_teams ct WHERE ct.name = ?)
)
QUERY_STRING
);
$db_query->bind_param("sss", $_POST['first_name'], $_POST['last_name'], $_POST['team']);
if(!$db_query){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Parameter bind failed!";
echo json_encode($resp_arr);
return;
}
$db_query->execute();
if(!$db_query){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Database query failed!";
$resp_arr['mysqli_errno'] = $db_query->errno;
$resp_arr['mysqli_error'] = $db_query->error;
echo json_encode($resp_arr);
return;
}else{
$resp_arr['is_error'] = false;
$resp_arr['affected_rows'] = $db_query->affected_rows;
echo json_encode($resp_arr);
}
}

View File

@@ -0,0 +1,115 @@
<?php
include '../db_creds.php';
ini_set('display_errors', 'Off');
$robo_db = new mysqli($db_host, $db_user, $db_pass, $db_name);
$resp_arr = array();
$affected_rows_total = 0;
if($robo_db->connect_errno){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Failed to connect to database!";
echo json_encode($resp_arr);
return;
}else{
########## DELETION FROM MEMBER SKILLS RELATIONS ##########
$db_query = $robo_db->prepare(<<<QUERY_STRING
DELETE FROM member_skills_relations
WHERE member_id IN (
SELECT id FROM members m
WHERE m.first_name = ? AND m.last_name = ?
)
QUERY_STRING
);
$db_query->bind_param("ss", $_POST['first_name'], $_POST['last_name']);
if(!$db_query){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Parameter bind failed!";
echo json_encode($resp_arr);
return;
}
$db_query->execute();
if(!$db_query){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Database query failed!";
$resp_arr['mysqli_errno'] = $db_query->errno;
$resp_arr['mysqli_error'] = $db_query->error;
echo json_encode($resp_arr);
return;
}else{
$affected_rows_total += $db_query->affected_rows;
}
########## DELETION FROM MEMBER TEAMS RELATIONS ##########
$db_query = $robo_db->prepare(<<<QUERY_STRING
DELETE FROM member_teams_relations
WHERE member_id IN (
SELECT id FROM members m
WHERE m.first_name = ? AND m.last_name = ?
)
QUERY_STRING
);
$db_query->bind_param("ss", $_POST['first_name'], $_POST['last_name']);
if(!$db_query){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Parameter bind failed!";
echo json_encode($resp_arr);
return;
}
$db_query->execute();
if(!$db_query){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Database query failed!";
$resp_arr['mysqli_errno'] = $db_query->errno;
$resp_arr['mysqli_error'] = $db_query->error;
echo json_encode($resp_arr);
return;
}else{
$affected_rows_total += $db_query->affected_rows;
}
########## DELETION FROM MEMBERS ##########
$db_query = $robo_db->prepare(<<<QUERY_STRING
DELETE FROM members
WHERE first_name = ? AND last_name = ?
QUERY_STRING
);
$db_query->bind_param("ss", $_POST['first_name'], $_POST['last_name']);
if(!$db_query){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Parameter bind failed!";
echo json_encode($resp_arr);
return;
}
$db_query->execute();
if(!$db_query){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Database query failed!";
$resp_arr['mysqli_errno'] = $db_query->errno;
$resp_arr['mysqli_error'] = $db_query->error;
echo json_encode($resp_arr);
return;
}else{
$resp_arr['is_error'] = false;
$affected_rows_total += $db_query->affected_rows;
$resp_arr['affected_rows'] = $affected_rows_total;
echo json_encode($resp_arr);
}
}

View File

@@ -0,0 +1,55 @@
<?php
include '../db_creds.php';
ini_set('display_errors', 'Off');
$robo_db = new mysqli($db_host, $db_user, $db_pass, $db_name);
$resp_arr = array();
if($robo_db->connect_errno){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Failed to connect to database!";
echo json_encode($resp_arr);
return;
}else{
$db_query = $robo_db->prepare(<<<QUERY_STRING
SELECT m.first_name, m.last_name, cp.name
FROM club_positions cp
INNER JOIN members m ON m.position = cp.id
WHERE cp.name = ?;
QUERY_STRING
);
$db_query->bind_param("s", $_POST['name']);
if(!$db_query){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Parameter bind failed!";
echo json_encode($resp_arr);
return;
}
$db_query->execute();
if(!$db_query){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Database query failed!";
$resp_arr['mysqli_errno'] = $db_query->errno;
$resp_arr['mysqli_error'] = $db_query->error;
echo json_encode($resp_arr);
return;
}else{
$resp_arr['is_error'] = false;
$db_query->bind_result($first_name, $last_name, $position);
while($entry = $db_query->fetch()){
$resp_arr['members'][] = array($first_name, $last_name, $position);
}
echo json_encode($resp_arr);
}
}

View File

@@ -0,0 +1,56 @@
<?php
include '../db_creds.php';
ini_set('display_errors', 'Off');
$robo_db = new mysqli($db_host, $db_user, $db_pass, $db_name);
$resp_arr = array();
if($robo_db->connect_errno){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Failed to connect to database!";
echo json_encode($resp_arr);
return;
}else{
$db_query = $robo_db->prepare(<<<QUERY_STRING
SELECT om.first_name, om.last_name, cs.name
FROM members om
INNER JOIN member_skills_relations msr ON om.id = msr.member_id
INNER JOIN club_skills cs ON cs.id = msr.skills_id
WHERE cs.name = ?
QUERY_STRING
);
$db_query->bind_param("s", $_POST['name']);
if(!$db_query){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Parameter bind failed!";
echo json_encode($resp_arr);
return;
}
$db_query->execute();
if(!$db_query){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Database query failed!";
$resp_arr['mysqli_errno'] = $db_query->errno;
$resp_arr['mysqli_error'] = $db_query->error;
echo json_encode($resp_arr);
return;
}else{
$resp_arr['is_error'] = false;
$db_query->bind_result($first_name, $last_name, $skill);
while($entry = $db_query->fetch()){
$resp_arr['members'][] = array($first_name, $last_name, $skill);
}
echo json_encode($resp_arr);
}
}

View File

@@ -0,0 +1,56 @@
<?php
include '../db_creds.php';
ini_set('display_errors', 'Off');
$robo_db = new mysqli($db_host, $db_user, $db_pass, $db_name);
$resp_arr = array();
if($robo_db->connect_errno){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Failed to connect to database!";
echo json_encode($resp_arr);
return;
}else{
$db_query = $robo_db->prepare(<<<QUERY_STRING
SELECT om.first_name, om.last_name, ct.name
FROM members om
INNER JOIN member_teams_relations mtr ON om.id = mtr.member_id
INNER JOIN club_teams ct ON ct.id = mtr.team_id
WHERE ct.name = ?
QUERY_STRING
);
$db_query->bind_param("s", $_POST['name']);
if(!$db_query){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Parameter bind failed!";
echo json_encode($resp_arr);
return;
}
$db_query->execute();
if(!$db_query){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Database query failed!";
$resp_arr['mysqli_errno'] = $db_query->errno;
$resp_arr['mysqli_error'] = $db_query->error;
echo json_encode($resp_arr);
return;
}else{
$resp_arr['is_error'] = false;
$db_query->bind_result($first_name, $last_name, $team);
while($entry = $db_query->fetch()){
$resp_arr['members'][] = array($first_name, $last_name, $team);
}
echo json_encode($resp_arr);
}
}

View File

@@ -0,0 +1,56 @@
<?php
include '../db_creds.php';
ini_set('display_errors', 'Off');
$robo_db = new mysqli($db_host, $db_user, $db_pass, $db_name);
$resp_arr = array();
if($robo_db->connect_errno){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Failed to connect to database!";
echo json_encode($resp_arr);
return;
}else{
$db_query = $robo_db->prepare(<<<QUERY_STRING
SELECT
om.first_name,
om.last_name,
(SELECT name FROM club_positions cp
INNER JOIN members m ON m.position = cp.id
WHERE m.first_name = om.first_name AND m.last_name = om.last_name),
(SELECT name FROM club_positions cp
INNER JOIN members m ON m.superior = cp.id
WHERE m.first_name = om.first_name AND m.last_name = om.last_name),
om.email,
om.phone,
om.osu_num,
om.rfid_num
FROM members om;
QUERY_STRING
);
$db_query->execute();
if(!$db_query){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Database query failed!";
$resp_arr['mysqli_errno'] = $db_query->errno;
$resp_arr['mysqli_error'] = $db_query->error;
echo json_encode($resp_arr);
return;
}else{
$resp_arr['is_error'] = false;
$db_query->bind_result($first_name, $last_name, $position, $superior, $email, $phone, $osu_num, $rfid_num);
while($entry = $db_query->fetch()){
$resp_arr['members'][] = array($first_name, $last_name, $position, $superior, $email, $phone, $osu_num, $rfid_num);
}
echo json_encode($resp_arr);
}
}

View File

@@ -0,0 +1,43 @@
<?php
include '../db_creds.php';
ini_set('display_errors', 'Off');
$robo_db = new mysqli($db_host, $db_user, $db_pass, $db_name);
$resp_arr = array();
if($robo_db->connect_errno){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Failed to connect to database!";
echo json_encode($resp_arr);
return;
}else{
$db_query = $robo_db->prepare(<<<QUERY_STRING
SELECT name, description from club_positions GROUP BY id DESC
QUERY_STRING
);
$db_query->execute();
if(!$db_query){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Database query failed!";
$resp_arr['mysqli_errno'] = $db_query->errno;
$resp_arr['mysqli_error'] = $db_query->error;
echo json_encode($resp_arr);
return;
}else{
$resp_arr['is_error'] = false;
$db_query->bind_result($position_name, $position_description);
while($entry = $db_query->fetch()){
$resp_arr['positions'][] = array($position_name, $position_description);
}
echo json_encode($resp_arr);
}
}

View File

@@ -0,0 +1,43 @@
<?php
include '../db_creds.php';
ini_set('display_errors', 'On');
$robo_db = new mysqli($db_host, $db_user, $db_pass, $db_name);
$resp_arr = array();
if($robo_db->connect_errno){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Failed to connect to database!";
echo json_encode($resp_arr);
return;
}else{
$db_query = $robo_db->prepare(<<<QUERY_STRING
SELECT name, description from club_skills GROUP BY id ASC
QUERY_STRING
);
$db_query->execute();
if(!$db_query){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Database query failed!";
$resp_arr['mysqli_errno'] = $db_query->errno;
$resp_arr['mysqli_error'] = $db_query->error;
echo json_encode($resp_arr);
return;
}else{
$resp_arr['is_error'] = false;
$db_query->bind_result($skill_name, $skill_description);
while($entry = $db_query->fetch()){
$resp_arr['skills'][] = array($skill_name, $skill_description);
}
echo json_encode($resp_arr);
}
}

View File

@@ -0,0 +1,43 @@
<?php
include '../db_creds.php';
ini_set('display_errors', 'On');
$robo_db = new mysqli($db_host, $db_user, $db_pass, $db_name);
$resp_arr = array();
if($robo_db->connect_errno){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Failed to connect to database!";
echo json_encode($resp_arr);
return;
}else{
$db_query = $robo_db->prepare(<<<QUERY_STRING
SELECT name, description from club_teams GROUP BY id ASC
QUERY_STRING
);
$db_query->execute();
if(!$db_query){
$resp_arr['is_error'] = true;
$resp_arr['error_reason'] = "Database query failed!";
$resp_arr['mysqli_errno'] = $db_query->errno;
$resp_arr['mysqli_error'] = $db_query->error;
echo json_encode($resp_arr);
return;
}else{
$resp_arr['is_error'] = false;
$db_query->bind_result($team_name, $team_description);
while($entry = $db_query->fetch()){
$resp_arr['teams'][] = array($team_name, $team_description);
}
echo json_encode($resp_arr);
}
}

View File

@@ -0,0 +1,105 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>CS340 Final Website - Corwin Perren</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script src="app.js"></script>
</head>
<body>
<div id="page_header">
<h1>CS 340 Robotics Club User Management System</h1>
</div>
<div>
<span id="status_header">Status: </span><span id="header_status_bar"></span>
</div>
<div>
<span id="error_header">Errors: </span><span id="header_error_bar"></span>
</div>
<div id="mem_man_div">
<h2>Member Management</h2>
<span class="man_row_titles">MEMBER ADD: </span>
<span>First: </span><input class="mem_man_text_input" type="text" id="mem_add_first_name">
<span>Last: </span><input class="mem_man_text_input" type="text" id="mem_add_last_name">
<span>Position: </span><select id="mem_add_position_drop"></select>
<span>Superior: </span><select id="mem_add_superior_drop"></select>
<span>Email: </span><input class="mem_man_text_input" type="text" id="mem_add_email">
<span>Phone #: </span><input class="mem_man_text_input" type="text" id="mem_add_phone">
<span>OSU ID: </span><input class="mem_man_text_input" type="number" id="mem_add_osuid">
<span>RFID #: </span><input class="mem_man_text_input" type="number" id="mem_add_rfid">
<button id="mem_add_submit" type="button">Add</button>
<br><br>
<span class="man_row_titles">MEMBER DEL: </span>
<span>First: </span><input class="mem_man_text_input" type="text" id="mem_del_first_name">
<span>Last: </span><input class="mem_man_text_input" type="text" id="mem_del_last_name">
<button id="mem_del_submit" type="button">Delete</button>
<br><br>
<span class="man_row_titles">ASSIGN SKILL: </span>
<span>First: </span><input class="mem_man_text_input" type="text" id="assign_skill_first_name">
<span>Last: </span><input class="mem_man_text_input" type="text" id="assign_skill_last_name">
<span>Skill: </span><select id="assign_skill_position_drop"></select>
<button id="assign_skill_submit" type="button">Assign</button>
<br><br>
<span class="man_row_titles">ADD TO TEAM: </span>
<span>First: </span><input class="mem_man_text_input" type="text" id="add_team_first_name">
<span>Last: </span><input class="mem_man_text_input" type="text" id="add_team_last_name">
<span>Team: </span><select id="add_team_position_drop"></select>
<button id="add_team_submit" type="button">Add</button>
</div>
<div id="infra_man_div">
<h2>Infrastructure Management</h2>
<span class="man_row_titles">SKILL ADD: </span>
<span>Name: </span><input class="mem_man_text_input" type="text" id="skill_add_name">
<span>Description: </span><input class="mem_man_text_input" type="text" id="skill_add_description">
<button id="skill_add_submit" type="button">Add</button>
<br><br>
<span class="man_row_titles">TEAM ADD: </span>
<span>Name: </span><input class="mem_man_text_input" type="text" id="team_add_name">
<span>Description: </span><input class="mem_man_text_input" type="text" id="team_add_description">
<button id="team_add_submit" type="button">Add</button>
<br><br>
<span class="man_row_titles">POSITION ADD: </span>
<span>Name: </span><input class="mem_man_text_input" type="text" id="position_add_name">
<span>Description: </span><input class="mem_man_text_input" type="text" id="position_add_description">
<button id="position_add_submit" type="button">Add</button>
</div>
<div id="queries_div">
<h2>Display Controls</h2>
<div id="queries_left">
<span class="man_row_titles">SHOW MEMBERS: </span>
<button id="show_members_submit" type="button">SHOW</button>
<br><br>
<span class="man_row_titles">SHOW SKILLS: </span>
<button id="show_skills_submit" type="button">SHOW</button>
<br><br>
<span class="man_row_titles">SHOW TEAMS: </span>
<button id="show_teams_submit" type="button">SHOW</button>
<br><br>
<span class="man_row_titles">SHOW POSITIONS: </span>
<button id="show_positions_submit" type="button">SHOW</button>
</div>
<div id="queries_right">
<br><br>
<span class="man_row_titles">FIND MEMBERS WITH SKILL: </span>
<span>Skill: </span><select id="show_with_skill_drop"></select>
<button id="skill_search_submit" type="button">SEARCH</button>
<br><br>
<span class="man_row_titles">FIND MEMBERS WITH TEAM: </span>
<span>Team: </span><select id="show_with_team_drop"></select>
<button id="team_search_submit" type="button">SEARCH</button>
<br><br>
<span class="man_row_titles">FIND MEMBERS WITH POSITION: </span>
<span>Position: </span><select id="show_with_position_drop"></select>
<button id="position_search_submit" type="button">SEARCH</button>
</div>
</div>
<div id="main_output_div">
<div id="main_output_content">
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,52 @@
body {
background-color: #353535 ;
color: #e6e6e6;
margin: 0;
padding: 0;
}
#error_header {
color: #ff0001;
}
#page_header {
margin-top: 0;
margin-left: 0;
margin-right: 0;
text-align: center;
background-color: black;
color: #10ac25;
}
#page_header h1 {
margin: 0;
padding: 0;
}
.man_row_titles {
color: #10ac25;
padding-right: 20px;
}
.mem_man_text_input {
width: 75px;
}
#queries_left {
float: left;
}
#queries_right {
margin-left: 300px;
}
#main_output_div {
border-top: 2px solid #10ac25;
margin-top: 25px;
}
.results_table table, th, td{
border: 1px solid #e6e6e6;
padding: 2px;
border-collapse: collapse;
}