Christian: onclick - function / prob zwischen php & java

Frohe Ostern allerseits,

meine Problemstellung:
Mit einem Klick auf eine Checkbox soll eine feste Gruppe von anderen Checkboxen, deren Namen variabel sind, das checked-attribut bekommen oder verlieren.

Meine (noch?) nicht funktionierende Lösung:

im body:
mehrere Schleifen, die unter anderem die zu steuernden Checkboxen enthalten:

while($row = mysql_fetch_object($mysql_result)) {
    echo "<input type=checkbox name='".$row->id."check' value=1>";
    $ids[] = $row->id;
}

<input type="checkbox" name="ids_alle" onclick="ids_alle()">

vorm Body:
function ids_alle() {
echo "<script type='text/javascript'><!--";
  $anz = count($ids);
if (!$checked) {
  for ($i = 0; $i < $anz; $i++) {
   echo "document.multi.".$ids[$i]."check.checked = true;";
  }
  $checked = 1;
} else {
  for ($i = 0; $i < $anz; $i++) {
   echo "document.multi.".$ids[$i]."check.checked = false;";
  }
  $checked = 0;
}
echo "//--></script>";
}

Ich habe mit eigenen Funktionen sehr wenig Erfahrung. Ich nehme mal an, das ganze kann so nicht funktionieren, weil das Ganze jetzt innerhalb des Ausdrucks von OnClick passiert und die Java-Anweisungen für die anderen Checkboxen inklusive <script>-Tags dort nichts zu suchen haben.

Mir wäre wohl geholfen, wenn ich wüsste, wie Funktionen etwas an eine andere Stelle in den Quelltext "schreiben" können...

Eine andere Lösung wäre, das ganze nicht über eine PHP-Funktion zu machen, sondern über eine Java-Funktion. Das hatte ich erst vor, doch ich wusste nicht, wie ich die PHP-Variablen in Java-Variablen übersetzt kriege.

