#!/usr/bin/perl use strict; use DBI; use CGI; my $q = new CGI; my $ret = ""; my $netid = $q->param("netid"); my $dsn = "DBI:mysql:promem:publicdb.cs.princeton.edu"; my $dbh; my $sth; $dbh = DBI->connect($dsn, "promem", "cos333", {RaiseError=>1}); # query exchanges where user was host $query = "SELECT Guest Date Meal Type FROM Exchanges WHERE (Host=\"$netid\") AND (Type=\"Exchange\") ORDER BY Host"; $hsth = $dbh->prepare($query); $hsth->execute(); # assign fields to variables $hsth->bind_columns(\$hNetid, \$hDate, \$hMeal, \$hType); # query exchanges where user was guest $query = "SELECT Host Date Meal Type FROM Exchanges WHERE (Guest=\"$netid\") AND (Type=\"Exchange\") ORDER BY Guest"; $gsth = $dbh->prepare($query); $gsth->execute(); # assign fields to variables $gsth->bind_columns(\$gNetid, \$gDate \$gMeal, \$gType); # output name list to the browser while (true) { if ($gNetid lt $hNetid) { $unbalanced .= " $gNetid hosted you at $Club on $Date for $Meal\n"; $gsth->fetch(); $count++; } else if ($hNetid lt $gNetid) { $unbalanced .= " You hosted $hNetid from $Club on $Date for $Meal\n"; $hsth->fetch(); $count++; } else ($hNetid eq $gNetid) { $balanced .= " $gNetid hosted you at $gClub on $gDate for $gMeal\n"; $balanced .= " You hosted $hNetid from $hClub on $hDate for $hMeal\n"; $gsth->fetch(); $hsth->fetch(); } } # HTTP HEADER print "Content-type: text/html \n\n"; print "Unbalanced exchanges:\n$unbalanced"; print "\nBalanced exchanges:\n$balanced"; $dbh->disconnect();