sub naechster_Datensatz{ my ($id, $frame_kontakte_haupt, $ref_hash_haupt, $registerkarte,...) = @_; my $sth = $dbh->prepare( "SELECT id FROM kontakte WHERE id $zeichen ? LIMIT 1" ); $sth->execute ($id); my $ref = $sth->fetchrow_hashref(); $sth->finish (); if ((!defined($ref)) && ($zeichen eq "<")){ $sth = $dbh->prepare( "SELECT id FROM kontakte ORDER BY id DESC LIMIT 1" ); $sth->execute (); $ref = $sth->fetchrow_hashref(); $sth->finish (); } if ((!defined($ref)) && ($zeichen eq ">")){ $sth = $dbh->prepare( "SELECT id FROM kontakte ORDER BY id LIMIT 1" ); $sth->execute (); $ref = $sth->fetchrow_hashref(); $sth->finish (); } $ref_hash_haupt = &datensatz_von_datenbank_laden( $dbh, "select * from kontakte where ID = ?", $ref->{'id'}, "fetchrow_hashref", ""); for my $item($frame_kontakte_haupt->children()){ $item->destroy(); } for my $item($registerkarte->children()){ $item->destroy(); } for my $item($frame_top_toolbox->children()){ $item->destroy(); } print "ID_HASH $ref_hash_haupt->{'id'}\n"; &kontaktfenster_inhalt_aufbauen($frame_kontakte_haupt, \%{$ref_hash_haupt}, $registerkarte,...); }#naechster_Datensatz sub sichern{ my ($dbh, $tabellen_name, $hash_ref, $typ_fuer_browseentry, $tabelle_fuer_browseentry, $art_der_sicherung, $id_von_hauptkontakt) = @_; my ($sql, $zeilen_bezeichnung, @array, $zeile, $values); #$hash_ref = typ_in_wert_wandeln(\%{$hash_ref}, $typ_fuer_browseentry, $tabelle_fuer_browseentry, $dbh, "id", "beschreibung"); if ($art_der_sicherung eq "fetchall"){ my $sth_id_kontrolle =$dbh->prepare ("select id from $tabellen_name"); $sth_id_kontrolle->execute (); my $id_kontrolle = $sth_id_kontrolle->fetchall_hashref('id'); $sth_id_kontrolle->finish(); foreach my $datensatz_id (sort keys(%{$hash_ref})) { if (defined($id_kontrolle->{$datensatz_id})){ foreach $zeilen_bezeichnung (keys(%{$hash_ref->{$datensatz_id}})) { $sql .= "," if $sql; $sql .= "$zeilen_bezeichnung"." = ?"; $values = Encode::encode ("ISO-8859-1", $hash_ref->{$datensatz_id}->{$zeilen_bezeichnung}); push (@array, "$values"); } push (@array, $datensatz_id); $sql = "UPDATE $tabellen_name SET $sql WHERE id = ?"; $dbh->do ($sql, undef, @array); undef $sql; undef @array; } else { print "INSERT"; foreach $zeilen_bezeichnung (keys(%{$hash_ref->{$datensatz_id}})) { next if (!defined ($hash_ref->{$datensatz_id}->{$zeilen_bezeichnung})); $sql .= "," if $sql; $sql .= "$zeilen_bezeichnung"." = ?"; $hash_ref->{$datensatz_id}->{'kontakte_id'} = $id_von_hauptkontakt; $values = Encode::encode ("ISO-8859-1", $hash_ref->{$datensatz_id}->{$zeilen_bezeichnung}); push (@array, "$values"); } push (@array, $datensatz_id); $sql = "INSERT INTO $tabellen_name SET $sql" if (defined ($sql)); print "\n\n $sql \n\n"; if (defined ($sql)){ $dbh->do ($sql, undef, @array); } undef $sql; undef @array; #$hash_ref = &leere_zeilen_an_hlist_anhaengen( $dbh, "select * from $tabellen_name where kontakte_id = ?", $id_von_hauptkontakt, \%{$hash_ref}); } } } elsif($art_der_sicherung eq "fetchrow"){ if (defined($hash_ref->{'id'})){ foreach $zeilen_bezeichnung (keys(%{$hash_ref})) { $sql .= "," if $sql; $sql .= "$zeilen_bezeichnung"." = ?"; $values = Encode::encode ("ISO-8859-1", $hash_ref->{$zeilen_bezeichnung}); push (@array, "$values"); } push (@array, $hash_ref->{'id'}); $sql = "UPDATE $tabellen_name SET $sql WHERE id = ?"; print @array; $dbh->do ($sql, undef, @array); undef $sql; undef @array; } else { foreach $zeilen_bezeichnung (keys(%{$hash_ref})) { next if (!defined ($hash_ref->{$zeilen_bezeichnung})); $sql .= "," if $sql; $sql .= "$zeilen_bezeichnung"." = ?"; $values = Encode::encode ("ISO-8859-1", $hash_ref->{$zeilen_bezeichnung}); push (@array, "$values"); } $sql = "INSERT INTO $tabellen_name SET $sql" if (defined ($sql)); print "\n\n $sql \n\n"; if (defined ($sql)){ $dbh->do ($sql, undef, @array); } undef $sql; undef @array; } } } }#sichern