ich bastele gerade an meinem ersten Mechanize-Skript. Das Formular, das ich
bearbeite, enthält mehrere Select-Felder mit gleichem Namen.
$form->find_input("zone[]") findet nur das erste. Um auch die Werte der
anderen Felder setzen zu können, wollte ich sie erst (mit Hilfe von
HTML::Form) umbenennen und später wieder zurückbenennen:
| my ($zone, @zonen);
| my @werte = qw/ort fer/;
| foreach my $wert (@werte) {
| $zone = $form->find_input('zone[]');
| print "Name alt ", $zone->name, "\n";
| $zone->value($wert);
| $zone->name('zone' . $wert);
| print "Name neu ", $zone->name, "\n";
| push (@zonen, $zone);
| }
Leider findet Mechanize nach dem ersten Umbenennen keine weiteren Felder mit
dem Originalnamen:
| Name alt zone[]
| Name neu zoneort
| Can't call method "name" on an undefined value at ....
Weiß jemand einen Ausweg? Ein anderes Modul nehmen? Ich arbeite mit Perl
v5.8.4 von ActiveState.
Gruß
Klaus
Re: Mechanize - gleichnamige Select-Felder
am 22.11.2006 21:22:56 von Karlheinz Weindl
K. Wittrock schrieb:
> Hallo NG,
>
> ich bastele gerade an meinem ersten Mechanize-Skript. Das Formular, das ich
> bearbeite, enthält mehrere Select-Felder mit gleichem Namen.
Wenn es mehrere Select-Felder mit gleichem Namen (ID) gibt, dann können
die nur in verschiedenen Forms untergebracht sein.
In diesem Fall müsstest du dir eine Liste der Forms holen und sie der
Reihe nach abarbeiten.
Gruß
Karlheinz
Re: Mechanize - gleichnamige Select-Felder
am 22.11.2006 22:44:08 von Karlheinz Weindl
Karlheinz Weindl schrieb:
> K. Wittrock schrieb:
>
>
>>Hallo NG,
>>
>>ich bastele gerade an meinem ersten Mechanize-Skript. Das Formular, das ich
>>bearbeite, enthält mehrere Select-Felder mit gleichem Namen.
>
>
> Wenn es mehrere Select-Felder mit gleichem Namen (ID) gibt, dann können
> die nur in verschiedenen Forms untergebracht sein.
.... es sei denn du meinst ein Select-Felder mit Mehrfachauswahl!
In diesem Fall bekommst du dann allerdings jeden einzelnen ausgewählten
Wert unter dem gleichen Namen!
Dann mußt du allerdings auch die Methode im Arraykontext aufrufen, um
alle Werte zu bekommen.
@allvals = $form->find_input('name');
Gruß
Karlheinz
Re: Mechanize - gleichnamige Select-Felder
am 23.11.2006 13:06:42 von KWittrock
"Karlheinz Weindl" schrieb im Newsbeitrag
news:4564c4a4$0$18833$9b4e6d93@newsspool4.arcor-online.net.. .
> Karlheinz Weindl schrieb:
>
>> K. Wittrock schrieb:
>>
>>
>>>Hallo NG,
>>>
>>>ich bastele gerade an meinem ersten Mechanize-Skript. Das Formular, das
>>>ich
>>>bearbeite, enthält mehrere Select-Felder mit gleichem Namen.
>>
>>
>> Wenn es mehrere Select-Felder mit gleichem Namen (ID) gibt, dann können
>> die nur in verschiedenen Forms untergebracht sein.
>
> ... es sei denn du meinst ein Select-Felder mit Mehrfachauswahl!
> In diesem Fall bekommst du dann allerdings jeden einzelnen ausgewählten
> Wert unter dem gleichen Namen!
Nein, ich meine 5 Select-Felder mit Mehrfachauswahl direkt hintereinander im
selben Form und mit gleichem Namen (NAME):
|
Re: Mechanize - gleichnamige Select-Felder
am 23.11.2006 13:38:23 von Karlheinz Weindl
K. Wittrock schrieb:
> Nein, ich meine 5 Select-Felder mit Mehrfachauswahl direkt
> hintereinander im
> selben Form und mit gleichem Namen (NAME):
> |
Re: Mechanize - gleichnamige Select-Felder
am 23.11.2006 14:28:09 von KWittrock
"K. Wittrock" schrieb im Newsbeitrag
news:45658f27$0$18835$9b4e6d93@newsspool4.arcor-online.net.. .
>
> "Karlheinz Weindl" schrieb im Newsbeitrag
> news:4564c4a4$0$18833$9b4e6d93@newsspool4.arcor-online.net.. .
>> Karlheinz Weindl schrieb:
>>
>>> K. Wittrock schrieb:
>>>
>>>
>>>>Hallo NG,
>>>>
>>>>ich bastele gerade an meinem ersten Mechanize-Skript. Das Formular, das
>>>>ich
>>>>bearbeite, enthält mehrere Select-Felder mit gleichem Namen.
>>>
>>>
>>> Wenn es mehrere Select-Felder mit gleichem Namen (ID) gibt, dann können
>>> die nur in verschiedenen Forms untergebracht sein.
>>
>> ... es sei denn du meinst ein Select-Felder mit Mehrfachauswahl!
>> In diesem Fall bekommst du dann allerdings jeden einzelnen ausgewählten
>> Wert unter dem gleichen Namen!
>
> Nein, ich meine 5 Select-Felder mit Mehrfachauswahl
Sorry, muss Einfachauswahl heißen.
> direkt hintereinander im
> selben Form und mit gleichem Namen (NAME):
> |
Re: Mechanize - gleichnamige Select-Felder
am 23.11.2006 15:13:40 von Karlheinz Weindl
K. Wittrock schrieb:
>> Nein, ich meine 5 Select-Felder mit Mehrfachauswahl
>
>
> Sorry, muss Einfachauswahl heißen.
Dann bekommst du wahrscheinlich _eine_ Hashreferenz auf eine
Datenstruktur die _ein_ Select-Feld darstellt in dem _alle_
Options-Felder in der Reihenfolge ihres Auftretens enthalten sind.
Ich kann dir nur nochmal raten Data::Dumper zu verwenden um zu sehen,
was du damit anfangen kannst.
Gruß
Karlheinz
Re: Mechanize - gleichnamige Select-Felder
am 23.11.2006 17:32:53 von KWittrock
"Karlheinz Weindl" schrieb im Newsbeitrag
news:4565963c$0$5725$9b4e6d93@newsspool3.arcor-online.net...
> K. Wittrock schrieb:
>> Nein, ich meine 5 Select-Felder mit Mehrfachauswahl
Sorry, muss Einfachauswahl heißen.
>> direkt hintereinander im
>> selben Form und mit gleichem Namen (NAME):
>> |
Re: Mechanize - gleichnamige Select-Felder
am 23.11.2006 18:03:29 von KWittrock
"Karlheinz Weindl" schrieb im Newsbeitrag
news:4565ac92$0$27607$9b4e6d93@newsspool2.arcor-online.net.. .
> K. Wittrock schrieb:
>
>>> Nein, ich meine 5 Select-Felder mit Mehrfachauswahl
>>
>>
>> Sorry, muss Einfachauswahl heißen.
>
> Dann bekommst du wahrscheinlich _eine_ Hashreferenz auf eine
> Datenstruktur die _ein_ Select-Feld darstellt
Richtig. Ich benötige aber (mindestens) das dritte Select-Feld.
> in dem _alle_
> Options-Felder in der Reihenfolge ihres Auftretens enthalten sind.
>
> Ich kann dir nur nochmal raten Data::Dumper zu verwenden um zu sehen,
> was du damit anfangen kannst.
Die Options-Felder interessieren mich im Moment nicht. Ich brauche Zugriff
auf andere Select-Felder als nur das erste.
Gruß
Klaus
Re: Mechanize - gleichnamige Select-Felder
am 23.11.2006 18:35:20 von Karlheinz Weindl
K. Wittrock schrieb:
> Nein, ich meine 5 Select-Felder mit Mehrfachauswahl direkt
> hintereinander im
> selben Form und mit gleichem Namen (NAME):
> |
Re: Mechanize - gleichnamige Select-Felder
am 23.11.2006 18:44:35 von Frank Seitz
Karlheinz Weindl wrote:
> Du hast in einer Form 5 Select-Felder gleichen Names und Inhaltes!
>
> Das ist für einen 'normalen' Submit sinnlos, da von vermutlich allen
> Browsern nur die Auswahl des letzten Feldes an den Server übertragen wird!
Wie kommst Du darauf?
Es ist IMO völlig legal sowas zu machen.
Allerdings braucht man dann auch entsprechenden Code,
der die Felder trotz gleichen Namens
auseinanderhalten kann.
Mit WWW::Mechanize kenne ich mich nicht aus,
daher kann ich zu dem konkreten Problem nichts sagen.
Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel
Re: Mechanize - gleichnamige Select-Felder
am 23.11.2006 19:12:58 von Karlheinz Weindl
Karlheinz Weindl schrieb:
> K. Wittrock schrieb:
>
>
>>Nein, ich meine 5 Select-Felder mit Mehrfachauswahl direkt
>>hintereinander im
>>selben Form und mit gleichem Namen (NAME):
>>|
Re: Mechanize - gleichnamige Select-Felder
am 23.11.2006 20:12:15 von Karlheinz Weindl
K. Wittrock schrieb:
> Inzwischen habe ich etwas anderes probiert: Ich hole mir alle Felder und
> filtere selbst die heraus, die ich brauche. Aber auch dabei erhalte ich
> nur eines der fünf Felder.
Was daran liegt, dass HTML::Form aus den fünf gleichnamigen
Select-Feldern _eines_ macht das die Optionen von allen Fünfen enthält,
aber als selektiert (Hashkey 'seen') nur die Position der zuletzt
gefundene Auswahl angibt!
> @zonen = ();
> foreach ($form->inputs) {
> next unless $_->name;
> print ("gefunden\n") if $_->name eq 'zone[]';
> push (@zonen, $_) if $_->name eq 'zone[]';
> }
> print "Anz Zonen ", scalar @zonen, "\n";
>
> gefunden
> Anz Zonen 1
>
> Meine ursprüngliche Frage ist also nach wie vor offen:
> Weiß jemand einen Ausweg? Ein anderes Modul nehmen?
Hängt davon ab, was du konkret machen willst.
HTML::Form hat in Bezug auf diesen Fall offenbare Defizite. Auf
mehrfache gleichnamige Textfelder z.B. kannst du problemlos (sogar mit
Indexangabe) zugreifen.
Gruß
Karlheinz
Re: Mechanize - gleichnamige Select-Felder
am 24.11.2006 12:00:37 von KWittrock
"Karlheinz Weindl" schrieb im Newsbeitrag
news:4565e4a8$0$5728$9b4e6d93@newsspool3.arcor-online.net...
> Karlheinz Weindl schrieb:
>
>> K. Wittrock schrieb:
>>
>>
>>>Nein, ich meine 5 Select-Felder mit Mehrfachauswahl direkt
>>>hintereinander im
>>>selben Form und mit gleichem Namen (NAME):
>>>|
Re: Mechanize - gleichnamige Select-Felder
am 24.11.2006 12:32:57 von KWittrock
"K. Wittrock" schrieb im Newsbeitrag
news:4566d334$0$27615$9b4e6d93@newsspool2.arcor-online.net.. .
>
> "Karlheinz Weindl" schrieb im Newsbeitrag
> news:4565e4a8$0$5728$9b4e6d93@newsspool3.arcor-online.net...
>> Karlheinz Weindl schrieb:
>>
>>> K. Wittrock schrieb:
>>>
>>>
>>>>Nein, ich meine 5 Select-Felder mit Mehrfachauswahl direkt
>>>>hintereinander im
>>>>selben Form und mit gleichem Namen (NAME):
>>>>|