PDA

View Full Version : Generate a form table from an @array


NiteOwl
09-08-2006, 05:47 AM
Hello,
I need help generating a form as output from a cgi script.

Input will be an @array
This may contain any number of items, but, will always have more than 1 entry.

Output Needs to be a HTML Form with a Table containing checkboxes in
3 columns and as many rows as needed.
Odd TD Tags, if any, at the end need to be there but blank or spaced.

Example:

@exteriordata = ("Fenced Yard","Large Yard","Swimming Pool","Garden/Landscaping","Mature Trees","Sun Deck","Patio/Porch","Screened Windows/Doors");


8 entries.
That Table will need to have 3 rows with 3 columns each.
It will have 1 empty cell at the end.

The checkbox Tag needs to look like this.
<td nowrap width="33%" align="left" valign="top"><input type="checkbox" name="interior" value="Basement"><b>Basement</b></td>

Thanks for looking!
:thumbsup:

NiteOwl
09-08-2006, 07:00 AM
This is close but i need to define the table tags like i showed


print $cgiobject->
checkbox_group(-name=>'Interior Features',
-values=>[@interiordata],
-linebreak=>'false',
-columns=>3);



I will also need to table border, width, VAlign, align ...
This is the table:




<form action="../cgi-bin/RE/features.cgi" method="post" enctype="multipart/form-data">


<center><table width="300" border="2" cellspacing="3" cellpadding="4" bordercolor="#004080" bgcolor="#4b7eb0">
<tr>
<!-- Row 1 Column 1 -->
<td bgcolor="#a2bcd7">MLS #:</td><td bgcolor="#a2bcd7"><input type="text" name="listnum" length="10" value=""></td>
</tr>
<tr>
<td bgcolor="#a2bcd7">Type:</td><td bgcolor="#a2bcd7">
<select name="listtype" size="1" class="formsubmf">
<option Value="" selected>Please Choose One
<option Value="single">Single Family
<option Value="modular">Modular
<option Value="mobile">Mobile
<option Value="rland">Residential Land
<option Value="cland">Commerical
</select></td></tr>
</td>
</tr>
</table></center>
<br>









<!--
###########################################################
# INTERIOR
###########################################################
-->

<center><table width="600" border="2" cellspacing="3" cellpadding="4" bordercolor="#004080" nowrap bgcolor="#4b7eb0">
<tr>
<!-- Row 1 Column 1 -->
<td >
<center><table width="600" border="0" cellspacing="3" cellpadding="4" bordercolor="#004080" nowrap bgcolor="#4b7eb0">
<tr>
<!-- Row 1 Column 1 -->
<td >


<font size="+1" color="#ffffff"></b>Interior Features:<br></font>
<div style="margin-top:12;">

<center><table width="100%" border="3" cellspacing="1" cellpadding="0" bordercolor="#004080" align="left" nowrap bgcolor="#a2bcd7">

