Schrift
[thread]394[/thread]

Can't call method "..." without a package or obj

Leser: 1


<< |< 1 2 >| >> 12 Einträge, 2 Seiten
Cryog3n
 2004-12-27 22:39
#3939 #3939
User since
2004-12-17
18 Artikel
BenutzerIn
[default_avatar]
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
Cryog3n
 2004-12-27 23:32
#3940 #3940
User since
2004-12-17
18 Artikel
BenutzerIn
[default_avatar]
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.......
pq
 2004-12-27 23:49
#3941 #3941
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
my @price; m/^preis(\d+)/ and $price[$1] = $q->param($_) for $q->param;
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
format_c
 2004-12-28 01:08
#3942 #3942
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
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
Cryog3n
 2004-12-28 01:14
#3943 #3943
User since
2004-12-17
18 Artikel
BenutzerIn
[default_avatar]
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
renee
 2004-12-28 01:22
#3944 #3944
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Aus der CGI-Doku:
Quote
FETCHING A LIST OF KEYWORDS FROM THE QUERY:

@keywords = $query->keywords

If the script was invoked as the result of an <ISINDEX> search, the parsed keywords can be obtained as an array using the keywords() method.
FETCHING THE NAMES OF ALL THE PARAMETERS PASSED TO YOUR SCRIPT:

@names = $query->param

If the script was invoked with a parameter list (e.g. "name1=value1&name2=value2&name3=value3"), the param() method will return the parameter names as a list. If the script was invoked as an <ISINDEX> script and contains a string without ampersands (e.g. "value1+value2+value3") , there will be a single parameter named "keywords" containing the "+"-delimited keywords.

NOTE: As of version 1.5, the array of parameter names returned will be in the same order as they were submitted by the browser. Usually this order is the same as the order in which the parameters are defined in the form (however, this isn't part of the spec, and so isn't guaranteed).
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
renee
 2004-12-28 01:26
#3945 #3945
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
my @price; m/^preis(\d+)/ and $price[$1] = $q->param($_) for $q->keywords();


ist in der Langversion:
Code: (dl )
1
2
3
4
5
6
my @price;
foreach($q->keywords()){
if($_ =~ m/^preis(\d+)/){
$preis[$1] = $q->param($_);
}
}


bzw. keywords() durch param() ersetzen!
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
format_c
 2004-12-28 01:27
#3946 #3946
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Ist halt etwas komprimiert als EInzeiler ausgedrückt.
Code: (dl )
1
2
3
4
5
6
7
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
format_c
 2004-12-28 01:29
#3947 #3947
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
@renee: Kappier ich nicht.

Das muss ich jetzt mal ausprobieren.

Gruß Alex
format_c
 2004-12-28 01:38
#3948 #3948
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
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
<< |< 1 2 >| >> 12 Einträge, 2 Seiten



View all threads created 2004-12-27 22:39.