Servlet og javascript til at vise timer
Okay, jeg har haft en del tråde omkring dette emne, og jeg har ikke fået løst det endnu desværre efter 7 dages programmering kun med dette, så mit hoved er ved at gå amok disse dage.Meningen med dette projekt er at man kan regne ud hvor meget man har arbejdet i en given periode. Her har man 3 form fields, hvor man skriver en dato (yyyy-mm-dd), hvor mange timer og minutter man har arbejdet på én dag i forskellige jobs. Dette bliver så gemt i min MySQL database.
Min database består af følgende kolonner:
P_id | Date | Day_hours | Day_minutes I Allday_hours I
Job 1 1 2014-03-10 4 45 4.45
Job 2 2 2014-03-10 5 15 5.15
Job 3 3 2014-03-09 3 30 3.30
Job 4 4 2014-03-09 1 45 1.45
Det der sker her er at Day_hours og Day_minutes bliver lagt sammen i en fiktiv Allday_hours COLUMN. Det skulle gerne ske med følgende SQL query:
String sql = "SELECT *, (Day_hours + (Day_minutes / 60)) AS Allday_hours FROM Workdata WHERE Date = ?";
Herefter får jeg udskrevet det samlede timeantal, hvor det i dette tilfælde ville være: 15.15 timer
Pointen i dette er at man har en side hvor man vælger en "fra" dato og en "til" dato. Dette har jeg lavet i javascript, som ser sådan ud:
http://postimg.org/image/91rxb47ef/
Problemet ligger i at jeg skal KUN have det time antal der er arbejdet i den periode jeg vælger. Det vil sige jeg i min form har en "startDate" og en "endDate" hvor igennem min servlet så skal hente de pågældende datoer, hvorefter jeg får vist mine timer. Jeg har haft mange forskellige fejl, men fejlen er lige nu at der ikke bliver udskrevet noget som helst i mine divtags, men der er connection til databasen når jeg kører min JSP/Javascript side.
jeg håber virkelig der er nogle der kan hjælpe mig i mål med dette, så jeg kan komme videre i mit lille projekt? Så hvad er det der går galt her?
Mvh Mads
Mit java script:
<form>
<input id="startDate"/>
<input id="endDate"/>
</form>
<div id="startresult"></div>
<div id="endresult"></div>
<script>
$(function(){
$("#startDate").datepicker({
dateFormat: 'yy-mm-dd',
onSelect: function(dateText,inst){
$('.selected-date').html(dateText);
$.ajax({
url: "../getHoursSQL",
type: "post",
data: JSON,
success: function(data){
start: $("#startDate").val();
alert("success");
$("#startresult").html(data);
},
error:function(){
alert("failure");
$("#startresult").html('there is error while submit');
}
});
}
});
});
$(function(){
$("#endDate").datepicker({
dateFormat: 'yy-mm-dd',
onSelect: function(dateText,inst){
$('.selected-date').html(dateText);
$.ajax({
url: "../getHoursSQL",
type: "post",
data: JSON,
success: function(data){
end: $("#endDate").val();
alert("success");
$("#endresult").html(data);
},
error:function(){
alert("failure");
$("#result").html('there is error while submit');
}
});
}
});
});
</script>
(Her skal det lige siges at man kan lave det på en smartere måned, som en flink mand herinde har hjulpet mig med. Det venter jeg dog lige med, indtil jeg har fået det hele til at fungere)
Min Servlet:
package WorkPackage;
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
@WebServlet("/getHoursSQL")
public class getHoursSQL extends HttpServlet{
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException{
String connectionURL = "jdbc:mysql://localhost/NekiWork";
Connection connection=null;
String startDate = req.getParameter("Date");
String endDate= req.getParameter("Date");
try {
//Load database driver
Class.forName("com.mysql.jdbc.Driver");
//Connection to the database
connection = DriverManager.getConnection(connectionURL, "root", "");
//Getting the data from database
String sql = "SELECT *, (Day_hours + (Day_minutes / 60)) AS Allday_hours FROM Workdata WHERE Date = ?";
PreparedStatement pst = connection.prepareStatement(sql);
pst.setString(1,startDate);
pst.setString(2,endDate);
//Show the result from database
ResultSet rs = pst.executeQuery();
float Allday_hours_sum = 0;
while (rs.next()){
Allday_hours_sum += rs.getFloat("Allday_hours");
}
res.setContentType("text/html;charset=UTF-8");
res.getWriter().print(Allday_hours_sum);
pst.close();
}
catch(ClassNotFoundException e){
System.out.println("Couldn't load database driver: " + e.getMessage());
}
catch(SQLException e){
System.out.println("SQLException caught: " + e.getMessage());
}
catch (Exception e){
System.out.println(e);
}
finally {
try {
if (connection != null) connection.close();
}
catch (SQLException ignored){
System.out.println(ignored);
}
}
}
}