User since
2004-12-17
18
Artikel
BenutzerIn
Hallo an alle,
ich hab nen Problem was ich echt nicht verstehe. Ich bau mir dynamisch ein Formular auf mit einer variablen Anzahl Textfelder in die der User irgendwas eingeben soll/kann. In einer SUB arbeite ich die Felder durch beim speichern usw.
Ich bekomm aber immer -> Can't call method "preis" without a package or object reference
(preis = Array mit Werten aus einer DB Abfrage)
lass ich mir zuvor aber preis ausgeben -> die ("$preis[0] - $preis[1]") bekomm ich genau die 2 Werte die ich auch brauche zur Verarbeitung, aber beim Vergleich schmeisst es ihn immer...
Der Vergleich sieht so aus...
if ($preis[0] == "" and preis$counter == "")
In $preis[0] steht ne Zahl und in preis$counter steht der Wert aus dem Textfeld...
Hat jemand nen Rat?
P.S bin erst seit 2 Wochen am Perl programmieren also nicht schlagen *g*
CrYo
User since
2004-12-17
18
Artikel
BenutzerIn
Hallo nochmal,
hab jetzt den Fehler etwas eingrenzen können. Das Problem ist, dass ich meine dynamisch generierten Textfelder folgende Namen gebe...
<input type="text" name="preis$counter" size="7" tabindex="$counter" value="$preis[1]">
Er benennt zwar die Textfelder dann mit "preis1", "preis2", ... usw. aber wie spreche ich jetzt die Werte in den einzelnen Textfeldern an?
Darum hat er mir vorher auch die Fehlermeldung mit "preis" gebracht... aber jetzt krieg ich die Werte nicht. Autsch.......
User since
2003-08-04
1706
Artikel
HausmeisterIn
Was das geht mit param??
Dafür gibts doch eigentlich die keywords-Methode.
my @price; m/^preis(\d+)/ and $price[$1] = $q->param($_) for $q->keywords();
Gruß Alex
User since
2004-12-17
18
Artikel
BenutzerIn
UFF! Also Deine Quellcode Zeile bereitet mir ziemliches Kopfzerbrechen *g* das ist Hardcore Coding *G*
Hab es jetzt selber primatenhaft gelöst bzw. bin drauf gekommen...
my $formpreis = $cgi->param ("preis$counter");
in meiner schleife weise ich nun immer $formpreis das richtige Textfeld zu. Jetzt klappt es und mein Formular ist fertig... nach 13 Std. *gg* mit nur einer Kaffee Pause v. 15min.
Aber mit Euren 2 Zeilen jetzt muss ich mich auch mal auseinander setzen. Trotzdem VIELEN DANK an Euch!!!
CrYo
User since
2003-08-04
1706
Artikel
HausmeisterIn
Ist halt etwas komprimiert als EInzeiler ausgedrückt.
my @preis;
foreach my $keyword ($q->keywords()) {#durchlaufe alle übergebenen Paramter
if ($keyword =~ m/^preis(\d+)/) {#Wenn der aktuelle Parameter name mit preis und einer
#Zahl beginnt schreibe die Zahl in die spezialvariable $1
$preis[$1] = $q->param($keyword);#Weise dem Arrayelement $1 den Wert von $keyword zu
}#if
}#foreach
Das ist jetzt der COde den pq gepostet hat. Hab deine Aufgabenstellung aber nicht so richtig verstanden deswegen weis ich jetzt nicht ob dir das hilft. Aber du hast dir ja bereits selbst geholfen :)
Gruß Alex
User since
2003-08-04
1706
Artikel
HausmeisterIn
@renee: Kappier ich nicht.
Das muss ich jetzt mal ausprobieren.
Gruß Alex
User since
2003-08-04
1706
Artikel
HausmeisterIn
Hoppla verwechselt. Dachte es schon mal mit dieser Funktion eingesetzt zu haben. War aber
my %v = $q->Vars();my @params = keys %v;
Keywords ist wohl das falsche dafür. Sorry for confusing.
Gruß alex