Formular aus DB füllen -- Use of uninitialized value ..
Heidi
- perl
Hallo Zusammen,
ich bin Perl-Neuling und habe folgendes Problem:
Ich habe probeweise ein Formualrfeld erzeugt und möchte diesesmit Daten aus einer Tabelle füllen.
Der 1. Tabelleneintrag wird mir im DropDown-Feld dargestellt.
Für jeden weiteren Tabelleneintrag erhalte ich folgende Fehlermeldung
'Use of uninitialized value in concatenation (.) or string at ./test.pl line 67.'
und in meinem DropDown-Feld erscheint pro weiterem Tabelleneintrag eine 'leerer WErt'.
Dies ist Zeile 67:
print "<option value=$zaehler> $typ[$zaehler]";
Die Code um Zeile 67:
print "<FORM name=Formular1>";
print "<FONT size=3>Testauswahlfeld:</FONT>";
print "<SELECT>";
my $zaehler=0;
while (my @test=$sth-> fetchrow_array())
{
print "<option value=$zaehler> $test[$zaehler]";
$zaehler+=1;
}
print "</option>";
print "</select>";
print "</form>";
Die bereits im Forum vorhandenen Diskussionen zu meiner Fehlermeldung,
konnten mir leider nichtweiterhelfen,
daher hoffe ich hier auf Tipps.
Danke!
Heidi
und in meinem DropDown-Feld erscheint pro weiterem Tabelleneintrag eine 'leerer WErt'.
Dies ist Zeile 67:
print "<option value=$zaehler> $typ[$zaehler]";Die Code um Zeile 67:
print "<FORM name=Formular1>";
print "<FONT size=3>Testauswahlfeld:</FONT>";
print "<SELECT>";my $zaehler=0;
while (my @test=$sth-> fetchrow_array())
{
print "<option value=$zaehler> $test[$zaehler]";
$zaehler+=1;
}
Dir ist klar was du da machst?
scheint mir nicht so. wie wär's, wenn du dir mal die Werte ausgibst, mit denen du da arbeitest?
use Data::Dumper;
my $zaehler=0;
while (my @test=$sth-> fetchrow_array())
{
print "Zähler: $zaehler - Test=". Dumper @test;
print "<option value=$zaehler> $test[$zaehler]";
$zaehler+=1;
das kan man vereinfachen:
$zaehler++;
}
Struppi.
Danke, für die Antwort.
War wirklich etwas seltsam.
So funktionierts jetzt:
print "<FORM name=Formular1>";
print "<FONT size=3>Testauswahlfeld:</FONT>";
print "<SELECT>";
my $zaehler=0;
while (my $test=$sth-> fetchrow_array())
{
print "<option value=$zaehler> $test";
$zaehler+=1;
}
Hi,
my $zaehler=0;
while (my @test=$sth-> fetchrow_array())
{
print "<option value=$zaehler> $test[$zaehler]";
$zaehler+=1;
}
fetchrow_array liefert dir ein Array mit allen Werten eines bestimmten Datensatzes. Du darfst also nicht weiterzählen, sondern musst jedes Mal das gleiche Element nehmen
while (@test=$sth->fetchrow_array(){
print "<option value='$zaehler'>$test[0]</option>";
#Anführungszeichen bei value= nicht vergessen
#$test[0] gibt dir das erste Feld zurück
$zaehler++; #Siehe perldoc perlop
}
Du kannst auch anstatt fetchrow_array auch fetchrow_hashref verwenden, das ermöglicht dir den Zugriff auf die Felder über deren Namen:
while ($haschref=$sth->fetchrow_hashref(){
print "<option value='$zaehler'>$haschref->{'namedesfeldes'}</option>";
$zaehler++; #Siehe perldoc perlop
}
HTH
wunderwarzenschwein
Vielen Dank für die Antwort, hat mir sehr weitergeholfen, hatte die Funktion fetchrow_array falsch verstanden.
Danke!!