#!/usr/bin/perl -w # Russell Hyland # WebHortLine SearchContacts.cgi # # Prompt for search string, then get a list of ContactIDs of Contact records that contain the searchstring in # one or more fields. Use the list to display the records. use strict; use warnings; use CGI::Carp qw(); use CGI::Pretty; use CGI qw(:standard :cgi-lib -debug fatalsToBrowser); use DBD::mysql; use DBI; my $cgi = new CGI; my @css = (Link({-rel=>'stylesheet',-type=>'text/css',-src=>'Styles.css',-media=>'screen'})); my ($dbh, $selectstr, $sth, @row); my $SrchStr; our @ContactIDList; our $CurIDPtr = 0; my $County = $cgi->cookie('MG_HortLine'); if (!$County) { print redirect(-location=>"http://hortline.rbhyland.org/Login.cgi"); } print $cgi->header(); print start_html(-title =>'Search Contacts', -style =>'Styles.css', -script=>{-language=>'JAVASCRIPT', -src=>'Scripts.js'}); print "MG logo"; print "

 Penn State Consumer

 Horticultural Help Line


"; print h2('Search Contacts'),hr; if (!param('SearchFld') && !param('Next') && !param('Prev')) { print start_form, "", textfield(-name=>'SearchFld',-value=>"",-size=>30,-maxlength=>50,-id=>'SearchFld', -class=>'DataIn'), br,br,submit, end_form; } elsif (param('Next')) { $CurIDPtr += 1; print '[',$CurIDPtr,'][',$ContactIDList[$CurIDPtr],']'; DisplayRec(); } elsif (param('Prev')) { $CurIDPtr = $CurIDPtr - 1; print Dump; print '[',$CurIDPtr,'][',$ContactIDList[$CurIDPtr],']'; DisplayRec(); } else { getIDs(); DisplayRec(); } print end_html; #### sub DisplayRec { $dbh = DBI->connect("DBI:mysql:database=hortline;host=mysql.hortline.rbhyland.org","rbhyland","dh_R95w") or &dienice("Database logon failed: $DBI::errstr\n"); $selectstr = "SELECT * ". "FROM Contacts ". "WHERE ContactID = ?; "; $sth = $dbh->prepare("$selectstr"); $sth->execute("$main::ContactIDList[$main::CurIDPtr]") or &dbdie; @row = $sth->fetchrow_array(); &dienice("Data fetching error: $DBI::errstr\n") if $DBI::err; my $FirstName = $row[2]; my $LastName = $row[3]; my $Address = $row[4]; my $City = $row[5]; my $State = $row[6]; my $Zip = $row[7]; my $Muni = $row[8]; my $ClientType = $row[9]; my $Phone = $row[10]; my $EmailName = $row[11]; my $ContactMethodPhone = $row[12]; my $ContactMethodWalkIn = $row[13]; my $ContactMethodEmail = $row[14]; my $ContactMethodEvent = $row[15]; my $Answer = $row[16]; my $Question = $row[17]; my $MasterGardener = $row[18]; my $CallDate = $row[19]; my $InfoProvidedVerbally = $row[20]; my $InfoProvidedFaxed = $row[21]; my $InfoProvidedMailed = $row[22]; my $InfoProvidedHandout = $row[23]; my $InfoProvidedWebsite = $row[24]; my $SampleStatusDue = $row[25]; my $SampleStatusReceived = $row[26]; my $SampleStatusSentToPSU = $row[27]; my $CallCompleteDate = $row[28]; my $CallBackDate = $row[29]; my $MGCallBack = $row[30]; my $FactSheets = $row[31]; my $Topic = $row[32]; print "", textfield(-name=>'FirstNameFld',-value=>$FirstName,-size=>50,-maxlength=>50, -id=>'FirstNameFld', -readonly=>'readonly', -class=>'DataIn'), # br, # "", textfield(-name=>'LastNameFld',-value=>$LastName, -size=>50,-maxlength=>50,-id=>'LastNameFld', -readonly=>'readonly', -class=>'DataIn2'), br, "", textfield(-name=>'AddressFld',-value=>$Address, -size=>50,-maxlength=>50,-id=>'AddressFld', -readonly=>'readonly', -class=>'DataIn'), # br, # "", textfield(-name=>'CityFld',-value=>$City, -size=>50,-maxlength=>50,-id=>'CityFld', -readonly=>'readonly', -class=>'DataIn2'), # br, # "", textfield(-name=>'StateFld',-value=>$State, -size=>2,-maxlength=>2,-id=>'StateFld', -readonly=>'readonly', -class=>'DataIn3'), # br, # "", textfield(-name=>'ZipFld',-value=>$Zip, -size=>10,-maxlength=>10,-id=>'ZipFld', -readonly=>'readonly', -class=>'DataIn4'), br, "", textfield(-name=>'MuniFld',-value=>$Muni, -size=>50,-maxlength=>50,-id=>'MuniFld', -readonly=>'readonly', -class=>'DataIn'), br, "", textfield(-name=>'EmailFld',-value=>$EmailName, -size=>50,-maxlength=>50,-id=>'EmailFld', -readonly=>'readonly', -class=>'DataIn'), br, "", textfield(-name=>'PhoneFld',-value=>$Phone, -size=>20,-maxlength=>20,-id=>'PhoneFld', -readonly=>'readonly', -class=>'DataIn'), br, "", textfield(-name=>'ClientTypeFld',-value=>$ClientType, -size=>20,-maxlength=>20,-id=>'ClientTypeFld', -readonly=>'readonly', -class=>'DataIn'), br, "", textfield(-name=>'CallDateFld',-value=>$CallDate,-size=>10,-maxlength=>10,-id=>'CallDateFld', -class=>'DataIn', -readonly=>'readonly'), br, "", textfield(-name=>'CallBackDateFld',-value=>$CallBackDate,-size=>10,-maxlength=>10, -id=>'CallBackDateFld',-class=>'DataIn', -readonly=>'readonly'), br, "", textfield(-name=>'CallCompleteDateFld',-value=>$CallCompleteDate,-size=>10,-maxlength=>10, -id=>'CallCompleteDateFld',-class=>'DataIn', -readonly=>'readonly'), br, "", checkbox(-name=>'SampleStatusDue',-checked=>$SampleStatusDue?1:0, -value=>$SampleStatusDue,-label=>'Waiting/Client', -readonly=>'readonly'), ' ', checkbox(-name=>'SampleStatusReceived',-checked=>$SampleStatusReceived?1:0, -value=>$SampleStatusReceived,-label=>'Received', -readonly=>'readonly'), ' ', checkbox(-name=>'SampleStatusSentToPSU',-checked=>$SampleStatusSentToPSU?1:0, -value=>$SampleStatusSentToPSU,-label=>'Sent To PSU', -readonly=>'readonly'), br, "", textarea(-name=>'QuestionFld',-value=>$Question,-rows=>10,-columns=>50,-class=>'DataIn', -readonly=>'readonly'), br,br,br,br,br,br,br,br,br, "", textarea(-name=>'AnswerFld',-value=>$Answer,-rows=>10,-columns=>50,-class=>'DataIn', -readonly=>'readonly'), br,br,br,br,br,br,br,br,br, "", checkbox(-name=>'ContactMethodPhone',-checked=>$ContactMethodPhone?1:0, -value=>'1',-label=>'Phone', -readonly=>'readonly'), ' ', checkbox(-name=>'ContactMethodWalkIn',-checked=>$ContactMethodWalkIn?1:0, -value=>'1',-label=>'Walk In', -readonly=>'readonly'), ' ', checkbox(-name=>'ContactMethodEmail',-checked=>$ContactMethodEmail?1:0, -value=>'1',-label=>'Email', -readonly=>'readonly'), ' ', checkbox(-name=>'ContactMethodEvent',-checked=>$ContactMethodEvent?1:0, -value=>'1',-label=>'Event', -readonly=>'readonly'), br, "", checkbox(-name=>'IPVerbally',-checked=>$InfoProvidedVerbally?1:0, -value=>'1',-label=>'Verbally', -readonly=>'readonly'), " ", checkbox(-name=>'IPFaxed',-checked=>$InfoProvidedFaxed?1:0, -value=>'1',-label=>'Faxed', -readonly=>'readonly'), " ", checkbox(-name=>'IPMailed',-checked=>$InfoProvidedMailed?1:0, -value=>'1',-label=>'Mailed', -readonly=>'readonly'), " ", checkbox(-name=>'IPHandout',-checked=>$InfoProvidedHandout?1:0, -value=>'1',-label=>'Handout', -readonly=>'readonly'), " ", checkbox(-name=>'IPWebsite',-checked=>$InfoProvidedWebsite?1:0, -value=>'1',-label=>'Website', -readonly=>'readonly'), br, '', textfield(-name=>'MGFld',-value=>$MasterGardener,-size=>30,-maxlength=>50,-id=>'MGFld', -class=>'DataIn', -readonly=>'readonly'), br, '', textfield(-name=>'CallBackMGFld',-value=>$MGCallBack,-size=>30,-maxlength=>50,-id=>'CallBackMGFld', -class=>'DataIn', -readonly=>'readonly'), br, "", textfield(-name=>'FactSheetsFld',-value=>$FactSheets,-size=>2,-maxlength=>2,-id=>'FactSheetsFld', -class=>'DataIn', -readonly=>'readonly'), br, "", textfield(-name=>'TopicFld',-value=>$Topic,-size=>20,-maxlength=>30,-id=>'TopicFld', -class=>'DataIn', -readonly=>'readonly'); print start_form(-method=>"POST", -name=>"NextForm", -id=>"NextForm", -action=>"http://www.hortline.rbhyland.org/SearchContacts.cgi"); print br,submit(-name=>'Next',-value=>'Next'); print br,submit(-name=>'Prev',-value=>'Prev'); print end_form; } sub getIDs { $SrchStr = param('SearchFld'); $dbh = DBI->connect("DBI:mysql:database=hortline;host=mysql.hortline.rbhyland.org","rbhyland","dh_R95w") or &dienice("Database logon failed: $DBI::errstr\n"); $selectstr = "SELECT * ". "FROM Contacts ". "WHERE County = ?; "; $sth = $dbh->prepare("$selectstr"); $sth->execute($County); while ( @row = $sth->fetchrow_array() ) { my $row = "@row"; if (index(uc($row),uc($SrchStr)) >=0) { push(@ContactIDList, $row[0]); } } warn "Data fetching terminated early by error: $DBI::errstr\n" if $DBI::err; print "@ContactIDList",br; } sub dienice { my ($msg) = @_; print "$msg"; exit; } sub dbdie { my ($errmsg) = "$DBI::errstr
"; &dienice($errmsg); }