Hi all,

I want to modify the occupation table for a holiday house. This is my (quite naive) 
approach:

<h1>Belegung 2004</h1> 
<table>
    <tr>
        <th></th> <th>1</th> <th></th> <th></th> <th></th> <th>5</th> <th></th> 
<th></th> <th></th> <th></th> <th>10</th> <th></th> <th></th> <th></th> <th></th> 
<th>15</th> <th></th> <th></th> <th></th> <th></th> <th>20</th> <th></th> <th></th> 
<th></th> <th></th> <th>25</th> <th></th> <th></th> <th></th> <th></th> <th>30</th> 
<th></th>
    </tr>
<tr><th>Januar</th><td name="Januar_1" class="frei">&nbsp;</td><td name="Januar_2" 
class="belegt">&nbsp;</td><td name="Januar_3" class="belegt">&nbsp;</td><td 
name="Januar_4" class="frei">&nbsp;</td><td name="Januar_5" 
class="frei">&nbsp;</td><td name="Januar_6" class="frei">&nbsp;</td>

Table cells of class "belegt" appear in red, class "frei" appears in green. Now I have 
an HTML form like this:

<form action="../cgi-bin/beleg_form.pl" method="post" accept-charset="iso-8859-1">
<table>
    <tr>
        <th></th> <th>1</th> <th></th> <th></th> <th></th> <th>5</th> <th></th> 
<th></th> <th></th> <th></th> <th>10</th> <th></th> <th></th> <th></th> <th></th> 
<th>15</th> <th></th> <th></th> <th></th> <th></th> <th>20</th> <th></th> <th></th> 
<th></th> <th></th> <th>25</th> <th></th> <th></th> <th></th> <th></th> <th>30</th> 
<th></th>
    </tr>
<!-- Januar -->
<tr><th>Januar</th>
<td class="zentral"><input type="checkbox" name="Januar_1" /></td>
<td class="zentral"><input type="checkbox" name="Januar_2" /></td>
<td class="zentral"><input type="checkbox" name="Januar_3" /></td>
<td class="zentral"><input type="checkbox" name="Januar_4" /></td>
<td class="zentral"><input type="checkbox" name="Januar_5" /></td>
<td class="zentral"><input type="checkbox" name="Januar_6" /></td>
[...]

This is sent to the following script:

#!/usr/bin/perl -w

# beleg_form.pl

use strict;
use CGI;
use CGI::Carp qw(fatalsToBrowser);

# configuration:

my $q = new CGI;
my %date_hash;

for ($q->param) {
    $date_hash{$_} = $q->param($_);
}

open PLAN, "../deutsch/belegung.html" or die "Cannot open the belegung.html: $!";
my $beleg_plan = join '', <PLAN>;
close PLAN;
    for (keys %date_hash) {
        if ($date_hash{$_} eq "on") {
            $beleg_plan = s#(name="$_" class=").+?"#${1}belegt"#;
        }
        else {
            $beleg_plan = s#(name="$_" class=").+?"#${1}frei"#;
        }
    }
open PLAN, "> ../belegung.html";
print PLAN $beleg_plan;
close PLAN;

The idea is that the entries from the form are read into a hash which then runs over 
the existing "belegung.html" and changes the table cells accordingly.

Now the tricky thing: As long as there was an error in my script, it was displayed in 
my browser (thanks to CGI::Carp). But as soon as I eliminated the obvious errors, I 
get an Internal Server Error (testing on my ISP's linux web server and on my local OS 
X box, both running Apache).

Can anybody see my mistake here?

Thanks,

Jan
-- 
These are my principles and if you don't like them... well, I have others. - Groucho 
Marx

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to