The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
diff -rc HTMLView/DB.pm /tmp/HTMLView/HTMLView/DB.pm
*** HTMLView/DB.pm	Wed Apr 26 11:36:42 2000
--- /tmp/HTMLView/HTMLView/DB.pm	Wed Apr 26 11:32:41 2000
***************
*** 181,194 ****
  sub update {
  	my ($self, $tab, $post)=@_;
  	my $cmd="update " . $tab->name . " set ";
! 	
  	foreach my $f ($post->fld_names) {
  		foreach ($post->fld($f)->name_vals) {
! 			$cmd.= $_->{'name'} ."=". $_->{'val'} . ", ";
  		}
  	}
  	$cmd=~s/, $//;
! 	$cmd.=" where " . $tab->id->name . "=" . $post->id; 
  	$self->send($cmd);
  
  	foreach my $f ($post->fld_names) {
--- 181,198 ----
  sub update {
  	my ($self, $tab, $post)=@_;
  	my $cmd="update " . $tab->name . " set ";
! 	my $oldid;	
  	foreach my $f ($post->fld_names) {
  		foreach ($post->fld($f)->name_vals) {
! 			if ($_->{'name'} eq $tab->id->name . 'old') {
! 				$oldid= $_->{'val'} 
! 			} else {
! 				$cmd.= $_->{'name'} ."=". $_->{'val'} . ", ";
! 			}
  		}
  	}
  	$cmd=~s/, $//;
! 	$cmd.=" where " . $tab->id->name . "=" . $oldid; 
  	$self->send($cmd);
  
  	foreach my $f ($post->fld_names) {
diff -rc HTMLView/Id.pm /tmp/HTMLView/HTMLView/Id.pm
*** HTMLView/Id.pm	Wed Apr 26 11:50:58 2000
--- /tmp/HTMLView/HTMLView/Id.pm	Wed Apr 26 11:32:41 2000
***************
*** 55,67 ****
  require DBIx::HTMLView::Int;
  @ISA = qw(DBIx::HTMLView::Int);
  
  sub default_fmt {
  	my ($self, $kind)=@_;
  	if ($kind eq 'edit_html') {
  		return 	$self->fmt('view_html') . 
  			'<perl>if ($self->got_val) { return ' .
! 				'"<input type=hidden name=\"".$self->name . "\" value=\"".$self->var("val")."\">"' . 
! 			'} </perl>';
  	}
  	return DBIx::HTMLView::Field::default_fmt(@_);
  }
--- 55,74 ----
  require DBIx::HTMLView::Int;
  @ISA = qw(DBIx::HTMLView::Int);
  
+ sub editable {
+ 	my $self=shift;
+ 	return 'type=hidden' if !$self->got_data('editable');
+ 	
+ }
+ 
  sub default_fmt {
  	my ($self, $kind)=@_;
  	if ($kind eq 'edit_html') {
  		return 	$self->fmt('view_html') . 
  			'<perl>if ($self->got_val) { return ' .
! 				'"<input type=hidden name=\"".$self->name . "old\" value=\"".$self->var("val")."\">"} </perl>' .
! 			'<input '.$self->editable. 
! 			' name="<var name>" value="<perl>js_escape($self->var("val"))</perl>" size='.$self->edit_size . '>';
  	}
  	return DBIx::HTMLView::Field::default_fmt(@_);
  }
diff -rc HTMLView/Post.pm /tmp/HTMLView/HTMLView/Post.pm
*** HTMLView/Post.pm	Wed Apr 26 12:06:15 2000
--- /tmp/HTMLView/HTMLView/Post.pm	Wed Apr 26 11:32:41 2000
***************
*** 93,102 ****
  				$self->set($_, $data->{$_});
  			}
  		} elsif ($data->isa('CGI')) {
  			foreach ($tab->fld_names) {
  				my @val=$data->param($_);
  				if (defined $val[0]) {
! 					$self->set($_,\@val); 
  				}
  			}
  		} else {
--- 93,106 ----
  				$self->set($_, $data->{$_});
  			}
  		} elsif ($data->isa('CGI')) {
+ 			my @val=$data->param($tab->id->name.'old');
+ 			if (defined $val[0]) {
+ 				$self->set($tab->id->name.'old',\@val);
+ 			}
  			foreach ($tab->fld_names) {
  				my @val=$data->param($_);
  				if (defined $val[0]) {
! 					$self->set($_,\@val);
  				}
  			}
  		} else {
***************
*** 261,267 ****
  
  sub got_id {
  	my $self=shift;
! 	(defined $self->{'data'}{$self->tab->id->name});
  }
  
  
--- 265,271 ----
  
  sub got_id {
  	my $self=shift;
! 	(defined $self->{'data'}{$self->tab->id->name . 'old'});
  }
  
  
***************
*** 289,296 ****
--- 293,302 ----
  sub update {
  	my $self=shift;
  	if ($self->got_id) {
+ 	        #confess "id defined";
  		$self->tab->change($self);
  	} else {
+ 	        #confess "No id defined";
  		$self->tab->insert($self);
  	}
  }
diff -rc HTMLView/Table.pm /tmp/HTMLView/HTMLView/Table.pm
*** HTMLView/Table.pm	Wed Apr 26 12:25:00 2000
--- /tmp/HTMLView/HTMLView/Table.pm	Wed Apr 26 11:32:41 2000
***************
*** 443,449 ****
  
  sub get {
    my ($self, $id)=@_;
!   $self->list($self->id->name . "=" . $id)->first;
  }
  
  =head2 $table->msql_create
--- 416,422 ----
  
  sub get {
    my ($self, $id)=@_;
!   $self->list($self->id->name . "='$id'")->first;
  }
  
  =head2 $table->msql_create
diff -rc HTMLView/mysqlDB.pm /tmp/HTMLView/HTMLView/mysqlDB.pm
*** HTMLView/mysqlDB.pm	Wed Apr 26 00:10:47 2000
--- /tmp/HTMLView/HTMLView/mysqlDB.pm	Wed Apr 26 11:32:41 2000
***************
*** 60,72 ****
  			$values .= $_->{'val'}.", ";
  		}
  	}
! 
  	# Add id as it might be the only field
! 	$names .= $post->tab->id->name;
! 	$values .= "NULL";
! 
  	my $sth=$self->send($cmd . " ($names) VALUES ($values)");
! 	$post->set($tab->id->name, $sth->{'mysql_insertid'}); 
  
   	foreach my $f ($post->fld_names) {
  		$post->fld($f)->post_updated;
--- 60,74 ----
  			$values .= $_->{'val'}.", ";
  		}
  	}
! 	
  	# Add id as it might be the only field
! 	#$names .= $post->tab->id->name;
! 	#$values .= "NULL";
! 	$names =~ s/,\s$//;
! 	$values =~ s/,\s$//;
! #	print "$cmd ($names) VALUES ($values)\n";
  	my $sth=$self->send($cmd . " ($names) VALUES ($values)");
! 	$post->set($tab->id->name, $sth->{'insertid'}); 
  
   	foreach my $f ($post->fld_names) {
  		$post->fld($f)->post_updated;