Zum Inhalt springen

aus einem formular mehrere Seiten ansteuern


MoechtegernFI

Empfohlene Beiträge

Hallo Zusammen!

Ich habe mittels HTML und PHP eine Seite erstellt, auf der ich mittels mehrerer Buttons verschiedene Seiten ansteuern will. Einige der Buttons und die Checkboxen sind mittels PHP dynamisch erstellt worden.

JavaScript soll überprüfen ob eine der Checkboxen gesetz ist und wenn button1gesetzt ist, mittels eines window.confirm nochmal nachfragen, ob wirklich alles abgeschickt werden soll.

Die dynamisch generierten Buttons sollen ein neues Fenster öffnen, welches wieder Informationen zu den mit den einzelnen Buttons zusammenhängenden Datensätzen mit PHP darstellt.

Das funktioniert soweit auch alles bis auf folgende Probleme:

Ist keine Checkbox ausgewählt und ich button1 drücke, wird nach dem alert die Seite neu geladen.(was er nicht tun soll)

Klicke ich auf einen der dxnamisch generierten buttons, öffnet er das neue Fenster mit Seite1 und stellt auch alles einwandfrei dar.... das macht er dann aber auch wenn ich danach auf button1 klicke und dann soll er ja Seite2 öffnen.

Desweiteren bin ich was JavaScript angeht ne ziemliche Flasche und kann mir nicht mehr selbst helfen.

Mittlerweile sitz ich schon 2 volle Tage an diesem Problem und werd solangsam GAGA.

Hoffentlich kann mir jemand helfen.

Hier der Quellcode:

(Das Form ist gekürzt... wäre sonst zuviel des guten ;) )


<form name=\"allang\" onsubmit=\"return checkbox()\">


<input type=\"submit\" value=\"abschicken\" name=\"button1\"

 onClick=\"checkbox(this.name)\">


 <input type=\"submit\" name=\"pos" .$i ."\" value=\"" .$numberbp ."\"

 class=\"button\" onClick=\"this.form.target='blank';

 this.form.action='bewertungenp.php';this.form.method='post';\">

  // ein dynamisch generierter button    



        <script language=\"JavaScript\">


        function checkbox(button)

        {

          checked = true;

          anz = " .$total .";


          if(anz > 15)

          {

             anz = \"15\";

          }


          if(button==\"button1\")  //prüfen ob button1 gesetzt ist

          {

            a=0;


            for (i=1; i<=(anz) ; i++ ) // prüfen ob eine der dynamisch generierten Checkboxen gesetzt ist

            {                                                                

              feld1=eval(\"document.all.check\"+i);


              if (feld1.checked == true) //wenn checkbox gesetzt ist, a auf 1 setzen

              {

                a=1;

              }

            }


            if(a<1)

             {

              alert('Bitte wählen Sie eine Checkbox aus!');

              checked = false;

            }


            if(checked == true)

            {

                text = \"wirklich weiter?\";

                box = window.confirm(text);


                if(box == true)

                {

                  document.allang.target = \"main\";

                  document.allang.method = \"post\";

                  document.allang.action = \"seite2.php\";

                  checked = true;

                }

                else

                {

                  checked = false;

                }

            }

          }

          return checked;

        }

        </script>

Danke im Voraus,

Boiorix

Link zu diesem Kommentar
Auf anderen Seiten teilen

1. such' dir mal ein Template-System damit du den Code nicht in PHP ausgeben musst.

2. Javascript-Funktionen soweit möglich immer an den Anfang der Seite :) dient der Übersicht und damit steht fest das die Funktion überall zur Verfügung steht.

3. Du benutzt überall <input type="submit">, das das Formular da abgeschickt wird, also die seite neu lädt, ist normal.

versuch mal eine Funktion zu schreiben die deine Javascript-Optionen ausführt und dann ein form.submit(); macht. Damit kannst du sichergehen das deine JS-Befehle ZUERST ausgeführt werden.

<input type="button" ist da anzubieten. Vorsicht ! <button....> funktioniert je nach browser und schreibweise wie ein Submit :(

anstatt document.formname gib dem Formular mal eine ID und mach dann document.getElementById() ... is sicherer ^^

ich hoffe die tips helfen dir ein wenig, versuch' auf jeden fall mal nicht überall mit type="submit"'s zu arbeiten....

Link zu diesem Kommentar
Auf anderen Seiten teilen

Vielen Dank für deine Hilfe!

Ich hab die Submits nun alle durch buttons ersetzt und es scheint soweit alles zu klappen..... :D:D

.......bis auf eine Kleinigkeit:

Aus irgend einem Grund werden die Namen der Buttons nicht mitgeschickt.

Und dementsprechend springt er auf der nächsten Seite nicht ins If(isset()).

Link zu diesem Kommentar
Auf anderen Seiten teilen

So......

Ich habe nun


<input type=\"submit\" value=\"abschicken\" name=\"button1\"

 onClick=\"checkbox(this.name)\">

in

<button name=\"button1\"

 onClick=\"checkbox(this.name)\">abschicken</button>

und im JavaScript

           if(box == true)

                {

                  document.allang.target = \"main\";

                  document.allang.method = \"post\";

                  document.allang.action = \"seite2.php\";

                  checked = true;

                }

in

           if(box == true)

                {

                  document.allang.target = \"main\";

                  document.allang.method = \"post\";

                  document.allang.action = \"seite2.php\";

                  checked = true;

                  document.allang.submit();

                }

abgeändert (die dynamisch generierten Buttons habe ich wieder als submit-Buttons definiert) und schon funktioniert der Spass :marine .... ber auch nur im IE.

Firefox läd die Seite nach dem winow.confirm immernoch neu.

Aber das Übel geh ich jetzt einfach mal ein(solange ich keine andere Lösung hab).

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hier mal ein Ansatz,...


if ( !empty($_POST['button1'])) {
//Button 1 wurde gedruckt
include( 'button1.action.php');
} elseif ( !empty( $_POST['button2')) {
//Button 2 wurde gedruckt
include( 'button2.action.php');
} elseif ( !empty( $_POST['button3')) {
//Button 3 wurde gedruckt
include( 'button3.action.php');
} else {
include( 'form.php');
}
[/PHP]

form.php

[PHP]
<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
<input type="submit" name="button1"/>
<input type="submit" name="button2"/>
<input type="submit" name="button3"/>
</form>

Gruß,

Markus

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke für Ansatz, den hab ich jetzt mal testweise umgesetzt und funktioniert auch soweit.

Feine Sache mit dem include...

Aber da ich ja ein alert und ein window.confirm brauche, nach denen der Browser die Seite ja nicht neu laden soll,

komme ich doch nicht drum herum, das mit nem submit() innerhalb der Javascript-Funktion abzuschicken?

(was zumindest beim IE funktioniert)

Oder reden wir jetzt alle irgendwie aneinander vorbei? :confused:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Kann es sein daß Firefox sich mit dem <button>-Tag nicht richtig verträgt??

Firefox übermittelt den namen des Buttons nicht... was IE wiederum tut.

Dann hab ich mir gedacht, machste halt wieder nen Submit-Button draus und nutzt stop(); damit die Seite nicht wieder neu läd welches beim FF funktioniert aber beim IE wieder nicht.

Hatte man nicht vor 20 Jahren schon die Diskussion aufgeworfen dass alles einheitlicher werden soll? :rolleyes:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...