diff scripts/pjx_dynselect.pl @ 0:477258d09353 boosterpack

[svn r1] initial import
author robert
date Sun, 30 Aug 2009 02:19:26 -0400
parents
children
line wrap: on
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/scripts/pjx_dynselect.pl	Sun Aug 30 02:19:26 2009 -0400
     1.3 @@ -0,0 +1,130 @@
     1.4 +#!C:/strawberry/perl/bin/perl.exe
     1.5 +
     1.6 +# dynamic select boxes, using a db
     1.7 +
     1.8 +use strict;
     1.9 +use CGI::Ajax;
    1.10 +use CGI;
    1.11 +use DBI;
    1.12 +
    1.13 +my $q = new CGI;
    1.14 +
    1.15 +### phone book database
    1.16 +# CREATE TABLE `phonebook` (
    1.17 +#  `login` varchar(10) NOT NULL,
    1.18 +#  `fullname` varchar(200) NOT NULL,
    1.19 +#  `areacode` int(10) unsigned NOT NULL default '123',
    1.20 +#  `phone` varchar(7) NOT NULL
    1.21 +# ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Users and phone numbers';
    1.22 +#
    1.23 +my $exported_fx = sub {
    1.24 +	my $searchterm = shift;
    1.25 +	my $sql = qq< select login from phonebook where login like ? or fullname like ? >;
    1.26 +	my $dbh = DBI->connect('dbi:mysql:test:localhost','guestuser','guestp4ss');	
    1.27 +	my $sth = $dbh->prepare( $sql );
    1.28 +	$sth->execute( $searchterm . '%', $searchterm . '%' );
    1.29 +
    1.30 +	# start off the div contents with select init
    1.31 +	my $html = qq!<select name="users" id="users" style="width:440px;"
    1.32 +		onClick="details( ['users'],['ddiv'] ); return true;">\n!;
    1.33 +
    1.34 +
    1.35 +	my $firstrow = $sth->fetch();
    1.36 +	if ( defined $firstrow ) {
    1.37 +		$html .= qq!<option selected>! . $firstrow->[0] . qq!</option>\n!;
    1.38 +		
    1.39 +		# dot on each option from the db
    1.40 +		while ( my $row = $sth->fetch() ) {
    1.41 +			# $row->[0] will contain the login name
    1.42 +			$html .= qq!<option>! . $row->[0] . qq!</option>\n!;
    1.43 +		}
    1.44 +
    1.45 +	}
    1.46 +	# close off the select and return
    1.47 +	$html .= qq!</select>\n!;
    1.48 +
    1.49 +	return($html);
    1.50 +};
    1.51 +
    1.52 +my $get_details = sub {
    1.53 +	my $login = shift;
    1.54 +	my $sql = qq< select * from phonebook where login = ? >;
    1.55 +	my $dbh = DBI->connect('dbi:mysql:test:localhost','guestuser','guestp4ss');	
    1.56 +	my $sth = $dbh->prepare( $sql );
    1.57 +	$sth->execute( $login );
    1.58 +
    1.59 +	my $html = "";
    1.60 +
    1.61 +	my $row = $sth->fetch();
    1.62 +	if ( defined $row ) {
    1.63 +		$html .= "Login: " . $row->[0] . "<br>";
    1.64 +		$html .= "Full Name: " . $row->[1] . "<br>";
    1.65 +		$html .= "Area Code: " . $row->[2] . "<br>";
    1.66 +		$html .= "Phone: " . $row->[3] . "<br>";
    1.67 +	} else {
    1.68 +		$html .= "<b>No Such User $login</b>\n";
    1.69 +	}
    1.70 +	return($html);
    1.71 +};
    1.72 +
    1.73 +
    1.74 +my $Show_Form = sub {
    1.75 +  my $html = "";
    1.76 +  $html .= <<EOT;
    1.77 +<HTML>
    1.78 +<HEAD><title>CGI::Ajax Example</title>
    1.79 +</HEAD>
    1.80 +<BODY>
    1.81 +  Who are you searching for?<br>
    1.82 +	Start typing and matches will display in the select box.<br>
    1.83 +	Selecting a match will give you details.&nbsp;
    1.84 +	<br>
    1.85 +	<form>
    1.86 +  <input type="text" name="searchterm" id="searchterm" size="16"
    1.87 +	onkeyup="search( ['searchterm'], ['rdiv'] ); return true;"><br>
    1.88 +
    1.89 +EOT
    1.90 +
    1.91 +	$html .= dump_table();
    1.92 +
    1.93 +	$html .= <<EOT;
    1.94 +	<div id="rdiv" style="border: 1px solid black; width: 440px;
    1.95 +		height: 80px; overflow: auto"></div>
    1.96 +	<br>
    1.97 +	<div id="ddiv" style="border: 1px solid black; width: 440px;
    1.98 +		height: 80px; overflow: auto"></div>
    1.99 +
   1.100 +	<br><a href="pjx_dynselect.txt">Show Source</a><br>
   1.101 +	</form>
   1.102 +</BODY>
   1.103 +</HTML>
   1.104 +EOT
   1.105 +  return $html;
   1.106 +};
   1.107 +
   1.108 +sub dump_table {
   1.109 +	my $sql = qq< select login from phonebook >;
   1.110 +	my $dbh = DBI->connect('dbi:mysql:test:localhost','guestuser','guestp4ss');	
   1.111 +	my $sth = $dbh->prepare( $sql );
   1.112 +	$sth->execute();
   1.113 +
   1.114 +	my $html = "<table><tr><th>Current Logins in DB</th></tr>";
   1.115 +
   1.116 +	while ( my $row = $sth->fetch() ) {
   1.117 +		$html .= "<tr><td>" . $row->[0] . "</td></tr>";
   1.118 +	}
   1.119 +
   1.120 +	$html .= "</table>";
   1.121 +	return($html);
   1.122 +}
   1.123 +
   1.124 +my $pjx = CGI::Ajax->new(
   1.125 +													search  => $exported_fx,
   1.126 +													details => $get_details
   1.127 +												);
   1.128 +$pjx->JSDEBUG(1);
   1.129 +$pjx->DEBUG(1);
   1.130 +
   1.131 +# not show the html, which will include the embedded javascript code
   1.132 +# to handle the ajax interaction
   1.133 +print $pjx->build_html($q,$Show_Form); # this outputs the html for the page