<tr>
<td nowrap width="33%" align="left" valign="top"><input type="checkbox" name="interior" value="Basement"><b>Basement</b></td>
<td nowrap width="33%" align="left" valign="top"><input type="checkbox" name="interior" value="Fireplace"><b>Fireplace</b></td>
<td nowrap width="33%" align="left" valign="top"><input type="checkbox" name="interior" value="Whirlpool In Bath"><b>Whirlpool In Bath</b></td>
</tr>
<tr>
<td nowrap align="left" valign="top"><input type="checkbox" name="interior" value="Laundry Room"><b>Laundry Room</b></td>
<td nowrap align="left" valign="top"><input type="checkbox" name="interior" value="Dishwasher"><b>Dishwasher</b></td>
<td nowrap align="left" valign="top"><input type="checkbox" name="interior" value="Swimming Pool"><b>Swimming Pool</b></td>
</tr>
<tr>
<td nowrap align="left" valign="top"><input type="checkbox" name="interior" value="Den/Office"><b>Den/Office</b></td>
<td nowrap align="left" valign="top"><input type="checkbox" name="interior" value="Hardwood Floors"><b>Hardwood Floors</b></td>
<td nowrap align="left" valign="top"><input type="checkbox" name="interior" value="Spa/Hot Tub"><b>Spa/Hot Tub</b></td>
</tr>
<tr>
<td nowrap align="left" valign="top"><input type="checkbox" name="interior" value="Dining Room"><b>Dining Room</b></td>
<td nowrap align="left" valign="top"><input type="checkbox" name="interior" value="Horse Facilities"><b>Horse Facilities</b></td>
<td nowrap align="left" valign="top"><input type="checkbox" name="interior" value="Garage Door Opener"><b>Garage Door Opener</b></td>
</tr>
<tr>
<td nowrap align="left" valign="top"><input type="checkbox" name="interior" value="Tiled Bathrooms"><b>Tiled Bathrooms</b></td>
<td nowrap align="left" valign="top"><input type="checkbox" name="interior" value="Security System"><b>Security System</b></td>
<td nowrap align="left" valign="top"><input type="checkbox" name="interior" value="Ample Storage"><b>Ample Storage</b></td>
</tr>
<tr>
<td nowrap align="left" valign="top"><input type="checkbox" name="interior" value="Family Room"><b>Family Room</b></td>
<td nowrap align="left" valign="top"><input type="checkbox" name="interior" value="Central Air"><b>Central Air</b></td>
<td nowrap align="left" valign="top"><input type="checkbox" name="interior" value="Large BR Closets"><b>Large BR Closets</b></td>
</tr>
<tr>
<td nowrap align="left" valign="top"><input type="checkbox" name="interior" value="Kitchen island"><b>Kitchen island</b></td>
<td nowrap align="left" valign="top"><input type="checkbox" name="interior" value="Walk-In Closet"><b>Walk-In Closet</b></td>
<td nowrap align="left" valign="top"><input type="checkbox" name="interior" value="Disability Features"><b>Disability Features</b></td>
</tr>

</table></center>


</td>
</tr>
<tr>
<td>


<!--
lower table
-->

<center><table width="100%" border="3" cellspacing="1" cellpadding="0" bordercolor="#004080" align="left" nowrap bgcolor="#a2bcd7">
<tr>
<td colspan=3 nowrap align="left" valign="top" bgcolor="#4b7eb0"><font size="+1" color="#ffffff"></b>Other Interior Features:<br></font>
</td>
</tr>
<tr>
<td nowrap align="left" valign="top">&nbsp;<b>1:</b>&nbsp;<input type="text" name="int_other" value="" maxlength="20" size="20"></td>
<td nowrap align="left" valign="top">&nbsp;<b>2:</b>&nbsp;<input type="text" name="int_other" value="" maxlength="20" size="20"></td>
<td nowrap align="left" valign="top">&nbsp;<b>3:</b>&nbsp;<input type="text" name="int_other" value="" maxlength="20" size="20"></td>
</tr>
</table>

</td>
</tr>
</table></center>
</td>
</tr>
</table></center>












<br>
<p>












<!--
###########################################################
# Exterior Features:
###########################################################
-->

<center><table width="600" border="2" cellspacing="3" cellpadding="4" bordercolor="#004080" nowrap bgcolor="#4b7eb0">
<tr>
<!-- Row 1 Column 1 -->
<td >
<center><table width="600" border="0" cellspacing="3" cellpadding="4" bordercolor="#004080" nowrap bgcolor="#4b7eb0">
<tr>
<!-- Row 1 Column 1 -->
<td >


<font size="+1" color="#ffffff"></b>Exterior Features:<br></font>
<div style="margin-top:12;">

