From: wbudic Date: Thu, 11 Oct 2018 04:55:17 +0000 (+1100) Subject: Moved database creation and checking into subbroutine, implemented basic record set... X-Git-Url: https://lifelog.hopto.org/gitweb/?a=commitdiff_plain;h=f4d95b0c5c5ee1759ce39e9875f4b953957a86df;p=LifeLog.git Moved database creation and checking into subbroutine, implemented basic record set browsing --- diff --git a/htdocs/cgi-bin/main.cgi b/htdocs/cgi-bin/main.cgi index 79aece3..e3ce1a2 100755 --- a/htdocs/cgi-bin/main.cgi +++ b/htdocs/cgi-bin/main.cgi @@ -18,7 +18,6 @@ my $userid = ""; my $password = ""; my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 }) or die "

Error->"& $DBI::errstri &"

"; -my $rs_prev=0; @@ -39,59 +38,13 @@ print $q->start_html(-title => "Personal Log", ); my $rv; +my $sth; my $today = DateTime->now; $today->set_time_zone( $TIME_ZONE ); - -my $sth = $dbh->prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='LOG';"); -$sth->execute(); - -if(!$sth->fetchrow_array()) { - my $stmt = qq( - - CREATE TABLE LOG ( - ID_CAT TINY NOT NULL, - DATE DATETIME NOT NULL, - LOG VCHAR(128) NOT NULL - ); - - ); - - $rv = $dbh->do($stmt); - - if($rv < 0) { - print "

Error->"& $DBI::errstri &"

"; - } - - $sth = $dbh->prepare('INSERT INTO LOG VALUES (?,?,?)'); - - $sth->execute( 3, $today, "DB Created!"); - - - $stmt = qq( - - CREATE TABLE CAT( - ID INT PRIMARY KEY NOT NULL, - NAME VCHAR(16) - ); - - ); - - $rv = $dbh->do($stmt); - - if($rv < 0) { - print "

Error->"& $DBI::errstri &"

"; - } - - $sth = $dbh->prepare('INSERT INTO CAT VALUES (?,?)'); - - $sth->execute(1,"Unspecified"); - $sth->execute(3,"File System"); - $sth->execute(6,"System Log"); - $sth->execute(9,"Event"); - $sth->execute(28,"Personal"); - $sth->execute(32, "Expense"); -} +##################### + &checkCreateTables; +##################### my $stmtCat = "SELECT * FROM CAT;"; my $stmt = "SELECT rowid, ID_CAT, DATE, LOG from LOG ORDER BY rowid DESC, DATE DESC;"; @@ -112,16 +65,24 @@ $cats = $cats.''; my $tbl = qq( -
+ ); my $tbl_rc = 0; - -################################## -&processSubmit; -################################## - +my $tbl_rc_prev = 0; +my $tbl_cur_id; + +############### + &processSubmit; +############### + # + # Enable to see main query statment issued! + # +# print "### -> ".$stmt; + + # + # #Fetch entries! # $sth = $dbh->prepare( $stmt ); @@ -134,32 +95,45 @@ my $tfId = 0; while(my @row = $sth->fetchrow_array()) { + my $id = $row[0]; my $ct = $hshCats{@row[1]}; my $dt = DateTime::Format::SQLite->parse_datetime( $row[2] ); my $log = $row[3]; - #Apostrophe in the log value is doubled to avoid SQL errors. - $log =~ s/''/'/g; + + #Apostrophe in the log value is doubled to avoid SQL errors. + $log =~ s/''/'/g; + # + + + if($tbl_rc_prev == 0){ + $tbl_rc_prev = $id; + } if($tfId==1){ $tfId = 0; }else{ $tfId = 1; } - $tbl = $tbl . '' . - '" . '" . '". - ' - '; $tbl_rc += 1; - if($REC_LIMIT>0 && $tbl_rc>$REC_LIMIT){ + if($REC_LIMIT>0 && $tbl_rc==$REC_LIMIT){ # #UNDER DEVELOPMENT! # + if(!$tbl_cur_id){ + #Following is a quick hack as previous id as current minus one might not coincide in the database table! + $tbl_cur_id = $id-1; + } if($tfId==1){ $tfId = 0; }else{ @@ -168,20 +142,25 @@ my $tfId = 0; $tbl = $tbl . ''; - if($rs_prev>0){ + my $rs_prev = $q->param('rs_prev'); + if($rs_prev && $rs_prev>0){ $tbl = $tbl . ''; + }else{ + + $tbl = $tbl .''; } - $tbl = $tbl . ''; + $tbl = $tbl . ''; - $tbl = $tbl .''; + $tbl = $tbl .''; last; # #END OF UNDER DEVELOPMENT! @@ -189,8 +168,8 @@ my $tfId = 0; } } - if($tbl_rc==1){ - $tbl = $tbl . "\n"; + if($tbl_rc==0){ + $tbl = $tbl . "\n"; } $tbl = $tbl . '
DateTimeLogCategoryEdit
'. + $tbl = $tbl . '
'. $dt->ymd . '' . $dt->hms . "' . $dt->hms . "' . $log . "' . $ct . + '' . $ct . ' + +
- Top -
Table is Empty!
Database is New or Empty!
@@ -198,7 +177,7 @@ my $tfId = 0;
'; my $frm = qq( -
+ @@ -213,7 +192,9 @@ my $frm = qq(
* LOG ENTRY FORM *

-
+ + + ); @@ -235,14 +216,14 @@ sub processSubmit { my $cat = $q->param('cat'); my $edit_mode = $q->param('submit_is_edit'); my $view_mode = $q->param('submit_is_view'); + my $view_all = $q->param('rs_all'); - $rs_prev = $q->param("rs_cnt"); #Apostroph's need to be replaced with doubles and white space fixed for the SQL. $log =~ s/(?<=\w) ?' ?(?=\w)/''/g; - if($edit_mode != "0"){ + if($edit_mode && $edit_mode != "0"){ #Update my $stm = "UPDATE LOG SET ID_CAT='".$cat."', DATE='". $date ."', @@ -252,15 +233,23 @@ sub processSubmit { return; } - if($view_mode != "0"){ + if($view_all && $view_all=="1"){ + $REC_LIMIT = 0; + } + + if($view_mode && $view_mode == "1"){ # #UNDER DEVELOPMENT # - my $rsc = $q->param('rsc'); - $stmt = 'SELECT rowid, ID_CAT, DATE, LOG from LOG - where rowid > "'.$rsc.'" ORDER BY rowid DESC, DATE DESC;'; - return; + my $rs = $q->param("rs_cur"); + my $rs_prev = $q->param("rs_prev"); + + if($rs){ + $stmt = 'SELECT rowid, ID_CAT, DATE, LOG from LOG + where rowid <= "'.$rs.'" ORDER BY rowid DESC, DATE DESC;'; + return; + } } if($log && $date && $cat){ @@ -283,3 +272,60 @@ sub processSubmit { } } + + + +sub checkCreateTables(){ + + $sth = $dbh->prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='LOG';"); + $sth->execute(); + + if(!$sth->fetchrow_array()) { + my $stmt = qq( + + CREATE TABLE LOG ( + ID_CAT TINY NOT NULL, + DATE DATETIME NOT NULL, + LOG VCHAR(128) NOT NULL + ); + + ); + + $rv = $dbh->do($stmt); + + if($rv < 0) { + print "

Error->"& $DBI::errstri &"

"; + } + + $sth = $dbh->prepare('INSERT INTO LOG VALUES (?,?,?)'); + + $sth->execute( 3, $today, "DB Created!"); + + + $stmt = qq( + + CREATE TABLE CAT( + ID INT PRIMARY KEY NOT NULL, + NAME VCHAR(16) + ); + + ); + + $rv = $dbh->do($stmt); + + if($rv < 0) { + print "

Error->"& $DBI::errstri &"

"; + } + + $sth = $dbh->prepare('INSERT INTO CAT VALUES (?,?)'); + + $sth->execute(1,"Unspecified"); + $sth->execute(3,"File System"); + $sth->execute(6,"System Log"); + $sth->execute(9,"Event"); + $sth->execute(28,"Personal"); + $sth->execute(32, "Expense"); + } + +} + diff --git a/htdocs/cgi-bin/wsrc/main.js b/htdocs/cgi-bin/wsrc/main.js index 660640d..725642a 100644 --- a/htdocs/cgi-bin/wsrc/main.js +++ b/htdocs/cgi-bin/wsrc/main.js @@ -63,8 +63,40 @@ function edit(el){ return false; } -function submitNext(el){ - document.getElementById("submit_is_view").value = 1; - return true; +function submitNext(tbl_rc){ + + var frm = document.getElementById("frm_log"); + frm.submit_is_view.value = 1; + frm.rs_all.value = 0; + frm.rs_cur.value = tbl_rc; + frm.submit_is_view.value = 1; + frm.submit(); + + return false; } +function submitPrev(tbl_rc){ + + var frm = document.getElementById("frm_log"); + frm.submit_is_view.value = 1; + frm.rs_all.value = 0; + frm.rs_cur.value = tbl_rc; + frm.rs_prev.value = tbl_rc; + frm.submit_is_view.value = 1; + frm.submit(); + + return false; +} + +function viewAll(){ + + var frm = document.getElementById("frm_log"); + frm.submit_is_view.value = 1; + frm.rs_all.value = 1; + frm.rs_cur.value = 0; + frm.rs_prev.value = 0; + frm.submit_is_view.value = 1; + frm.submit(); + + return false; +}