so wie sich das liest, verwendest du im WHERE ein "=". Versuchs mal mit "LIKE".
Ich habe deinen Vorschlag mal mal angewendet, doch es funktioniert nicht.
Ich habe im Formular jetzt 006* eingegeben.
hier is nochmal mein Script:
#!/perl/bin/perl.exe
$os = "WINDOWS";
read(STDIN, $input, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $input);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORM{$name} = $value;
}
$name=$FORM{"name"};
$wert=$FORM{"wert"};
$max_rows = 1000000;
$rows = 0;
use CGI;
$cgi = new CGI;
use Win32::ODBC;
$DSN="stamm";
$db=new Win32::ODBC("DSN=stamm");
$sql_string = "SELECT * FROM Stellenplan WHERE $name LIKE '$wert'"; #Das "LIKE" war vorher "="
@FelderNamen = $db->FieldNames();
$spalten = @FelderNamen;
if(! $db->Sql($sql_string)){
@FelderNamen = $db->FieldNames(); # Feldnamen
$spalten = @FelderNamen; # Spaltenanzahl ermitteln
#Ausgabe der Daten in den Browser (Tabelle)
print $cgi->header,
$cgi->start_html('Ergebnis der SQL - Abfrage'),
$cgi->h2('Ergebnis der SQL - Abfrage'),
chop;
print "<table border cellspacing=0 target="_blank"><tr>";
print "<table border cellspacing=0 target="_blank"><tr>";
for (@FelderNamen){
print "<th>", $_, "</th>";
}
print "</tr><br>";
# Und nun den Rest der Tabelle
# FetchRow() gibt 0, wenn keine weiteren Daten anliegen
while ($db->FetchRow() and $rows < $max_rows){
print "<tr>";
undef %Daten ;
%Daten = $db->DataHash();
$rows++;
for ($i = 0; $i < $spalten; $i++){
if ($Daten{$FelderNamen[$i]} gt ''){
print "<td>", $Daten{$FelderNamen[$i]}, "</td>";
}
else{
print "<td>-frei-</td>";
}
}
print "</tr>";
}
print "</table>",
$cgi->end_html;
$db->Close() ;
}
else{
print $cgi->header,
$cgi->start_html('Fehler im SQL Statement'),
$cgi->h2('Fehler im SQL Statement'),
$cgi->p,
$db->Error();
}