<center><table width="100%" border="3" cellspacing="1" cellpadding="0" bordercolor="#004080" align="left" nowrap bgcolor="#a2bcd7">
<tr>
<td nowrap width="33%" align="left" valign="top"><input type="checkbox" name="exterior" value="Fenced Yard"><b>Fenced Yard</b></td>
<td nowrap width="33%" align="left" valign="top"><input type="checkbox" name="exterior" value="Large Yard"><b>Large Yard</b></td>
<td nowrap width="33%" align="left" valign="top"><input type="checkbox" name="exterior" value="Swimming Pool"><b>Swimming Pool</b></td>
</tr>
<tr>
<td nowrap align="left" valign="top"><input type="checkbox" name="exterior" value="Garden/Landscaping"><b>Garden/Landscaping</b></td>
<td nowrap align="left" valign="top"><input type="checkbox" name="exterior" value="Mature Trees"><b>Mature Trees</b></td>
<td nowrap align="left" valign="top"><input type="checkbox" name="exterior" value="Sun Deck"><b>Sun Deck</b></td>
</tr>
<tr>
<td nowrap align="left" valign="top"><input type="checkbox" name="exterior" value="Patio/Porch"><b>Patio/Porch</b></td>
<td nowrap align="left" valign="top"><input type="checkbox" name="exterior" value="Screened Windows/Doors"><b>Screened Windows/Doors</b></td>
<td nowrap align="left" valign="top"><input type="checkbox" name="exterior" value="GreenHouse"><b>GreenHouse</b></td>
</tr>

</table></center>


</td>
</tr>
<tr>
<td>


<!--
lower table
-->

<center><table width="100%" border="3" cellspacing="1" cellpadding="0" bordercolor="#004080" align="left" nowrap bgcolor="#a2bcd7">
<tr>
<td colspan=3 nowrap align="left" valign="top" bgcolor="#4b7eb0"><font size="+1" color="#ffffff"></b>Other Exterior Features:<br></font>
</td>
</tr>
<tr>
<td nowrap align="left" valign="top">&nbsp;<b>1:</b>&nbsp;<input type="text" name="ex_other" value="" maxlength="20" size="20"></td>
<td nowrap align="left" valign="top">&nbsp;<b>2:</b>&nbsp;<input type="text" name="ex_other" value="" maxlength="20" size="20"></td>
<td nowrap align="left" valign="top">&nbsp;<b>3:</b>&nbsp;<input type="text" name="ex_other" value="" maxlength="20" size="20"></td>
</tr>
</table>

</td>
</tr>
</table></center>
</td>
</tr>
</table></center>


<br><p>





<center><input type="submit" value="Save Features"></center>


</form>



:)

NiteOwl
09-09-2006, 06:11 AM
This is a snipplet of what i have now.


@exteriordata = ("Large Yard","Swimming Pool","Garden/Landscaping","Mature Trees","Sun Deck","Patio/Porch","Screened Windows/Doors","GreenHouse");

print
table({border => 3, cellspacing => 1, cellpadding => 2,-BGCOLOR=> "#a2bcd7", -width=>'100%', -align=>"center",- bordercolor=>'#004080'},
td(checkbox_group(-name => 'interior',
-values => [@exteriordata],
-columns=>3)));



Not exactly what i want.
This generates a Table inside of a Table and i loose my border lines around the indivual cells. If i have to accept it i will.

But, Is there a way to have the TD width=33%


This is the full code that i have.

#!/perl/bin/perl

use CGI qw(:standard);
use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
print "Content-type: text/html\n\n";

@exteriordata = ("Large Yard","Swimming Pool","Garden/Landscaping","Mature Trees","Sun Deck","Patio/Porch","Screened Windows/Doors","GreenHouse");

print start_html(-title=>"Features",
-BGCOLOR=>"white");




print qq~
<form action="../cgi-bin/RE/features.cgi" method="post" enctype="multipart/form-data">
<center><table width="600" border="2" cellspacing="3" cellpadding="4" bordercolor="#004080" nowrap bgcolor="#4b7eb0">
<tr>
<!-- Row 1 Column 1 -->
<td >

