Robin: Formular per Javascript includen

hallo liebe Community,

ich baue derzeit ein script für eine Pen & Paper rpg, welches bestimmte Berechnungen für den Nutzer übernehmen soll.. Zu beginn gibt man die Anzahl der Charaktere ein, mit denen man rechnen möchte, danach spuckt der Rechner alle möglichen Zahlenwerte und Berechnungen aus

Ich wurde allerdings Gestern Nachmittag darauf angesprochen, dass es nützlich wäre, wenn man auch noch später Charaktere für das Spiel hinzufügen könnte.. Das ist für mich im Moment noch ein großes Problem, denn auch nach Stundenlangen Googeln und testen konnte ich keine wirklich passende Lösung finden

Im Moment gibt man wie schon gesagt die Anzahl der Formulare ein (ein Formular steht für einen Charakter) und das passiert so

  
<?php  
  if (empty($_POST["submit"]))  
     {  
     include("NinjaZahl.html"); //hier gibt man die Anzahl ein, falls nichts eingetragen wurde, wird die Form erneut geladen  
     }  
  else  
     {  
     $zahl = $_POST["NinjaCounter"];  
     $i = 0;  
     while ($i < $zahl)  
           {  
           include("NinjaRechnerForm.js"); //falls eine Anzahl eingetragen wurde, wird in einer Schleife das Formal n fach erstellt  
           $i++;  
           }  
     }  
?>

hier mal die Seite meine Seite

Ich habe jetzt folgende Überlegungen wie ich es anstellen könnte..

  1. ich speichere jegliche Variablen und Eingaben, lasse die Seite danach neu laden, Erstelle die Formulare und trage erneut die Zahlen ein
    (weiß nicht wie sinnvoll das ist)
  2. ich versuche eine Lösung mit Javascript zu finden einfach einen Include dafür zu erstellen

ich habe mich nun für die 2. Lösung entschieden, nur selbst nach vielen Stunden nichts gefunden was passt
ich habe auch schon hier auf der seite gesucht, allerdings nicht wirklich etwas brauchbares gefunden außer, dass mehrfach gesagt wurde es geht nicht. Da diese Treads allerdings schon sehr alt sind habe ich gehofft es gibt heute eine Lösung

