Gaucho: Radio OnClick mit Javascript innerhalb eines PHP-Formulars

Hallo Freunde,
habe ein Problem, daß mir schon den ganzen Tag Kopfschmerzen bereitet. Habe ein Formular mit Eingabefeldern und radio-buttons. Das Problem ist, daß sobald ein Radio angeclickt wird, soll die Seite erneut geladen werden, weil dadurch noch optionale Felder sichtbar werden sollen.
So wie es aussieht geht das nur mit Javascript, ich kriegs leider nicht hin. Das Problem ist ja daß PHP Serverseitig verarbeitet wird, Javascript Clientseitig. Wie kriege ich Javascript dazu das Formular an den Server zur weiteren Verarbeitung zu schicken. Hab schon einiges probiert, aber nichts will funktionieren.

<?
if (!isset($_POST['radio'])) $_POST['radio'] = 0;
if( isset( $_POST['submit']))
{

tu was!!!!!!

}

?>

<html>
<body>
<form name="eingabe" action="<? echo $_SERVER['PHP_SELF'] ?>" method="post" >
<tr>
<td>feld1: </td>
<td><input type="text" name="feld1" size="20" value="<? echo $_POST['feld1'] ?>"> </td>
</tr>
<tr>
<td>Typ: </td>
<td><input type="radio" name="radio" value="0" <? if ($_POST['radio'] == 0) echo "checked" ?>">Wert1  <input type="radio" name="radio" <? if ($_POST['radio'] == 1)echo "checked" ?> value="1">Wert2 </td>
</tr>
<?
if($_POST['radio'] == 1)
{
echo "<tr><td>feld2: </td>";
echo "<td><input type='text' name='feld2' size='20' value='".$_POST['feld2']."' > </td></tr>";
}
?>
</table>
<input type="submit" name="submit" value="senden">

</form>
</body>
</html>

So, wenn ich das 2 Radio anclicke und dann unten mit submit das Formular erneut lade, bleibt das 2 Radio "checked", und das optionale Feld erscheint.
Das ist aber nicht der Sinn und Zweck der Übung, da das anclicken eines Radios als Event abgefangen werden soll, das Formular neu geladen werden soll, und die bereits vorhandenen Daten erhalten bleiben sollen.
Nach langem Suchen, bin ich auf Javascript gestoßen, nämlich in etwa so:
<input .......... onClick="window.location.reload()">

was allerdings bewirkt, daß die Variablen verloren sind,
in einem Forum habe ich was gefunden, das auch funktionieren soll, nämlich:
<input .......... onClick="document.eingabe.Submit()">

das funktioniert nicht, kriege einen Js-Fehler, nämlich daß das Objekt die Aktion/Methode nicht unterstützt.

<input .......... onClick="history.go(0)">,
etc.

Weiß jemand von Euch eine Lösung?

Wäre für jede Hilfe dankbar.

Gruß

