Ankündigung

Einklappen
Keine Ankündigung bisher.

Variable aus Formular auslesen ..

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Variable aus Formular auslesen ..

    bisher hatte ich im formular ein feld z.b. so genannt, also über ein array:
    <input name="NName[',$id,']" ..

    die id wurde pro zeile um eins erhöht ..
    die abfrage funktionierte auch in der ausgabedatei. dort lief ebenfalls eine schleife und hat für den entsprechenden id-wert den Namen geliefert ..


    jetzt musste ich den namen des feldes allerdings zwecks einer JS-fkt. umändern und aus dem array ist ein name geworden, der die entsprechende id angehängt bekommt als neuen namen:
    <input name="NName',$id,'" ...

    und nun funktioniert meine abfrage nicht mehr.
    wie kann ich in einer schleife auf das 'neue' feld zugreifen .. ?
    z.b. wenn ich die ID 5 hab, dann heisst das feld im formular NName5 ..

    also,z.B.
    for ($i=0; $i<=10;$i++)
    {
    $name = $NName + $i;
    }


  • #2
    Als Tipp, behalte die ursprüngliche Schreibweise:

    PHP-Code:
    <?php
    for ($i 0$i $inputFields$i++) {
      print 
    '<input name="NName[' .$i']" ..>';
    }
    ?>
    und greife mit JavaScript über den elements[]-Array auf deine NName's zu.

    PHP-Code:
    <script>
    var firstNNameIndex = 2;
    for (i = 0; i < <?php print $inputFields?>; i++) {
      // document.FORMULARNAME.elements[i + firstNNameIndex].value
    }
    Mit .elements[0] greifst du auf das 1. <input>-Feld innerhalb des Formulars zu. den firstNNameIndex habe ich als Beispiel auf 2 gesetzt, falls vor den NName-<input>s noch 2 weitere Elemente (z.B. 2 Radio-Buttons) wären.

    Kommentar


    • #3
      das geht leider nicht ...

      ich hab in meiner datenbank pro zeile einen nutzer stehen.
      im formular wird pro nutzer eine zeile erzeugt und der name entsprechend der nutzer-id vergeben .. im formular selbst stehen dann pro nutzer 4-5 eingabefelder, die mit den werten aus der DB vorbelegt sind, falls vorhanden. aber das spielt ja jetzt keine rolle.

      andere ideen?

      Kommentar


      • #4
        elements ist auch ein assoziativer Array, d.h. du kannst auf ihn sowohl mit

        document.forms[0].elements[0]
        als auch
        document.forms["meinFormular"].elements["user_"+irgendeineVariable]
        zugreifen.

        Mit dem Wissen dieser Technik sollte es doch kein Problem sein? Außerdem kann PHP in JS-Variablen speichern. Du kannst also bei der mit PHP erzeugten Erstellung der <input>s auch gleich mit PHP nen JavaScript-Array erstellen, in dem die Namen der <input>-Felder stehen.

        Kommentar


        • #5
          ?? kannst du das mal etwas besser erklären? ?? danke ...

          ach so, da du ja schon javascript gepsotet hast .. meine anfrage sah zuletzt so aus:
          if (document.Nutzerverwaltung.elements['NName'+ i].value == "")

          .. zugegriffen wird auf das Feld z.B. bei nutzer-id 5: -> NName5 ..

          aber so klappt das mit dem zugriff nicht, wenn
          <input name="NName[',$id,']"

          .. daher hatte ich es ja in
          <input name="NName',$id,'"
          geändert...

          Kommentar


          • #6
            Aber deine Frage hat sich erledigt (oder welches Posting ist jünger?), oder?

            Kommentar


            • #7
              eben nicht:
              anfangs hatte ich die feld-inhalte in einem array gespeichert. dort klappte der zugriff in der auswertenden datei prima.

              dann habe ich aufgrund der JS-überprüfung aus dem array viele variablen gemacht; alle fangen mit NName an und enden mit der jeweiligen ID des DB-eintrages. das klappt mit JS ganz gut, aber jetzt hab ich probleme, mit php auf die variablen zuzugreifen.

              sicher könnt ich das so machen:
              if ($id = 1)
              {
              $neuerName = $NName1;
              }

              if ($id = 2)
              {
              $neuerName = $NName2;
              }


              das ginge ja, aber wie kann ich das dynamisch machen .. ich weiss ja jetzt noch nicht, wie viele nutzer es einmal geben wird.
              also, wie kann ich das in ne for-schleife packen, damit der variablenname inkrementiert wird?

              for ($i=0; $i<=10; $i++)
              {
              $neuerName = ???
              }

              Kommentar


              • #8
                Sag mal was willst du eigentlich machen? Du machst aus eigentlich keinem Problem ein so kompliziertes Gerüst.

                Du willst doch pro User ein <input>-Feld + vielleicht 4-5 weitere <input>-Felder anlegen und mit PHP und JavaScript darauf zugreifen, speziell offenbar auf den Namen des Users. Warum funktionieren meine Lösungen oben nicht, was ist die Fehlermeldung (in PHP bzw. JavaScript)? Oder verstehe ich dein Problem nicht?

                Kommentar


                • #9
                  ich habe pro user etwa 4-5 eingabefelder ... die namen der felder werden dynamisch erzeugt.
                  ich hab 2 varianten momentan: die eine funktioniert mit der php-abfrage (felder-namen werden in dem array gespeichert), die andere variante (mit der id an $NName hängen) funktioniert prima mit der js-abfrage.

                  so, würd das gern zusammen bringen ..

                  Kommentar


                  • #10
                    Thema beendet: hab die lösung gefunden .. dynamische namenszuweisung von variablen ist gar nicht so schwer

                    Kommentar


                    • #11
                      Juhu

                      Kommentar

                      Lädt...
                      X