holgersen: <input type> oder <form> Name ermitteln

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

  1. 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

    --
    Woran ich arbeite:
    X-Torah
    ><o(((°>    ----       ><o(((°>
       <°)))o><                      ><o(((°>o
    1. 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

      1. 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

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. 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

          1. 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.

            1. 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

              --
              X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
              X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
              X-Will-Answer-Email: No
              X-Please-Search-Archive-First: Absolutely Yes
              1. 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!

                1. 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

                  --
                  X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                  X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                  X-Will-Answer-Email: No
                  X-Please-Search-Archive-First: Absolutely Yes
                  1. 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

            2. 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.