#!/usr/bin/perl
#!perl.exe -t
##############################################
### datenbank suche
### Version 1.0
### Copyright 2000 > boomtec < mario-luepke-online
### All Rights Reserved
##############################################

#####################################################################
######################			EINGABE AUSLESEN		###################
#####################################################################

		@kriterium = undef;
		$eingabe = <STDIN>;
		@eingabe = split( /&/ , $eingabe);
		foreach $zeile (@eingabe)	{
				($feld, $inhalt) = split( /=/ , $zeile);
				$daten = $inhalt;
				$inhalt = &aufbereiter ($daten);
				$eingabe{$feld} = $inhalt;
		}

print "Content-type: text/html\n\n"; 		
print'<html>';

#####################################################################
######################			Datenbanken AUSLESEN		#################
#####################################################################

		### Datenbank REGION einlesen  ###
		open (REGION, "region.db");
				@region = <REGION>;
		close (REGION);
		
		foreach $zeile (@region) {
				$zeile =~ s/\n//;
				$zeile =~ s/\r//;
		}

 		### Datenbank LAND einlesen  ###										
		open (LAND, "land.db");																
				@land = <LAND>;																	
		close (LAND);
		
		foreach $zeile (@land) {
				$zeile =~ s/\n//;
				$zeile =~ s/\r//;
		}

		### Datenbank ZUORDNUNG einlesen  ###
		$anzahl =0;
		open (ZUORDNUNG, "zuordnung.db");
				while ($zeile = <ZUORDNUNG>) {
						my (@zeile) = split ( /<>/ , $zeile);
						push (@{$zuordnung}, \@zeile);
						$anzahl++;
				}
		close (ZUORDNUNG);

#####################################################################
######################			Tabellen AUSLESEN		#####################
#####################################################################

		### komplettes Verzeichnis einlesen  ###
		opendir (VERZ, ".");
				@verzeichnis = readdir VERZ;
		closedir (VERZ);

		@verzeichnis = sort @verzeichnis;

		### Daten-Tabellen selktieren  ###
		foreach $zeile (@verzeichnis)	{
				if ($zeile =~ m/\.tab/gi ) {
						if (length $zeile > 3) {
								push @tabelle, $zeile;
						}
				}
		}

		### Tabellen auslesen  ###
		$ziffer = 1;
		foreach $zeile (@tabelle)	{

			$ziffer = &zweistellig ($ziffer);
				($dateiname, $endung) = split( /\./ , $zeile);
				($name, $bezeichnung) = split( /_/ , $dateiname);

				### Tabellen öffnen  ###
				open (TABELLE, "$zeile");
						@{$ziffer} = <TABELLE>;
				close (TABELLE);

#				print "Name : -$name- und Bezeichnung : -$bezeichnung-<br>";
				$ziffer++;
		}
		
		$tabellenzahl = $ziffer;

foreach $zeile (@zuordnung)	{
#		print "-$zeile- <br>";
}

#print $tabellenzahl;

################################################################################
#########################		Ausgabefelder vorbereiten 	#############################
################################################################################

		### Ausgabe REGION vorbereiten ###
		$region = undef;
		foreach $zeile (@region) {
				$zeile =~ s/\n//;
				$region = $region . "<option value=\"$zeile\">$zeile<\/option>". "\n";
		}
		### Ausgabe LAND vorbereiten ###																		
		$land = undef;
		foreach $zeile (@land) {
				$zeile =~ s/\n//;
				$land = $land . "<option value=\"$zeile\">$zeile<\/option>". "\n";
		}

#####################################################################
######################			Suchmaske öffnen		########################
#####################################################################

		### Einlesen der  Antwortseite ###
				open (SUCHMASKE, "planer_suche.htm");
						@such_maske = <SUCHMASKE>;
				close (SUCHMASKE);


		### Einlesen der  Ausgabesequenz ###
				open (SEQUENZ, "sequenz.htm");
						@sequenz_gesamt = <SEQUENZ>;
				close (SEQUENZ);

		### Sequenz ausschneiden ###
				@sequenz = undef;
				$marke = 0;
				foreach $zeile (@sequenz_gesamt) {
						if ($zeile =~ m/<!--sequenz_1-->/gi) {
								$marke = 1;
						}
						if ($marke eq "1") {
								push @sequenz, $zeile;	
						}
						if ($zeile =~ m/<!--sequenz_2-->/gi) {
								$marke = 0;
						}
				}

#####################################################################
######################			Ausgabe - Felder		########################
#####################################################################

	$feld = 0;
	for ($ziffer = 1;$ziffer < $tabellenzahl ;$ziffer++) {
			$ziffer = &zweistellig ($ziffer);
			$name = "tabelle_" . $ziffer;
			foreach $eintrag (@{$ziffer}) {
						($value,$bezeichnung) = split( /<>/ , $eintrag);
						@sequenz_anz =@sequenz;
						foreach $daten (@sequenz_anz) {
								$daten =~ s/zzzzz/$value/g;
								$daten =~ s/yyyyy/$feld/g;
								$daten =~ s/xxxxx/$bezeichnung/g;
						}
#						print "$value <br>";

						push @{$name}, @sequenz_anz;
						$feld++;
		}

				
#		print " Array-name : $name und Inhalt : @{$name}<br>";




#print " <br> <br>";
		}


################################################################################
#########################		SUCHMASKE ausgeben 	##############################
################################################################################

		foreach $zeile (@such_maske) {
		### Drop-Down-Felder ersetzen ###
				if ($zeile =~ m/xxxregionxxx/gi) {
							$zeile = $region;
				}
				if ($zeile =~ m/xxxlandxxx/gi) {
							$zeile = $land;
				}

		### Tabellen - Ausgabe ersetzen ###
				for ($ziffer = 1;$ziffer < $tabellenzahl ;$ziffer++) {
						$ziffer = &zweistellig ($ziffer);
						$name = "tabelle_" . $ziffer;
						$zeile =~ s/$name/@{$name}/g;
				}	
		}

print @such_maske;

################################################################################
#########################		UNTERPROGRAMME		################################
################################################################################

### UP Datenaufbereiter ###
	sub aufbereiter	{ 
			$daten =~ s/\+/ /go;
			$daten =~ s/<>/ /go;
			$daten =~ s/\%7E/ /go;
			$daten =~ s/\%0D\%0A/~/go;
			$daten =~ s/\%(..)/ pack("c", hex ($1))/ge;
			return $daten;
		}

# UP Zweistellig
	sub zweistellig	{ 
			if ( length ($_[0]) < 2 )	{
					return "0" . $_[0];
			}
			else	{
					return $_[0];
			}
	}