Viele Grüße
Christian

  1. type=checkbox soll natürlich type='checkbox' heißen - bevor jemand anderes meckert :)

    1. type=checkbox soll natürlich type='checkbox' heißen - bevor jemand anderes meckert :)

      dann fällt dir gleich bestimmt auch noch ein, dass du eigentlich JavaSCript meinst, oder? :-)

      1. Aja, wird die Abkürzung nicht gern gesehn? Ist JS besser als Java? Oder sollte ich gar auf Kosten der Übersichtlichkeit und meiner Produktivität immer JavaScript schreiben?

        1. Hallo Christian.

          Aja, wird die Abkürzung nicht gern gesehn?

          Welche? JavaScript hat nur die Abkürzung JS.

          Ist JS besser als Java?

          Es kommt auf den angzielten Einsatzzweck an.

          Oder sollte ich gar auf Kosten der Übersichtlichkeit und meiner Produktivität immer JavaScript schreiben?

          Wenn du Java verwenden willst, schreibe Java.
          Wenn du JavaScript verwenden willst, schreibe JavaScript (JS).

          Gruß, Ashura

          --
          Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:| ls:[ js:|
          Try it: Become an Opera Lover in 30 days
        2. Java wird in ganz anderen Bereichen eingesetzt als JavaScript. Du kennst doch sicherlich z.B. Java-Applets und meines Wissens nach werden auch manche Kaffeemaschinen mit Java programmiert ;)
          JavaScript findet im Web-Bereich sehr viel Verwendung und ist in keinem Fall mit Java gleichzusetzen (Java ist KEINE Abkürzung für JavaScript)

          1. Ach so! Ich dachte, diese Java-Applets werden auch mit JavaScript geschrieben - keine Ahnung davon...
            Wie man eine Kaffeemaschine mit JS programmieren soll, weiß ich jedoch auch nicht *g*

            1. Hallo

              Wie man eine Kaffeemaschine mit JS programmieren soll, weiß ich jedoch auch nicht *g*

              Eben nicht - die werden mit Java programmiert ;-)
              JS ist das was du gerade benutzt

              Michael

              1. Ja ja, das habe ich jetzt auch gerafft, danke ;)

                1. Wollte nur auf Nummer sicher gehen :-)

  2. Frohe Ostern allerseits,

    Danke, dir auch!

    vorm Body:
    function ids_alle() {
    echo "<script type='text/javascript'><!--";
      [...]

    Du startest da eine PHP-Funktion namens ids_alle(). In dieser Funktion gibst du dann den JavaScript-Code aus.

    Mit der Zeile:

    <input type="checkbox" name="ids_alle" onclick="ids_alle()">

    kannst du aber keine PHP-Funktion starten.

    Versuch mal eine JavaScript-Funktion mit dem Namen zu erstellen und die PHP-Funktion musst du natürlich auch irgendwo noch starten.

    1. Hallo Bevan,

      Mit der Zeile:

      <input type="checkbox" name="ids_alle" onclick="ids_alle()">
      kannst du aber keine PHP-Funktion starten.

      Ach so! Das leuchtet mir ein, daran hab ich nicht gedacht, als ich statt der JavaSCRIPT-Funktion eine PHP-Funktion geschrieben hab.

      Versuch mal eine JavaScript-Funktion mit dem Namen zu erstellen und die PHP-Funktion musst du natürlich auch irgendwo noch starten.

      Ja, hm... ich hab nicht wirklich einen Plan, wie das JS PHP sagt, dass es eine Funktion an einer bestimmten Stelle ausführen soll...

      1. Hi there,

        Ja, hm... ich hab nicht wirklich einen Plan, wie das JS PHP sagt, dass es eine Funktion an einer bestimmten Stelle ausführen soll...

        gar nicht, wenn der Browser eine JS-Anwendung ausführt, ist PHP schon längst gelaufen. Aus diesem Grunde kann PHP zwar JS-Anwendungen schreiben, JS aber keine PHP-Befehle...

        (document.write('<? echo $blabla;?>'); kann somit nie funktionieren ;)

        1. Hallo Klawischnigg.

          (document.write('<? echo $blabla;?>'); kann somit nie funktionieren ;)

          Verzeihung, wenn die Frage dämlich ist, aber warum sollte dies _nicht_ gehen? Bis auf die unsinnige erste Klammer ganz am Anfang sollte es JS doch möglich sein, einen String zu schreiben, der zuvor mittels PHP "eingeprägt" wurde...

          Oder denke ich in die falsche Richtung?

          Gruß, Ashura

          --
          Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:| ls:[ js:|
          Try it: Become an Opera Lover in 30 days
          1. Hallo

            Verzeihung, wenn die Frage dämlich ist, aber warum sollte dies _nicht_ gehen? Bis auf die unsinnige erste Klammer ganz am Anfang sollte es JS doch möglich sein, einen String zu schreiben, der zuvor mittels PHP "eingeprägt" wurde...

            Aber eine JavaScript-Funktion wird doch Clientseitig ausgeführt. Wie soll der Client dann die PHP-Anweisung "<? echo $blabla;?>" interpretieren? Ich nehme an, das würde einfach als Text ausgegeben.

            Oder denke ich jetzt irgendwie in die falsche Richtung? ;-)

            Michael

            1. Hi there,

              shit, jetzt hat mit Ashura verunsichert, ich glaub', mein Beispiel war doch nicht so schlecht, denn ich denke, der PHP-Interpreter ignoriert die <? - tags  in Anführungszeichen, ich probiers einmal aus...

              1. Hallo Klawischnigg.

                (...) denn ich denke, der PHP-Interpreter ignoriert die <? - tags  in Anführungszeichen, ich probiers einmal aus...

                Sofern drumherum kein <? ?> steht, müsste der Parser schon sehr kaputt sein, wenn er dies einfach ignorieren würde.

                Gruß, Ashura

                --
                Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:| ls:[ js:|
                Try it: Become an Opera Lover in 30 days
                1. Hi there,

                  (...) denn ich denke, der PHP-Interpreter ignoriert die <? - tags  in Anführungszeichen, ich probiers einmal aus...

                  Sofern drumherum kein <? ?> steht, müsste der Parser schon sehr kaputt sein, wenn er dies einfach ignorieren würde.

                  Jetzt endgültig, ich hab's ausprobiert und muß bekennen und ein für alle mal:

                  DU HAST RECHT!!!

                  Ist immer das gleiche: z'erst denken, dann schreiben....

                  1. Hallo Klawischnigg.

                    Jetzt endgültig, ich hab's ausprobiert und muß bekennen und ein für alle mal:

                    DU HAST RECHT!!!

                    Ich danke dir sehr, ich lache gerade herzhaft... (Nicht rechthaberisch gemeint.)
                    Es war aber auch eine schwere Geburt. ;)

                    Ist immer das gleiche: z'erst denken, dann schreiben....

                    Ich weiß, ich bin auch nicht besser. ;)

                    Gruß, Ashura

                    --
                    Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:| ls:[ js:|
                    Try it: Become an Opera Lover in 30 days
                  2. Schön, dass ich dummer User dazu anregen kann, dass ihr euch mal mit eurem Grundverständnis über die Interpreter- und Parservorgänge beschäftigt! =)
                    Auch wenn mir selbst das eher nicht soviel bringt.. x)

            2. Hallo Bevan.

              Aber eine JavaScript-Funktion wird doch Clientseitig ausgeführt.

              Richtig.

              Wie soll der Client dann die PHP-Anweisung "<? echo $blabla;?>" interpretieren?

              Er interpretiert gar nichts. Ich meinte lediglich, dass eine PHP-Date geparst wird, in der ein wenig HTML und etwas JS enthalten ist.

              Und dort kann man mittels PHP auch jeden x-beliebigen Inhalt in den JS-Code hineinschreiben.

              Ich nehme an, das würde einfach als Text ausgegeben.

              Sofern das betroffene Webdokument nicht durch den PHP-Parser läuft, ja.

              Oder denke ich jetzt irgendwie in die falsche Richtung? ;-)

              ;)

              Gruß, Ashura

              --
              Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:| ls:[ js:|
              Try it: Become an Opera Lover in 30 days
              1. Ahhh, so weit muss man ersteinmal denken :-) Und das um diese Uhrzeit

                Michael

          2. Hi there,

            Verzeihung, wenn die Frage dämlich ist, aber warum sollte dies _nicht_ gehen? Bis auf die unsinnige erste Klammer ganz am Anfang sollte es JS doch möglich sein, einen String zu schreiben, der zuvor mittels PHP "eingeprägt" wurde...

            Du hast natürlich recht, mein Beispiel war dämlich, weil der Server das Ergebnis von echo ja schon mitschickt, was ich eigentlich sagen wollte, daß keine wie immer geartete Javascriptfunktion ein PHP-Script beeinflußen kann, das ging aber kräftig daneben...

      2. Du kannst keine Serverseitigen Funktionen wie deine PHP-Funktion per JavaScript starten.
        Das kannst du nur in PHP selbst.
        Du kannst also z.B. einfach hinter die Funktion noch
        ids_alle();
        schreiben. Oder du lässt die Funktion einfach weg und schreibst den Code so hin, dann wird er sofort ausgeführt.

        1. Oder du lässt die Funktion einfach weg und schreibst den Code so hin, dann wird er sofort ausgeführt.

          Ich versteh nicht, was du meinst. Welchen code soll ich wo einfach hinschreiben?
          Ich will ja nur, dass diese vielen kleinen doofen eckigen Checkboxen sich ein Häkchen auf die Brust malen! x)

          Vielleicht mach ich bei meinem zweiten Lösungsansatz weiter? Wo finde ich vielleicht eine kleine Anleitung wie man PHP-Arrays in Java-Arrays übersetzt?

  3. Hallo Christian.

    Mit einem Klick auf eine Checkbox soll eine feste Gruppe von anderen Checkboxen, deren Namen variabel sind, das checked-attribut bekommen oder verlieren.

    So, nun aber zu deinem Problem. ;)

    Vielleicht hilft dir GetElementsByTagName oder GetElementByID weiter..?

    Mir wäre wohl geholfen, wenn ich wüsste, wie Funktionen etwas an eine andere Stelle in den Quelltext "schreiben" können...

    Mich würde interessieren, ob die anderen Checkboxen im aktiven Dokument aktiviert werden sollen (ohne Neuladen des Dokuments) oder ob die anderen Checkboxen erst nach einer Auswertung durch dein PHP-Skript aktiviert werden sollen.

    Gruß, Ashura

    --
    Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:| ls:[ js:|
    Try it: Become an Opera Lover in 30 days