nadja: Hiiilfe!! variablen werden nicht übergeben

Hallo,
Stehe vor folgendem Problem.
Bastle an einem Umfrageformular. Bei gewissen NICHT erfüllten Kriterien soll die Umfrage abgebrochen werden können.
Soweit so gut.
Ich muß aber alle Werte, die bis zu diesem Abbruch eingegeben wurden, in einer DB abspeichern.
Tja, und genau da beginnt mein Problem.
Zum besseren Verständnis vielleicht kurz wie das Formular ausssieht.

<form name="oIndex" onSubmit="return testIndex();" action="seite2.php" method="post">
<table>
<tr>
<td>Vorname:</td>
</tr>
<tr>
<td><input type="text" name="Vorname"></td>
</tr>
<tr>
<td>Nachname:</td>
</tr>
<tr>
<td><input type="text" name="Nachname"></td>
</tr>
<tr>
<td>Wurden Sie über blabla informiert:</td>
</tr>
<tr>
<td>
<input type="checkbox" name="Info" value="Ja">Ja<br>
<input type="button" value="Test abbrechen" onClick="self.location.href='abbruch.php?Vorname=<?=$Vorname?>&&Nachname=<?=$Nachname?>'">Wenn nein, Test abbrechen.
</td>
</tr>
<tr>
<td>
<input type="submit" value="weiter">
</td>
</tr>
</table>
</form>

Wie schaffe ich es, das beim Anklick des Buttons für Test abbrechen die Werte, die vor diesem Button eingegeben wurden, an eine Seite mit dem Namen abbruch.php übergeben werden??????
Muß da das Formular nochmals gecheckt werden oder wie funktioniert so etwas.

Danke, Danke für jede Hilfe

