Javascript Array per Form an PHP Seite übergeben

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

  • Javascript Array per Form an PHP Seite übergeben

    Hallo zusammen,
    nach stundenlangem googlen und rumtesten mit den lösungen zu dem thema, bin ich dann doch hier gelandet weil alles irgendwie nicht wirklich funktionieren will.

    Da mein Problem mit Javascript und PHP zu tun hat, wusste ich nicht genau in welchem Forum (hier oder in PHP) ich posten soll. Falls ich falsch gepostet haben sollte, bitte ich dies zu entschuldigen und den Beitrag einfach zu verschieben.

    Also von vorn, ich habe ein mit Post übergebenes PHP Array was ich in Javascript haben möchte, da ich dieses dann mit Hilfe von Javascript Funktionen ändern möchte. Das geht auch alles soweit.

    Da ich aber nun die geänderten und hinzugefügten Daten wieder auf der nächsten Seite brauche, um diese dann in der Datenbank mittels PHP speichern zu können, brauche ich logischerweise das Javascript Array wiederübergeben an die PHP Seite, am besten per Post oder Get.

    Ich habe es mit einem hidden Feld probiert und auch das ganze an die URL zu hängen, aber das was ich probiert habe funzt alles nicht.

    hier mal ein teil meines codes zum besseren Verständnis:
    PHP-Code:
    function Ausgabe(){
    <?
    $i = 2;
    while ($daten[$i] != ""){
        echo "datenjs[".$i."] = \"".$daten[$i]."\";";
        echo "document.write(\"<option>\");";
        echo "document.write(datenjs[".$i."]);";
        echo "document.write(\"</option>\");";
        $i++;
      }
    echo "z = ".$i.";";
    ?>
    }
    das funktioniert einwandfrei. ich ändere die daten im dem ich an das array weitere daten dranhänge und die daten in dem jeweiligen Option ändere.
    Die geänderten und hinzugefügten Daten sind dann wieder in dem datenjs drin, dieses brauche ich übergeben an die nächste PHP Seite.
    Aber eben wie ist die Frage.

    Folgende Möglichkeiten habe ich bereits probiert:
    1.
    Code:
     
    function speichern(){
    document.write("<input type=\"hidden\" name=\"daten\" value=\"");
    document.write(datenjs);
    document.write("\">");
    }
    2.
    Code:
    <form name="Step2" method="post" action="Seite1_3_1.php?daten = datenjs&zahl= <? echo $zahl; ?>">
    3.
    Code:
    <form name="form1" action="#">
    <input type="hidden" name="versteckt" value="nix">
    <input type="submit">
    </form>
    <a href="Seite1_3_1.php?zahl= <? echo $zahl; ?>" onclick="document.form1.versteckt.value='datenjs';return false">Hier klicken</a>
    Aber die haben bei mir alle nicht funktioniert. Hat einer von euch eine gute Idee dazu ?

    LG Anja

    edit:
    weitere Möglichkeit die leider auch nicht gehen will.
    Code:
    function speichern(){
    var a = z;
    var tempdaten;
    while (a != -1){
    tempdaten = tempdaten + datenjs[a];
    a--;
    }
    self.location.href = "Seite1_3_1.php?daten ="+tempdaten+"&zahl= <? echo $zahl; ?>";
    self.document.Step2.submit();
    }
    Zuletzt geändert von Anuschka; 03.12.2006, 04:05.

  • #2
    Session?

    Kommentar


    • #3
      wenn ich mich nicht ganz irre, ist eine session wie php serverseitig.
      ich wüsste nicht wie ich ein javascript array in eine session (die ja auch nur mit php läuft ) schreiben soll

      Kommentar


      • #4
        Vielleicht habe ich dich mißverstanden: Du versuchst Daten über mehrere Requests weiterzugeben.
        Dazu läßt du PHP etwas Javascript ausgeben, welches wiederum HTML ausgibt, das du per CSS versteckst. Ziemlich kompliziert und da der User sowieso nichts davon mitbekommt, kann er die Daten auch nicht ändern.
        Deshalb liegt es nahe, die Daten überhaupt nicht an den Client zu senden sondern in einer Session auf dem Server zu führen.

        Kommentar


        • #5
          nee nicht ganz.

          ich hole die daten auf dieser seite mittels Objekte und
          Klassenzugriffen aus der Datenbank.
          Der Nutzer kann sich die angezeigen Datensätze ansehen,
          ändern, etwas hinzufügen und auch löschen.

          Und diese geänderten Daten möchte ich übergeben an die
          nächste Seite. wenn sie nicht geändert würden, wüsste ich wie
          ich die Daten mittels Javascript an die nächste PHP Seite
          übergeben kann, aber eben nicht die geänderten.

          Einen Weg habe ich gefunden der bei einem anderen Script
          funktioniert. Und zwar sieht der wie folgt aus
          Code:
          <HTML>
          <script>
          var name = new Array;
          var hilfmir;
          var i = 0;
          name[0] = "ich will";
          name[1] = "ich will auch";
          
          while (name[i] != null )
          {
          hilfmir = hilfmir + name[i]+ "<<>>" ;
          i = i+1;
          }
          self.location.href = "foo.php?name="+hilfmir;
          </script>
          </HTML>
          und die dazugehörige PHP Seite:
          PHP-Code:
          <?
          $me = $_GET['name'];
          Echo "Das steht in der Variable:<br>".$me;
          ?>
          das geht, aber wenn ich das ganze in mein script packe dann ist
          immer das datenjs (mein array) leer so dass ich es nicht an die
          nächste Seite weitergeben kann und ich hab keine Ahnung wieso.
          weil ich mir das datenjs in den anderen Funktionen im script bereich
          immer mit alert ausgeben lassen kann.

          Hier mal der ganze Script Teil. Vielleicht sieht einer von euch warum
          das datenjs leer ist, oder wie ich es weitergeben kann.
          Code:
          <?php
          include ("schnittstelle.php");
          $zahl = $_GET["zahl"];
          $neu = new schnittstelle;
          #$neu->updatebynummer($zahl);
          $daten = $neu->getallDatenbyNummer($zahl);
          $hilfe = 2;
          ?>
          <html>
          <head><title></title>
          <script>
          <!--
          
          var datenteil = new Array();
          var datenjs = new Array();
          var neuedaten = new Array();
          var hilfszahl;
          var help = 0;
          var z;
          var a;
          var tempdaten = "HUHU";
          function Ausgabe(){
          <?
          $i = 2;
          while ($daten[$i] != ""){
              echo "datenjs[".$i."] = \"".$daten[$i]."\";";
              echo "document.write(\"<option>\");";
              echo "document.write(datenjs[".$i."]);";
              echo "document.write(\"</option>\");";
              $i++;
            }
          echo "z = ".$i.";";
          ?>
          }
          
          function inArea() {
          if (Step2.Website.value == "")
          {document.getElementById("farbe5").color = "red";}
          else
          {document.getElementById("farbe5").color = "white";}
          if (Step2.NicknID.value == "")
          {document.getElementById("farbe6").color = "red";}
          else
          {document.getElementById("farbe6").color = "white";}
          
          if(Step2.Website.value!="" && Step2.NicknID.value!="" ){
            if (Step2.taste.value == "Eintrag updaten"){
              EintragUpdate = new Option(document.forms[0].Website.value 
          + " <-> " + document.forms[0].NicknID.value,document.forms[0].Website.value 
          + " <-> " + document.forms[0].NicknID.value,false, true);
              document.forms[0].T3.options[document.forms[0].T3.selectedIndex] 
          = EintragUpdate;
              document.forms[0].Website.value = "";
              document.forms[0].NicknID.value = "";
              document.forms[0].T3.disabled = false;
              Step2.editieren.disabled = false;
              Step2.weg.disabled = false;
              }
          else{
          NeuerEintrag = new Option(document.forms[0].Website.value + " 
          <-> " + document.forms[0].NicknID.value,document.forms[0].Website.value 
          + " <-> " + document.forms[0].NicknID.value,false, true);
          document.forms[0].T3.options[document.forms[0].T3.length] = 
          NeuerEintrag;
          datenjs[z] = document.forms[0].Website.value + " <-> " + 
          document.forms[0].NicknID.value;
          document.forms[0].Website.value = "";
          document.forms[0].NicknID.value = "";
          z++;
              }
            }
          }
          function loeschen() {
          document.forms[0].T3.options[document.forms[0].T3.selectedIndex] 
          = null;
          }
          
          function aendern(){
          datenteil  = document.forms[0].T3.options[document.forms[0].T3.selectedIndex].text.split(" 
          <-> ");
          document.forms[0].Website.value = datenteil[0];
          document.forms[0].NicknID.value = datenteil[1];
          Step2.taste.value = "Eintrag updaten";
          document.forms[0].T3.disabled = true;
          Step2.editieren.disabled = true;
          Step2.weg.disabled = true;
          }
          
          function speichern(){
          a = z;
          while (a != -1){
          tempdaten = tempdaten + datenjs[a];
          a--;
          }
          self.document.Step2.submit();
          }
          // -->
          </script>
          und die dazugehörigen Aufrufe im PHP und HTML Bereich
          PHP-Code:
          </head>
          <BODY BGCOLOR="#000000">
          <font face="Arial" color="white">
          <small>
          <center>
          <img src="Websitenedit.jpg"><br>
          <font face="arial" color="white">
          <br>
          Hier kannst du deine Webseiteneintr&auml;ge editieren<br><br>
          <form name="Step2" method="post" action = 
          "Seite1_3_1.php?zahl=<? echo $zahl; ?>&daten="+tempdaten>
          <?
          echo "<select name=\"T3\" size=\"1\">";
          echo "<script>Ausgabe();</script>";
          echo "</select><br><br>";
          ?>
          <table border="0" width="225">
          <tr>
          <td><center><input type="button" value="Eintrag ändern" 
          Name="editieren" onClick="aendern();"></td>
          <td><center><input type="button" value="Eintrag löschen" 
          Name="weg" onClick="loeschen();"></td>
          </tr>
          <tr>
          <td></td>
          <td></td>
          </tr>
          <tr>
          <td><font face="arial" color="white"><small><font id="farbe5">Webportal / 
          -seite:</font>&nbsp;&nbsp;</font></small>
          </td>
          <td><font face="arial" color="white"><small><font 
          id="farbe6">Nickname / ID:</font>&nbsp;&nbsp;</font></small></td>
          </tr>
          <tr>
          <td><input type="text" name="Website" value=""  size="20"></td>
          <td><input type="text" name="NicknID" value=""  size="20"></td>
          </tr>
          </table>
          <input type="button" value="Hinzufügen" Name="taste" 
          onClick="inArea();"></p>
          <input type ="button" name="Upload" value="Im Profil speichern" 
          onClick="speichern();"><br>
          </form>
          <br>
          <input type="button" value="Zurück zum Profil" 
          onClick="history.back()">
          </small>
          </center>
          </body>
          </html>

          Ich hoffe ich erschlage euch mit dem gesamten Quellcode nicht, aber
          ich denke so könnt ihr mein Vorhaben besser verstehen und nachvollziehen.
          Zuletzt geändert von Anuschka; 03.12.2006, 16:02.

          Kommentar

          Lädt...
          X