<input type> oder <form> Name ermitteln
holgersen
- perl
Liebe Wissenden,
folgendes Problem:
Ich rufe ein cgi-File loeschen.cgi aus einem anderen cgi-File auf (wie üblich):
<form action="loeschen.cgi" method="post" name="12346">
<input type="submit" name="12346" value="loeschen">
</form>
Der Name für die form (12346) bzw. den input (12346) ist dabei variabel und verschlüsselt sozusagen, was in einer Datei gelöscht werden soll. Um das entsprechende Löschen ausführen zu können, müsste ich den Namen des input (bzw. auch der form, identisch) im File "loeschen.cgi" herausfinden. Besteht diese Möglichkeit prinzipiell, bzw., falls ja, wie stellt man das an? Herzlichen Dank und gut Nacht,
holgersen
Ich rufe ein cgi-File loeschen.cgi aus einem anderen cgi-File auf (wie üblich):
<form action="loeschen.cgi" method="post" name="12346">
<input type="submit" name="12346" value="loeschen">
</form>Der Name für die form (12346) bzw. den input (12346) ist dabei variabel und verschlüsselt sozusagen, was in einer Datei gelöscht werden soll. Um das entsprechende Löschen ausführen zu können, müsste ich den Namen des input (bzw. auch der form, identisch) im File "loeschen.cgi" herausfinden. Besteht diese Möglichkeit prinzipiell, bzw., falls ja, wie stellt man das an? Herzlichen Dank und gut Nacht,
<input type=hidden name="meine_funktion" value="loeschen">
<input type=hidden name="objekt_nr" value="12345">
mfg Beat
Ich rufe ein cgi-File loeschen.cgi aus einem anderen cgi-File auf (wie üblich):
<form action="loeschen.cgi" method="post" name="12346">
<input type="submit" name="12346" value="loeschen">
</form>Der Name für die form (12346) bzw. den input (12346) ist dabei variabel und verschlüsselt sozusagen, was in einer Datei gelöscht werden soll. Um das entsprechende Löschen ausführen zu können, müsste ich den Namen des input (bzw. auch der form, identisch) im File "loeschen.cgi" herausfinden. Besteht diese Möglichkeit prinzipiell, bzw., falls ja, wie stellt man das an? Herzlichen Dank und gut Nacht,
<input type=hidden name="meine_funktion" value="loeschen">
<input type=hidden name="objekt_nr" value="12345">
Hallo Beat,
erstmal vielen Dank für Deinen Tipp. Mir ist noch nicht ganz klar, wie das mein Problem löst. Danke nochmal,
holgersen
mfg Beat
Hi,
Mir ist noch nicht ganz klar, wie das mein Problem löst.
die von Dir benötigten Daten werden mit festgelegten Namen übertragen und sind somit leicht zugänglich.
Cheatah
Hi,
Mir ist noch nicht ganz klar, wie das mein Problem löst.
die von Dir benötigten Daten werden mit festgelegten Namen übertragen und sind somit leicht zugänglich.
Aha, und wie? Vielleicht noch kurz zur Erklärung:
In dem aufrufenden cgi-File werden Datensätze erstellt und angezeigt.
Wieviele Datensätze das sind, ist erst zur Laufzeit durch die Eingaben des
Benutzers in ein html-Formular klar. Sagen wir, es sind 10 Stück. Jeder angezeigte Datensatz soll per Knopfdruck löschbar sein. Dazu lasse ich in dem aufrufenden cgi-File eine Schleife laufen, die dann 10 mal "input type=... name=...." erzeugt, "name" ist dabei eine Zaehlervariable, die entsprechend der Anzahl der Datensätze hochgezählt wird. Das heißt, es entsteht z.B.
<input type=...., name = 1,.....>
<input type=...., name = 2,.....>
.................................
<input type=...., name = 10,.....>
Dementsprechend will ich im aufgerufenen File "loeschen.cgi" an die "1", "2",... und "10" rankommen. Bis jetzt ist mir keine Methode bekannt. Vielen Dank nochmal,
holgersen
Cheatah
Dementsprechend will ich im aufgerufenen File "loeschen.cgi" an die "1", "2",... und "10" rankommen. Bis jetzt ist mir keine Methode bekannt. Vielen Dank nochmal,
so rum geht es nicht. Bzw. nur indirekt. wenn du es wirklich so rum machen willst, musst du halt alle Möglichkeiten abchecken und prüfen ob gerade diese ausgewählt wurde.
Dein Beispiel:
for(1...10) {
if(CGI::param($_)){
printf "Es soll die Nummer %s gelöscht werden.<br>\n", $_;
}
}
Das geht aber natürlich nicht, wenn die Zahlen sehr gross werden. Dann musst du dir etwas anderes überlegen. z.b. an das Feld eine Kennung anhängen und aus dieser dann die Zahl filtern.
Die Felder könnten dann z.b. so aussehen:
<input name="delete1" ....>
<input name="delete2" ....>
Struppi.
Hi,
Das geht aber natürlich nicht, wenn die Zahlen sehr gross werden.
in dem Fall kann man sich die Namen aller Parameter holen und diese Liste durchlaufen. Das ist natürlich eine denkbar bescheuerte Methodik - definitiv ist das Konzept überarbeitungswürdig.
Cheatah
Hi,
Das geht aber natürlich nicht, wenn die Zahlen sehr gross werden.
in dem Fall kann man sich die Namen aller Parameter holen und diese Liste durchlaufen. Das ist natürlich eine denkbar bescheuerte Methodik - definitiv ist das Konzept überarbeitungswürdig.
Cheatah
Hi Cheatah,
ich habe mir Deinen lnk angeschaut. Wenn ich damit auch an den Namen in
<input type=.... name=2......>,
also an die "2" rankommen würde, wäre das genau, was ich bräuchte. Mir ist noch nicht klar, wie ich hier im Detail z.B. die "2" an das
Script "loeschen.cgi" übergeben würde, um sie dann mit "param" im file "loeschen.cgi" auszulesen. Ich werde heute abend gleich mal ein bisschen probieren, vielen Dank!
Hi,
ich habe mir Deinen lnk angeschaut. Wenn ich damit auch an den Namen in
<input type=.... name=2......>,
also an die "2" rankommen würde, wäre das genau, was ich bräuchte.
Du kommst an _alle_ Namen ran und musst geschickt auswählen, welcher denn hier die "2" ist.
Mir ist noch nicht klar, wie ich hier im Detail z.B. die "2" an das
Script "loeschen.cgi" übergeben würde,
Alle als "successful" geltenden Formular-Kontrollelemente (Eingabefelder, Textareas, Dropdowns ...) werden in Form von "name=wert" (jeweils kodiert) übertragen. Wenn der Name "2" lautet und der Wert "foo", erhält der Server den Parameter "2=foo".
Cheatah
Hi,
ich habe mir Deinen lnk angeschaut. Wenn ich damit auch an den Namen in
<input type=.... name=2......>,
also an die "2" rankommen würde, wäre das genau, was ich bräuchte.Du kommst an _alle_ Namen ran und musst geschickt auswählen, welcher denn hier die "2" ist.
Mir ist noch nicht klar, wie ich hier im Detail z.B. die "2" an das
Script "loeschen.cgi" übergeben würde,Alle als "successful" geltenden Formular-Kontrollelemente (Eingabefelder, Textareas, Dropdowns ...) werden in Form von "name=wert" (jeweils kodiert) übertragen. Wenn der Name "2" lautet und der Wert "foo", erhält der Server den Parameter "2=foo".
Cheatah
Hallo Cheatah,
vielen Dank, ich glaube, das löst mein Problem. Ich werde also "param" auswerten und dann entsprechend auf den Wert fuer "loeschen" zugreifen. Danke nochmal!
holgersen
Dementsprechend will ich im aufgerufenen File "loeschen.cgi" an die "1", "2",... und "10" rankommen. Bis jetzt ist mir keine Methode bekannt. Vielen Dank nochmal,
so rum geht es nicht. Bzw. nur indirekt. wenn du es wirklich so rum machen willst, musst du halt alle Möglichkeiten abchecken und prüfen ob gerade diese ausgewählt wurde.
Dein Beispiel:
for(1...10) {
if(CGI::param($)){
printf "Es soll die Nummer %s gelöscht werden.<br>\n", $;
}
}
Hallo Struppi,
aha, das klingt doch schon mal prima. War mir nicht bekannt, dass man so an diese Information rankommt. Habe ich das richtig verstanden, dass
CGI::param($\_) im aufgerufenen File genau dann z.B. für "2" true ergibt, wenn ich es aus einem anderen cgi-File mit "input type name=2" aufrufe? Also so:
Aufrufendes File:
<form action=loeschen.cgi......
<input type=submit name=2......
</form>
aufgerufenes File loeschen.cgi:
for(1...10)
{
if(CGI::param($\_))
{
printf "Es soll die Nummer %s gelöscht werden.<br>\n", $\_;
}
}
resultiert in:
Es soll die Nummer 2 gelöscht werden. ????
Scheint mir unwahrscheinlich, ich kann es leider erst heute abend ausprobieren. Wäre natürlich genau, was ich brauche!
>
> Das geht aber natürlich nicht, wenn die Zahlen sehr gross werden. Dann musst du dir etwas anderes überlegen. z.b. an das Feld eine Kennung anhängen und aus dieser dann die Zahl filtern.
>
> Die Felder könnten dann z.b. so aussehen:
> ~~~html
<input name="delete1" ....>
> <input name="delete2" ....>
>
Struppi.