hab auch schon das hier versucht, nur klappt das auch nicht sonderlich gut
klick
Klick

  1. ich baue derzeit ein script für eine Pen & Paper rpg, welches bestimmte Berechnungen für den Nutzer übernehmen soll.. Zu beginn gibt man die Anzahl der Charaktere ein, mit denen man rechnen möchte, danach spuckt der Rechner alle möglichen Zahlenwerte und Berechnungen aus

    Ach komm - ein großer Teil des Spaßes an P&P-RPGs liegt doch nicht im Bürokratischen herumrechnen sondern im Zusammensein und Geschichten erzählen - was da am Zettel steht ist doch im Grunde egal.

    Zu deiner eigentlichen Frage:

    Arrays!

    <input name="foo" value="bar" />  
    <input name="foo" value="baz" />
    

    Am Server sollte als Wert "baz" ankommen

    <input name="foo[]" value="bar" />  
    <input name="foo[]" value="baz" />
    

    Am Server sollte ein Array mit bar und baz ankommen

    Ob du dann eines oder 23 Ninjas im Formular hast, ist egal.

    1. Hi,

      <input name="foo" value="bar" />

      <input name="foo" value="baz" />

      
      >   
      > Am Server sollte als Wert "baz" ankommen  
        
      Nein. Es sollten beide Werte ankommen. Tuns sie auch.  
        
      Nur PHP ist zu blöd dafür, ein Array draus zu machen, wenn der Name keine [] enthält - und läßt nur den letzten Wert durch ...  
        
      cu,  
      Andreas
      
      -- 
      [Warum nennt sich Andreas hier MudGuard?](http://MudGuard.de/)  
      [O o ostern ...](http://ostereier.andreas-waechter.de/)  
        
      Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.  
      
      
      1. Hi,

        <input name="foo" value="bar" />

        <input name="foo" value="baz" />

        
        > >   
        > > Am Server sollte als Wert "baz" ankommen  
        >   
        > Nein. Es sollten beide Werte ankommen. Tuns sie auch.  
          
        Ja, mein Fehler - natürlich kommt beim server foo=bar&foo=baz als Query String an  
          
        
        > Nur PHP ist zu blöd dafür, ein Array draus zu machen, wenn der Name keine [] enthält - und läßt nur den letzten Wert durch ...  
          
        Sagt wer? Afaik gibt es keine Regel, wie genau der Query String zu parsen ist[1] - ebenso definiert HTML in keiner Weise, wie der logische Aufbau der name-Attribute beschaffen sein muss. Im Falle von PHP ist es jedenfalls nur Konsequent, da dieselbe Behandlung/Logik für Interne und für extern zugeführte variablen Verwandt wird  
          
        $foo = 'bar';  
        $foo = 'baz';  
          
        Ergibt einen String  
          
        $foo[] = 'bar';  
        $foo[] = 'baz';  
          
        Ergibt ein Array  
          
        Und solltest du nicht zufrieden sein, kannst du die bereitgestellten Superglobalen Arrays ja wegschmeissen und selbst nach beliebigen Regeln erstellen.  
          
        [1] Man liest zwar an allen Ecken und enden, dass es PHP falsch macht, aber "alle anderen CGI-Anwendungen richtig", aber man kann nirgends eine Regel finden, wie es denn zu sein hat
        
        1. Hi,

          Nur PHP ist zu blöd dafür, ein Array draus zu machen, wenn der Name keine [] enthält - und läßt nur den letzten Wert durch ...
          Sagt wer?

          u.a. ich.

          Afaik gibt es keine Regel, wie genau der Query String zu parsen ist[1] - ebenso definiert HTML in keiner Weise, wie der logische Aufbau der name-Attribute beschaffen sein muss. Im Falle von PHP ist es jedenfalls nur Konsequent, da dieselbe Behandlung/Logik für Interne und für extern zugeführte variablen Verwandt wird

          naja, ich finde es sehr unlogisch, daß von mehreren Parametern nur einer zur Verfügung steht.

          Und solltest du nicht zufrieden sein, kannst du die bereitgestellten Superglobalen Arrays ja wegschmeissen und selbst nach beliebigen Regeln erstellen.

          oder gleich mit einer Sprache arbeiten, die nicht einfach Parameter unterschlägt.

          [1] Man liest zwar an allen Ecken und enden, dass es PHP falsch macht, aber "alle anderen CGI-Anwendungen richtig", aber man kann nirgends eine Regel finden, wie es denn zu sein hat

          Naja - es ist halt total unlogisch, daß Parameter im Request einfach mal so unterschlagen werden.
          Soweit ich weiß, kann man das ja auch nicht in der php.ini umkonfigurieren.
          Und soweit ich weiß, kommt auch kein Notice/Error/Warning, daß auf den unterschlagenen Parameter hinweist.

          cu,
          Andreas

          --
          Warum nennt sich Andreas hier MudGuard?
          O o ostern ...
          Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
          1. Hi,

            Nur PHP ist zu blöd dafür, ein Array draus zu machen, wenn der Name keine [] enthält - und läßt nur den letzten Wert durch ...
            Sagt wer?

            u.a. ich.

            Afaik gibt es keine Regel, wie genau der Query String zu parsen ist[1] - ebenso definiert HTML in keiner Weise, wie der logische Aufbau der name-Attribute beschaffen sein muss. Im Falle von PHP ist es jedenfalls nur Konsequent, da dieselbe Behandlung/Logik für Interne und für extern zugeführte variablen Verwandt wird

            naja, ich finde es sehr unlogisch, daß von mehreren Parametern nur einer zur Verfügung steht.

            Wieso? Der Nachfolgende überschreibt den Vorhergehenden.

            Und solltest du nicht zufrieden sein, kannst du die bereitgestellten Superglobalen Arrays ja wegschmeissen und selbst nach beliebigen Regeln erstellen.

            oder gleich mit einer Sprache arbeiten, die nicht einfach Parameter unterschlägt.

            Nachfolgende überschreibt den Vorhergehenden.

            [1] Man liest zwar an allen Ecken und enden, dass es PHP falsch macht, aber "alle anderen CGI-Anwendungen richtig", aber man kann nirgends eine Regel finden, wie es denn zu sein hat

            Naja - es ist halt total unlogisch,

            Es ist innerhalb der Sprache konsistent - ich verstehe nicht, was daran unlogisch ist.

            daß Parameter im Request einfach mal so unterschlagen werden.

            Wird er auch nicht, der Nachfolgende überschreibt den Vorhergehenden.

            Soweit ich weiß, kann man das ja auch nicht in der php.ini umkonfigurieren.

            Nein, kann man afaik nicht.

            Und soweit ich weiß, kommt auch kein Notice/Error/Warning, daß auf den unterschlagenen Parameter hinweist.

            Wozu auch? Wenn ich $var = 1; $var = 2; notiere, dann bekomme ich ebenfalls keine Meldung, dass ich eine Variable überschreibe, die schon existiert hat.

            1. Danke schonmal für die Hilfe.. allerdings habe ich nicht wirklich verstanden wie mir das jetzt weiter helfen soll Oo
              ich habe ehrlich gesagt nicht einen blassen schimmer wie dieser Code mir bei meinen Problem helfen sollte v.v

              achja, ich habe inzwischen mal Ajax angeschaut und es versucht darüber zu machen

              function NinjaAdd(){  
              var name = document.getElementsByTagName("div")[document.forms.length-1].id; ajax_loadContent(name,'Form.php');}  
              
              

              mein Gedanke dabei war es, am ende jeder Form Blockelemente (also div, hoffe die heißen so richtig) zu setzen und immer an der letzten ein Neues Formular dran zu hängen, allerdings klappt das nicht so gut wie ursprünglich Gedacht. Beim ersten Durchlaufen dieser Funktion (die im übrigen ein php element aufruft, welches die form includet) passiert gar nix, beim zweiten mal erscheint auf den bildschirm nur ein weises Blatt mit einer "4"

              daher scheint dies nicht sonderlich zu funktionieren.. kennt ihr ein besseres script/eine bessere Methode?

              1. Hat denn keiner von euch eine Idee?
                Ich wäre sehr dankbar für jeden Hinweis