<font size="+1" color="#ffffff"></b>Interior Features:<br></font>
<div style="margin-top:12;">
~;



print
table({border => 3, cellspacing => 1, cellpadding => 2,-BGCOLOR=> "#a2bcd7", -width=>'100%', -align=>"center",- bordercolor=>'#004080'},
td(checkbox_group(-name => 'interior',
-values => [@exteriordata],
-columns=>3)));


print qq~
</td>
</tr>
<tr>
<td>


<!--
lower table
-->

<center><table width="100%" border="3" cellspacing="1" cellpadding="0" bordercolor="#004080" align="left" nowrap bgcolor="#a2bcd7">
<tr>
<td colspan=3 nowrap align="left" valign="top" bgcolor="#4b7eb0"><font size="+1" color="#ffffff"></b>Other Interior Features:<br></font>
</td>
</tr>
<tr>
<td nowrap align="left" valign="top">&nbsp;<b>1:</b>&nbsp;<input type="text" name="int_other" value="" maxlength="20" size="20"></td>
<td nowrap align="left" valign="top">&nbsp;<b>2:</b>&nbsp;<input type="text" name="int_other" value="" maxlength="20" size="20"></td>
<td nowrap align="left" valign="top">&nbsp;<b>3:</b>&nbsp;<input type="text" name="int_other" value="" maxlength="20" size="20"></td>
</tr>
</table>

</td>
</tr>
</table></center>
</td>
</tr>
</table></center>
<br><p>

<center><input type="submit" value="Save Features"></center>
</form>

~;

print end_html;




Thanks for looking..
:cool:

KevinADC
09-09-2006, 09:41 PM
just use a style-sheet with your tabe code. I hate using the CGI module to generate table code myself. That is one aspect of the CGI module that takes a relatively easy task and makes it difficult.

NiteOwl
09-10-2006, 10:57 PM
Exactly, Creating a table should be easy. This is the only one that has givien me a problem. I simply want 3 columns per row, as many rows as it takes, and the odd TD's at the end to be blank.

Right now, this will have to do, unless, someone can help.

How would i use a style sheet to make each td 33%?
CGI mod is generating those TD's.

Thanks Kevin ...
:thumbsup:

rwedge
09-11-2006, 02:00 AM
Here is an example of handling a three column table:#!/usr/bin/perl

use POSIX;

my @exteriordata = ("Large Yard","Swimming Pool","Garden/Landscaping","Mature Trees","Sun Deck","Patio/Porch","Screened Windows/Doors","GreenHouse");
my $tnum = @exteriordata; # total number of data cells
my $dnum = floor($tnum / 3); # number of full rows
my $rownum = ($dnum * 3); # number of cells in full rows
my $rnum = ($tnum % 3); # catch uncomplete ending row
my $cnum = "0";

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

print qq~
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Features</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
/*<![CDATA[*/
body { background: #ffffff; color: #000000;}
a:link { color: #ff0000; }
a:visited { color: #0000cc; }
a:active { color: #ffff00; }
/*]]>*/
</style>
</head>
<body>
<br />
<table border="3" width="100%">
~;

while ($rownum > $cnum) {
print qq~
<tr>
<td width="33%"> $exteriordata[$cnum] </td><td width="34%"> $exteriordata[$cnum + 1] </td><td width="33%"> $exteriordata[$cnum + 2] </td>
</tr>
~;
$cnum = $cnum + 3;
}
if ($rnum == 1) {
print qq~
<tr>
<td> $exteriordata[$cnum] </td><td> </td><td> </td>
</tr>
~;
}
elsif ($rnum == 2) {
print qq~
<tr>
<td> $exteriordata[$cnum ] </td><td> $exteriordata[$cnum + 1] </td><td> </td>
</tr>
~;
}
print qq~
</table><br />
</body>
</html>

~;

NiteOwl
09-12-2006, 05:12 AM
wtg rwedge,

Thank You,
exactly what i needed.

:thumbsup: