#!/usr/bin/perl
##############################################################################
# Perl-Script for Searching Adress-Database (c) Klaus Schönenberg Lohmar
# schoenenberg@lohmar.org
# Searching the cd-table in Iwalewa-Database (CD-Shop+Media)
#
# Relaeses
# 2001-02-21 KS first release
#
#
require "main.lib";
require "para.lib";
require "db.lib";
&make_datum;
# Presetting
$err=0;
# read The INPUT BUFFER from .htm FORM-TAG
&read_args;
$search=$ARGS{search};
# Wenn Args gesetzt, darf der Buffer nicht ausgelesen werden,
# weil die Args aus der Uebergabe kommen und nicht aus der FORM
if ($search eq "") {
# read The INPUT BUFFER from .htm FORM-TAG
&read_buffer;
$look_key=$FORM{look_key};
$field=$FORM{field};
$sort=$FORM{sort};
$desc=$FORM{desc};
$label=$FORM{label};
$style=$FORM{style};
$jahr=$FORM{jahr};
$bild=$FORM{bild};
} else {
$field=$ARGS{field};
$key=$ARGS{key};
$key=~tr/_/ /s;
if ($field eq "interpret") {
$look_key=$key;
}
if ($field eq "label") {
$look_key="";
$label=$key;
}
$msg="S:$search F:$field K:$key ";
&write_log;
# vorbelegen
$bild="on";
}
# prepare html-Header
&print_html_header;
# prepare and open database
&open_dbi;
# prepare sql-statement
if ($look_key eq "#" ){ $look_key="afrika"; }
if (length($field) == 0) { $field = "ALL" }
if ($label eq "none") { $label ="" }
if ($style eq "none") { $style ="" }
if ($jahr eq "none") { $jahr ="" }
# Such_Optionen
if ($look_key) {$so1=" Keyword:".$look_key}else{$so1=" no Keyword"}
if ($label) {$so2=" Label:".$label}
if ($style) {$so3=" Style:".$style}
if ($jahr) {$so4=" Jahr:".$jahr}
if ($field) {$so5=" Feld:".$field}
if ($sort) {$so6=" Sort:".$sort}
if ($desc) {$so7=" Desc:".$desc}
$such_optionen=$so1.$so2.$so3.$so4.$so5.$so6.$so7." ";
if ($look_key || $label || $style || $jahr ) {
if ($look_key eq "*") {
# select all
$sql1="select * from cd";
$sql2="";
} else {
$sql1="select * from cd where (";
if ($field eq "ALL") {
# Search all columns
$sql2=" interpret like '%".$look_key."%'";
$sql2=$sql2." or titel like '%".$look_key."%'";
$sql2=$sql2." or nummer like '%".$look_key."%'";
$sql2=$sql2." or label like '%".$look_key."%'";
$sql2=$sql2." or style like '%".$look_key."%'";
} else {
# Search specific column
$sql2=$field . " like '%" . $look_key . "%'";
}
$sql2=$sql2.")";
if ($look_key eq "") {
$sql1="";
$sql2="";
}
if (length($label.$style.$jahr) >0) {
if ($sql1) {
$sql2=$sql2." and (";
} else {
$sql2="select * from cd where (";
}
if ($label ne "") { $sql2=$sql2."label like '%".$label."%'" }
if ($style ne "") { $sql2=$sql2."style like '%".$style."%'" }
if ($jahr ne "") { $sql2=$sql2."nummer like '%".$jahr ."%'" }
$sql2=$sql2.")";
}
# Stripping den ganzen Leermuell
$sql2=~tr/ / /s;
$sql2=~tr/ / /s;
}
if ($sort eq "No-Sort" || $sort eq "") {
$sql_order=" order by vertrieb";
}
else {
$sql_order=" order by " . $sort;
if ($desc eq "on") {
$sql_order=$sql_order . " desc";
}
}
# put togehter the sql-statement-parts and lowercase them
$sql="\L$sql1$sql2$sql_order\E" ;
# prepare and xcute sql
&prepare_sql_dbi;
if ($rv eq "0E0") {
$rv="0";
&print_html_no_records_found;
&print_html_feeter;
}
else {
# getting found rows from database and put them into variables
&print_result_header;
&print_result_rows;
&print_result_feeter;
&print_html_feeter;
}
# end if rows found
# write th log-file
#&write_log;
}
else {
&print_html_no_keyword;
&print_html_feeter;
}
# end if search-word given
#
# End of program
###############################################################################
###############################################################################
# and now the subroutines
#
#
# The Log file
#
sub write_log {
&make_datum;
open (LOG,">> ../LOGS/search.log") or die "Cannot write to Log File";
$log=$dat02
. " | " . $rv
. " | " . $look_key
. " | " . $sort
. " | " . $desc
. " | " . $msg
. " \n";
print LOG $log;
close LOG;
}
#
# All the HTML Stuff
#
#
# The Main Header
sub print_html_header {
print "Content-type: text/html\n\n";
print <
EOF
}
sub print_html_no_records_found {
print <
Du must min. zwei Buchstaben als Suchbegriff eingeben, um ein Ergebnis zu erhalten
/
You must give at least two letters as a keyword to get a result.
(unnit einfach wo draufhacken ohne Nachdenken)
Zurück / Back
EOF
}
sub print_result_header {
$i1=index($p_gefunden,"_");
$gefunden=substr($p_gefunden,0,$i1 - 1)." ".$rv." "
.substr($p_gefunden,$i1 + 2,55);
print "
Kein Ergebnis - keine CDs mit diesen Angaben gefunden
/
No Result - No CDs found
Zurück / Back
$gefunden Titel ($such_optionen) ";
} else {
$cdimage="
";
}
if ($vertrieb eq " ") {$vertrieb=""} # else{$vertrieb="(".$vertrieb.")"}
if (length($label) != 0) {
$lab=" Label/Vertrieb:".$label;
}
$kaufen="";
if ($vertrieb && $preis) {
$buy_text=$vertrieb.":".$nummer." - ".$titel." ".$interpret;
$buy_geld=$preis;
$kaufen="\
";
}
$csound="";
if ($sound) {
$csound="
";
}
print <
Ende der Liste / End of List
";
if ($gefunden < 5) {
print "