Nadja

  1. Deine Daten werden erst auf dieser Seite eingegeben.

    Da PHP Serverseitiges Scripting ist, sind an dieser Stelle die Variablen $Vorname und $Nachname nicht gefüllt.

    schreibe eine javascript anweisung, die aus den formularfeldern die werte aussliest, und als querysting an die abbruch.php schickt.

    z.B. (Grobes Beispiel, funktioniert vemrutlich mindestens aufgrund von tippfehlern nicht)

    function abbrechen() {
       var Vorname = document.forms["oIndex"].Vorname.value;
       var Nachname = document.forms["oIndex"].Nachname.value;
       location.href = "abbruch.php?Vorname=" + Vorname + "&Nachname=" + Nachname;
       return;
    }

    Gruß

    Phil

    1. Hallo,
      Habe das jetzt auf diese Weise probiert:
      <input type="button" value="Test abbrechen" onClick="javascript:self.location.href='abbruch.php?a_1_Tag='+document.getElementbyName('a_1_Tag').value;''">

      Es kommt aber immer die Fehlermeldung:

      Das Objekt unterstützt diese Methode oder Eigenschaft nicht.

      Geht aber auch nicht mit:
      <input type="button" value="Test abbrechen" onClick="javascript:self.location.href='abbruch.php?a_1_Tag='+document.forms[0].elements[0].value ('a_1_Tag');''">

      Was läuft jetzt falsch????????????

      Danke Nadja

      1. Hallo Nadja,

        <input type="button" value="Test abbrechen" onClick="javascript:

        "javascript:" hat in Event-Handlern immernochnichts zu suchen.

        self.location.href='abbruch.php?a_1_Tag='+document.getElementbyName('a_1_Tag').value;''">

        es heißt ja auch getElementsByName('a_1_Tag')[0] (also mit einem 's' hinter Element, einem großen 'B' sowie einem [0] hintendran, da getElementsByName ein Array zurückgibt) (siehe  auch http://selfhtml.teamone.de/javascript/objekte/document.htm#get_elements_by_name)

        Es kommt aber immer die Fehlermeldung:
        Das Objekt unterstützt diese Methode oder Eigenschaft nicht.

        verwende Mozilla oder Opera, die spucken aussagekräftigere Fehlermeldungen aus.

        Grüße aus Nürnberg
        Tobias

        --
        Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
      2. nimm mal diesen javascript teil raus.

        <input type="button" name="abbr" value="Test abbrechen">

        du mußt dann auf der seite wo du das formular hinschickst (seite2.php)  deine if ... else ... prüfung machen, ließ mal meine Antwort von 10:48  und was dort dranhängt.

        tschü

        Viel Spaß noch.

      3. Hallo,
        Mit php hab ich das auch schon probiert.

        <?
        if($submit=='oIndex')
        {
        ?>
        <form name="oIndex" onSubmit="return testIndex();" action="seite2.php" method="post">

        <input type="text" name="Vorname">
        <input type="text" name="Nachname">

        <input type="checkbox" name="Frage1">
        <input type="submit" name="oAbbruch" value="Abbruch">

        <input type="text" name="Ort">
        <input type="text" name="Plz">

        <input type="submit" name="oIndex" value="weiter">
        </form>
        <?
        }
        else
        {
        ?>
        <form action="abbruch.php" method="post">

        <input type="text" name="Vorname">
        <input type="text" name="Nachname">

        <input type="checkbox" name="Frage1">
        <input type="submit" name="oAbbruch" value="Abbruch">

        <input type="text" name="Ort">
        <input type="text" name="Plz">

        <input type="submit" name="oIndex" value="weiter">
        </form>
        <?
        }
        ?>

        Klappt aber auch nicht. Es wird immer der selbe submit button (oIndex) verwendet.

        lg
        Nadja

        1. Hi du,

          mach dein formular mal so.

          <form name="oIndex" onSubmit="return testIndex();" action="seite2.php" method="post">
          <table>
          <tr>
          <td>Vorname:</td>
          </tr>
          <tr>
          <td><input type="text" name="Vorname"></td>
          </tr>
          <tr>
          <td>Nachname:</td>
          </tr>
          <tr>
          <td><input type="text" name="Nachname"></td>
          </tr>
          <tr>
          <td>Wurden Sie über blabla informiert:</td>
          </tr>
          <tr>
          <td>
          <input type="checkbox" name="Info" value="Ja">Ja<br>
          <input type="submit" name="abbr" value="Test abbrechen" onClick="self.location.href='abbruch.php?Vorname=<?=$Vorname?>&&Nachname=<?=$Nachname?>'">Wenn nein, Test abbrechen.
          </td>
          </tr>
          <tr>
          <td>
          <input type="submit" value="weiter">
          </td>
          </tr>
          </table>
          </form>

          die seite2.php so

          if(isset($abbr))
          {
             hier kommt jetzt das zeug rein, was in deiner abbrechen.php - drin steht
          }
          else
          {
             hier kommt rein, was in deiner seite2.php - vorher drin stand
          }

          Hast du register_global auf on gestellt bzw. ist es auf on.

          Was soll diese funktion ausgeben testIndex();???

      4. Hi again, auch wenn ich dir die php methode empfehle, die jens gepostet hat, antworte ich trotzdem (da seht ihr, wie langweilig mir hier ist!)

        <input type="button" value="Test abbrechen" onClick="javascript:self.location.href='abbruch.php?a_1_Tag='+document.getElementbyName('a_1_Tag').value;''">

        wie schon in einer anderen antwort steht, getElementsByName oder getElementById wenn du statt name="" id="" benutzt.

        Es kommt aber immer die Fehlermeldung:

        Das Objekt unterstützt diese Methode oder Eigenschaft nicht.

        richtig, sonen mist spuckt der internet explorer aus,
        entweder du schnappst dir mozilla zum testen, was aber auch nciht imemr klappt, da mozilla javascript manchmal schafft, wo der ie nörgelt, deshalb gibt es von m$ den script debugger, nach dem dann auch der ie aussagekräftige fehlermeldungen bringt.

        Geht aber auch nicht mit:
        <input type="button" value="Test abbrechen" onClick="javascript:self.location.href='abbruch.php?a_1_Tag='+document.forms[0].elements[0].value ('a_1_Tag');''">

        jap, das glaub ich dir. erstens, ist das feld wirklich element 0 in diesem formular, zweitens, was ist dieses ('a_1_Tag') da?? lass das mal weg

  2. Hi,

    zu guter Anfang: Ein FORUM ist für Hilfestellungen da, man braucht nicht extra vor jeden Beitrag "HIIIIILLFFE!!!" schreiben!

    Eigentlich müsste man aufgrund dessen die Hilfe verweigern, weil Heeelfen (!!) kann ich Dir nicht, höchstens helfen. Wenn Du glaubst, dass Deine Frage deswegen schneller beantwortet wird, lass Dich aufklären: Das Gegenteil geschieht!

    <input type="button" value="Test abbrechen" onClick="self.location.href='abbruch.php?Vorname=<?=$Vorname?>&&Nachname=<?=$Nachname?>'">

    Was Du da machst ist völliger Humbuck ;), weil Du versuchst Werte (Vorname + Nachname) über PHP auszugeben, obwohl diese noch gar nicht im PHP definiert wurden! Nur weil Du in Deinem Formular zwei Eingabefelder mit diesen Namen hast, sind das noch lange keine PHP Variabeln! Wenn Du die auslesen willst, musste Du Dich schon des JavaScripts bedienen. Das sieht dann so aus:

    <input type="button" value="Test abbrechen" onClick="javascript:self.location.href='abbruch.php?Vorname='+document.getElementbyName('Vorname').value+'&Nachname='+document.getElementbyName('Nachname').value;">

    Wobei hier die Unterstützung der Funktion getElementbyName() beachtet werden sollte. Sie funktioniert nicht in allen Browsern. Alternate eben document.forms[0].elements[0].value (Vorname) bzw. document.forms[0].elements[1].value (Nachname) verwenden.

    Gruss
    Stefan

  3. Hi Nadja,

    <form name="oIndex" onSubmit="return testIndex();" action="seite2.php" method="post">

    ...

    <input type="checkbox" name="Info" value="Ja">Ja<br>
    <input type="button" value="Test abbrechen" onClick="self.location.href='abbruch.php?Vorname=<?=$Vorname?>&&Nachname=<?=$Nachname?>'">Wenn nein, Test abbrechen.

    Ich weiß zwar nicht, was die Funktion testIndex() macht, aber ich lasse die mal drin. Hast du die geschrieben??

    Ich würde das so machen:

    <form name="oIndex" onSubmit="return testIndex();" action="seite2.php" method="post">

    ...

    <input type="checkbox" name="Info" value="Ja">Ja<br>
    <input type="button" name="abbr" value="Test abbrechen">

    Somit werden alles Daten an seite2.php geschickt, dort kannst du dann prüfen (mit if(isset($abbr)){test abbrechen wurde geklickt}else{ja wurde geklickt})

    Kannst dann ganz gemütlich nach $Vorname und so fragen.

    Das geht nur wenn du register_global auf on stehen hast, sonst must du das mit $_POST(abbr) oder so ähnlich machen.

    Das sollte gehen (hab das schon öfter so gemacht)

    Meld dich wenn's geklappt hat.

    Tschü

    1. Jap, so gehts natürlich auch ;o)

      1. Jap, so gehts natürlich auch ;o)

        ... und so ist das auch eleganter !

        Gruss
        Stefan

        1. ... und so ist das auch eleganter !

          womit du natürlich recht hast. Wenn möglich sollte man imemr auf JavaScript verzichten. je mehr man dem client überlässt, desto unsicherer kann mit beim ergebnis sein, dass die seite liefert.

          einziger einspruch den ich noch habe (stimem sonst ja zu 100% zu)

          solange der abbrechen button kein submit button ist, oder per javascript die onSubmit oder form.submit() funktion aufruft, passiert ja erstmal garnix ;-)

          1. einziger einspruch den ich noch habe (stimem sonst ja zu 100% zu)

            solange der abbrechen button kein submit button ist, oder per javascript die onSubmit oder form.submit() funktion aufruft, passiert ja erstmal garnix ;-)

            stimmt, hab ich übersehen

            <input type="checkbox" name="Info" value="Ja">Ja<br>
            <input type="submit" name="abbr" value="Test abbrechen">

            vielleicht sollte man dem hier auch noch einen namen geben

            <input type="submit" name="weiter" value="weiter">

            damit kannst du dann deine tests, welcher button geklickt wurde, machen wie du willst.

            Tschü

  4. Hallo Zusammen,
    Danke mal für Eure zahlreichen Antworten. Das Problem mit den Fehlermeldungen bei Javascript lag am falschen Syntax von getElementsByName. Hab ich falsch geschrieben. Werd aber versuchen, sobald ich etwas mehr Zeit habe, dieses Formular nur mit php zu steuern. Ist mit Sicherheit die bessere Methode da ich nicht auf Browserverionen oder Einstellungen des Clients angewiesen bin.
    Danke, Danke nochmals.

    lg
    Nadja