Gaucho

  1. hallo,

    wieso machst du es nicht mit Javascript, php hat keine Ahnung über Formulare und html-Elemente - wie du schon sagtest. Also mit Javascript könntest du es so machen, dass du einfach beim Klick-Event eine Methode aufruft die das Objekt anhand der Id oder des Namen identifizieren kann und die Benötigte Eigenschaft kann schon gesetzt werden. Wenn du es mit php machen möchtest, dann musstest du die Daten (also Schlüssel-Wert-Paare) an die URL anhängen und danach mit _GET auslesen, oder wenn die sich auf einer Form befinden dann mit _POST nachdem das Formular abgeschickt wurde. Wenn das etwas beim Anklicken des Optionsbuttons tun soll, dann solltest du javascript nehmen, meiner meinung nach... Oder du könntest die Daten, die vom Server geschickt werden (also mit php verarbeitet werden) nehmen und als Parameter an eine javascriptFunktion übergeben. Das würde dann so ausschauen:

    //ist nur ein Beispiel !

    <script language= "JavaScript" type="text/javascript">
    //damit hatte ich Probleme, weil das status_fenster nicht gefunden wurde
    function status_zeigen(status) {
       var position = null;
       //testen, ob es gibt
       if (document.getElementsByName("status_fenster") == null)  return;
       position = document.getElementsByName("status_fenster")[0].length;
       var status_Zeile = document.createElement("option");
       status_Zeile.text = status;
       document.getElementsByName("status_fenster")[0].add(status_Zeile, position+1);
    }
    </script>

    <?php

    $status = "";

    $conn = new Connection('localhost', $_POST['kennung'], $_POST ['password']);
    if($conn->get_verbindung() == 0) {
       $status = "Verbindung konnte nicht hergestellt werden.";
    } else {
       $status = "Verbindung wurde erfolgreicht hergestellt.";
    }

    //javascript, das in php integriert ist

    function status_zeigen($st) {
     echo "<script language="JavaScript">\n";
     echo "status_zeigen('$st');\n";
     echo "</script>";
    }
    status_zeigen($status);
    ?>

    cu kati

    Hallo Freunde,
    habe ein Problem, daß mir schon den ganzen Tag Kopfschmerzen bereitet. Habe ein Formular mit Eingabefeldern und radio-buttons. Das Problem ist, daß sobald ein Radio angeclickt wird, soll die Seite erneut geladen werden, weil dadurch noch optionale Felder sichtbar werden sollen.
    So wie es aussieht geht das nur mit Javascript, ich kriegs leider nicht hin. Das Problem ist ja daß PHP Serverseitig verarbeitet wird, Javascript Clientseitig. Wie kriege ich Javascript dazu das Formular an den Server zur weiteren Verarbeitung zu schicken. Hab schon einiges probiert, aber nichts will funktionieren.

    <?
    if (!isset($_POST['radio'])) $_POST['radio'] = 0;
    if( isset( $_POST['submit']))
    {

    tu was!!!!!!

    }

    ?>

    <html>
    <body>
    <form name="eingabe" action="<? echo $_SERVER['PHP_SELF'] ?>" method="post" >
    <tr>
    <td>feld1: </td>
    <td><input type="text" name="feld1" size="20" value="<? echo $_POST['feld1'] ?>"> </td>
    </tr>
    <tr>
    <td>Typ: </td>
    <td><input type="radio" name="radio" value="0" <? if ($_POST['radio'] == 0) echo "checked" ?>">Wert1  <input type="radio" name="radio" <? if ($_POST['radio'] == 1)echo "checked" ?> value="1">Wert2 </td>
    </tr>
    <?
    if($_POST['radio'] == 1)
    {
    echo "<tr><td>feld2: </td>";
    echo "<td><input type='text' name='feld2' size='20' value='".$_POST['feld2']."' > </td></tr>";
    }
    ?>
    </table>
    <input type="submit" name="submit" value="senden">

    </form>
    </body>
    </html>

    So, wenn ich das 2 Radio anclicke und dann unten mit submit das Formular erneut lade, bleibt das 2 Radio "checked", und das optionale Feld erscheint.
    Das ist aber nicht der Sinn und Zweck der Übung, da das anclicken eines Radios als Event abgefangen werden soll, das Formular neu geladen werden soll, und die bereits vorhandenen Daten erhalten bleiben sollen.
    Nach langem Suchen, bin ich auf Javascript gestoßen, nämlich in etwa so:
    <input .......... onClick="window.location.reload()">

    was allerdings bewirkt, daß die Variablen verloren sind,
    in einem Forum habe ich was gefunden, das auch funktionieren soll, nämlich:
    <input .......... onClick="document.eingabe.Submit()">

    das funktioniert nicht, kriege einen Js-Fehler, nämlich daß das Objekt die Aktion/Methode nicht unterstützt.

    <input .......... onClick="history.go(0)">,
    etc.

    Weiß jemand von Euch eine Lösung?

    Wäre für jede Hilfe dankbar.

    Gruß

    Gaucho

    1. Hallo Kati,

      hab letzte Nacht die selbe Befürchtung gehabt, nämlich das in JavaScript realisieren zu müssen, bin zwar nicht besonders begeistert, da ich von JavaScript eigentlich keine Ahnung habe, aber so wie es scheint, bleibt mir zur Zeit wohl nichts anderes übrig.

      Meine Frage wäre nun:

      kann man so etwas realisieren wie folgendes (nat. in Js):

      function insertfields()
      {
      <tr><td>ein Eintrag:</td><td><input type="text"></td></tr>
      }

      und dann im eigentlichen Formular:

      <form>
      <table>
      <td><input type="radio" name="radio" value="0" >Wert1  <input type="radio" name="radio" value="1" onClick="insertfields()">Wert2 </td>
      </tr>

      Geht so etwas?

      Danke im Voraus

      Gaucho

      hallo,

      wieso machst du es nicht mit Javascript, php hat keine Ahnung über Formulare und html-Elemente - wie du schon sagtest. Also mit Javascript könntest du es so machen, dass du einfach beim Klick-Event eine Methode aufruft die das Objekt anhand der Id oder des Namen identifizieren kann und die Benötigte Eigenschaft kann schon gesetzt werden. Wenn du es mit php machen möchtest, dann musstest du die Daten (also Schlüssel-Wert-Paare) an die URL anhängen und danach mit _GET auslesen, oder wenn die sich auf einer Form befinden dann mit _POST nachdem das Formular abgeschickt wurde. Wenn das etwas beim Anklicken des Optionsbuttons tun soll, dann solltest du javascript nehmen, meiner meinung nach... Oder du könntest die Daten, die vom Server geschickt werden (also mit php verarbeitet werden) nehmen und als Parameter an eine javascriptFunktion übergeben. Das würde dann so ausschauen:

      //ist nur ein Beispiel !

      <script language= "JavaScript" type="text/javascript">
      //damit hatte ich Probleme, weil das status_fenster nicht gefunden wurde
      function status_zeigen(status) {
         var position = null;
         //testen, ob es gibt
         if (document.getElementsByName("status_fenster") == null)  return;
         position = document.getElementsByName("status_fenster")[0].length;
         var status_Zeile = document.createElement("option");
         status_Zeile.text = status;
         document.getElementsByName("status_fenster")[0].add(status_Zeile, position+1);
      }
      </script>

      <?php

      $status = "";

      $conn = new Connection('localhost', $_POST['kennung'], $_POST ['password']);
      if($conn->get_verbindung() == 0) {
         $status = "Verbindung konnte nicht hergestellt werden.";
      } else {
         $status = "Verbindung wurde erfolgreicht hergestellt.";
      }

      //javascript, das in php integriert ist

      function status_zeigen($st) {
      echo "<script language="JavaScript">\n";
      echo "status_zeigen('$st');\n";
      echo "</script>";
      }
      status_zeigen($status);
      ?>

      cu kati

      Hallo Freunde,
      habe ein Problem, daß mir schon den ganzen Tag Kopfschmerzen bereitet. Habe ein Formular mit Eingabefeldern und radio-buttons. Das Problem ist, daß sobald ein Radio angeclickt wird, soll die Seite erneut geladen werden, weil dadurch noch optionale Felder sichtbar werden sollen.
      So wie es aussieht geht das nur mit Javascript, ich kriegs leider nicht hin. Das Problem ist ja daß PHP Serverseitig verarbeitet wird, Javascript Clientseitig. Wie kriege ich Javascript dazu das Formular an den Server zur weiteren Verarbeitung zu schicken. Hab schon einiges probiert, aber nichts will funktionieren.

      <?
      if (!isset($_POST['radio'])) $_POST['radio'] = 0;
      if( isset( $_POST['submit']))
      {

      tu was!!!!!!

      }

      ?>

      <html>
      <body>
      <form name="eingabe" action="<? echo $_SERVER['PHP_SELF'] ?>" method="post" >
      <tr>
      <td>feld1: </td>
      <td><input type="text" name="feld1" size="20" value="<? echo $_POST['feld1'] ?>"> </td>
      </tr>
      <tr>
      <td>Typ: </td>
      <td><input type="radio" name="radio" value="0" <? if ($_POST['radio'] == 0) echo "checked" ?>">Wert1  <input type="radio" name="radio" <? if ($_POST['radio'] == 1)echo "checked" ?> value="1">Wert2 </td>
      </tr>
      <?
      if($_POST['radio'] == 1)
      {
      echo "<tr><td>feld2: </td>";
      echo "<td><input type='text' name='feld2' size='20' value='".$_POST['feld2']."' > </td></tr>";
      }
      ?>
      </table>
      <input type="submit" name="submit" value="senden">

      </form>
      </body>
      </html>

      So, wenn ich das 2 Radio anclicke und dann unten mit submit das Formular erneut lade, bleibt das 2 Radio "checked", und das optionale Feld erscheint.
      Das ist aber nicht der Sinn und Zweck der Übung, da das anclicken eines Radios als Event abgefangen werden soll, das Formular neu geladen werden soll, und die bereits vorhandenen Daten erhalten bleiben sollen.
      Nach langem Suchen, bin ich auf Javascript gestoßen, nämlich in etwa so:
      <input .......... onClick="window.location.reload()">

      was allerdings bewirkt, daß die Variablen verloren sind,
      in einem Forum habe ich was gefunden, das auch funktionieren soll, nämlich:
      <input .......... onClick="document.eingabe.Submit()">

      das funktioniert nicht, kriege einen Js-Fehler, nämlich daß das Objekt die Aktion/Methode nicht unterstützt.

      <input .......... onClick="history.go(0)">,
      etc.

      Weiß jemand von Euch eine Lösung?

      Wäre für jede Hilfe dankbar.

      Gruß

      Gaucho

  2. Hi,

    Wie kriege ich Javascript dazu das Formular an den Server zur weiteren Verarbeitung zu schicken. Hab schon einiges probiert, aber nichts will funktionieren.

    http://selfhtml.teamone.de/javascript/objekte/forms.htm#submit sagt document.formularname.submit();

    [...] da das anclicken eines Radios als Event abgefangen werden soll, das Formular neu geladen werden soll, und die bereits vorhandenen Daten erhalten bleiben sollen.

    Das ist aber äußerst umständlich. Warum schreibst du das zusätzliche Element nicht in die Seite und machst es erst nach Auswahl der gewünschten Elemente sichtbar?

    Nach langem Suchen, bin ich auf Javascript gestoßen, nämlich in etwa so:
    <input .......... onClick="window.location.reload()">
    was allerdings bewirkt, daß die Variablen verloren sind,

    Klar, wenn dein serverseitiges Script das Formular nicht mit den gewünschten Einstellungen generiert, sondern immer den ursprünglichen Zustand schickt.

    LG Orlando

    --
    SELF-TREFFEN 2002
    http://www.rtbg.de/selftreffen/
    http://www.megpalffy.org/temp/penneninhh.html

    1. Hi,

      Wie kriege ich Javascript dazu das Formular an den Server zur weiteren Verarbeitung zu schicken. Hab schon einiges probiert, aber nichts will funktionieren.

      http://selfhtml.teamone.de/javascript/objekte/forms.htm#submit sagt document.formularname.submit();

      [...] da das anclicken eines Radios als Event abgefangen werden soll, das Formular neu geladen werden soll, und die bereits vorhandenen Daten erhalten bleiben sollen.

      Das ist aber äußerst umständlich. Warum schreibst du das zusätzliche Element nicht in die Seite und machst es erst nach Auswahl der gewünschten Elemente sichtbar?

      Nach langem Suchen, bin ich auf Javascript gestoßen, nämlich in etwa so:
      <input .......... onClick="window.location.reload()">
      was allerdings bewirkt, daß die Variablen verloren sind,

      Klar, wenn dein serverseitiges Script das Formular nicht mit den gewünschten Einstellungen generiert, sondern immer den ursprünglichen Zustand schickt.

      LG Orlando

      --
      SELF-TREFFEN 2002
      http://www.rtbg.de/selftreffen/
      http://www.megpalffy.org/temp/penneninhh.html

      Hallo Orlando,

      danke erstmal, hab ja gesagt, habe es so bereits probiert, kriege aber eben diese Fehlermeldung: "Objekt unterstützt Eigenschaft oder Methode nicht".

      Gruß

      Gaucho

  3. Hi,

    hatte das selbe problem ;-)
    Habe dann bei den radiobuttons folgendes getan:
     <input type="radio" name="partner" value="1" onClick="document.form1.submit(action='formular.php')">

    wobei ich beim aufrufen von formular.php immer checke wie das mit $partner aussieht je nach dem wert erzeuge ich dann die entsprechenden felder.

    gruss

    michel gelin

    1. Hi,

      hatte das selbe problem ;-)
      Habe dann bei den radiobuttons folgendes getan:
      <input type="radio" name="partner" value="1" onClick="document.form1.submit(action='formular.php')">

      wobei ich beim aufrufen von formular.php immer checke wie das mit $partner aussieht je nach dem wert erzeuge ich dann die entsprechenden felder.

      gruss

      michel gelin

      Hallo Michael,

      die Idee würde mir schon ganz gut gefallen, sie funktioniert aber leider bei mir nicht, bekomme immer noch die selbe Fehlermeldung: "Das Objekt unterstützt diese Eigenschft oder Methode nicht".
      So wie es aussieht muß ich wohl doch die Logik (PHP) vom Layout und den Eingabefunktionen trennen und diese in JavaScript realisieren, habe von JavaScript nur leider NULL Ahnung.

      Wenn Du aber eine Idee haben solltest warum es bei mir nicht funktioniert, dann bitte posten.

      Danke im Voraus

      Gruß
      Gaucho