From: Metabox Date: Sat, 10 Aug 2019 06:23:52 +0000 (+1000) Subject: Renumeration fixed by letting SQL drop recreate. X-Git-Url: https://lifelog.hopto.org/gitweb/?a=commitdiff_plain;h=80032dc47f2cbedb45d2fb82bc786f374c9ac8b2;p=LifeLog.git Renumeration fixed by letting SQL drop recreate. --- diff --git a/dbLifeLog/main.cnf b/dbLifeLog/main.cnf index b34147a..8881427 100644 --- a/dbLifeLog/main.cnf +++ b/dbLifeLog/main.cnf @@ -60,7 +60,7 @@ INSERT INTO LOG ( SELECT ID_CAT, DATE, LOG, - AMMOUNT + AMOUNT FROM life_log_temp_table; DROP TABLE life_log_temp_table; diff --git a/htdocs/cgi-bin/config.cgi b/htdocs/cgi-bin/config.cgi index 0278f1d..a905d8e 100755 --- a/htdocs/cgi-bin/config.cgi +++ b/htdocs/cgi-bin/config.cgi @@ -109,7 +109,7 @@ my $BGCOL = '#c8fff8'; print $cgi->header(-expires=>"+6s", -charset=>"UTF-8"); print $cgi->start_html(-title => "Personal Log", -BGCOLOR=>"$BGCOL", - -onload => "loadedBody();", + -onload => "loadedBody(false);", -style => [ { -type => 'text/css', -src => "wsrc/$TH_CSS" }, { -type => 'text/css', -src => 'wsrc/jquery-ui.css' }, @@ -139,13 +139,12 @@ print $cgi->start_html(-title => "Personal Log", -BGCOLOR=>"$BGCOL", { -type => 'text/javascript', -src => 'wsrc/jquery.poshytip.js' } ], ); - - + if ($ERROR){&error;}else{ print qq( - +
); @@ -546,35 +545,35 @@ elsif ($change == 1){ if($change > 1){ - #UNDER DEVELOPMENT! - my $caid = $cgi->param('caid'); - my $canm = $cgi->param('canm'); - my $cade = $cgi->param('cade'); - my $valid = 1; - while(my @row = $dbs->fetchrow_array()) { + my $caid = $cgi->param('caid'); + my $canm = $cgi->param('canm'); + my $cade = $cgi->param('cade'); + my $valid = 1; - my $cid = $row[0]; - my $cnm = $row[1]; - my $cds = $row[2]; - + while(my @row = $dbs->fetchrow_array()) { - if($cid==$caid || $cnm eq $canm){ - $valid = 0; - last; - } - } + my $cid = $row[0]; + my $cnm = $row[1]; + my $cds = $row[2]; + - if($valid){ - $d = $db->prepare('INSERT INTO CAT VALUES (?,?,?)'); - $d->execute($caid,$canm, $cade); - $status = "Added Category $canm!"; - } - else{ - $status = "ID->".$caid." or -> Category->".$canm." is already assigned, these must be unique!"; - die "

Client Error: $status

"; + if($cid==$caid || $cnm eq $canm){ + $valid = 0; + last; } - $status = "Inserted new category[$canm]"; + } + + if($valid){ + $d = $db->prepare('INSERT INTO CAT VALUES (?,?,?)'); + $d->execute($caid,$canm, $cade); + $status = "Added Category $canm!"; + } + else{ + $status = "ID->".$caid." or -> Category->".$canm." is already assigned, these must be unique!"; + die "

Client Error: $status

"; + } + $status = "Inserted new category[$canm]"; }elsif ($chgsys == 1){ @@ -640,7 +639,7 @@ try{ $db->do('BEGIN TRANSACTION;'); #Check for duplicates, which are possible during imports or migration as internal rowid is not primary in log. - $dbs = dbExecute('select rowid, DATE from LOG ORDER BY DATE;'); + $dbs = dbExecute('SELECT rowid, DATE FROM LOG ORDER BY DATE;'); while(my @row = $dbs->fetchrow_array()) { my $existing = $dates{$row[0]}; if($existing && $existing eq $row[1]){ @@ -659,33 +658,28 @@ try{ $st_del->execute(); } - #Renumerate! - my $cnt = 1; - my $st_upd; - $dbs = dbExecute("select count(rowid) from LOG;"); - @row = $dbs->fetchrow_array(); - $cntr_upd =$row[0]; - - - $dbs = dbExecute("select rowid, RTF from LOG order by DATE;"); - while(@row = $dbs->fetchrow_array()) { - $issue = "UPDATE LOG SET rowid=$cnt WHERE rowid=$row[0];"; - $st_upd = $db->prepare($issue); - $st_upd->execute(); - if($row[1]){#RTF - my @doc = dbExecute("SELECT LID FROM NOTES WHERE LID='$row[0]';"); - if(scalar @doc>0){ - dbExecute("UPDATE NOTES SET LID = $cnt WHERE LID='$row[0]';"); - } - } - $cnt++; - } + #Renumerate Log! + $dbs = dbExecute("CREATE TABLE life_log_temp_table AS SELECT * FROM LOG;"); + $dbs = dbExecute('SELECT rowid, DATE FROM LOG ORDER BY DATE;'); # Delete Orphaned Notes entries. $dbs = dbExecute("SELECT LID, LOG.rowid from NOTES LEFT JOIN LOG ON NOTES.LID = LOG.rowid WHERE LOG.rowid is NULL;"); while(my @row = $dbs->fetchrow_array()) { $db->do("DELETE FROM NOTES WHERE LID=$row[0];"); } + $dbs = dbExecute('DROP TABLE LOG;'); + $dbs = dbExecute(qq(CREATE TABLE LOG ( + ID_CAT TINY NOT NULL, + DATE DATETIME NOT NULL, + LOG VCHAR (128) NOT NULL, + AMOUNT INTEGER, + AFLAG TINY DEFAULT 0, + RTF BOOL DEFAULT 0);)); + + $dbs = dbExecute('INSERT INTO LOG (ID_CAT,DATE,LOG,AMOUNT,AFLAG, RTF) + SELECT ID_CAT, DATE, LOG, AMOUNT, AFLAG, RTF + FROM life_log_temp_table ORDER by DATE;'); + $dbs = dbExecute('DROP TABLE life_log_temp_table;'); &resetCategories if $rs_cats;