onclick zusammenbauen aber wie???

  • Hallo zusammen,

    ich bin neu hier im Board und auch beim Thema PHP. HTML ist mir nicht ganz fremd aber ich bin gerade an meine Grenzen gestossen.

    Ich bin gerade dabei die Anleitung zum steuern der GPIO umzusetzen und etwas aufzuhübschen: Anleitung zum schalten von GPIO

    Aktuell versuche ich gerade den href-Befehl :
    [code=php]<a href='?gpio=".$pin."&state=0'>Aus</a>[/php]

    gegen einen Button zu tauschen:
    [code=php]<form action='gpio.php'><button type='button' value='An' onclick='self.location.href='?gpio=".$pin."&state=1'' >An</button></form>[/php]

    Das ganze soll in einer Tabelle aufbereitet werden.

    Mein Problem hierbei ist der Aufbau der oncklick-Funktion:
    onclick='self.location.href='?gpio=".$pin."&state=1''

    Nach dem Aufruf der Seite zerfällt der der kompette Befehl in:
    <button ?gpio="2&state=1' '" onclick="self.location.href='' type="button" type="button" >


    Leider habe ich keine Ahnung, wie ich den String formatieren muss, damit er beim Aufruf nicht zerlegt wird.

    Einmal editiert, zuletzt von ObelixDE (3. Dezember 2015 um 23:16)


  • Vermutlich ein Quoting-Problem. Das da macht was ich will:

    PHP
    <?php $pin = 1 ?>
    
    
    <form action='gpio.php'><button type='button' value='An' onclick='self.location.href="?gpio=<?php echo $pin; ?>&state=1"' >An</button></form>

    Ob's auch Sinn macht habe ich nicht getestet :lol:

    Danke für die Antwort.
    Leider tut das nicht. Mit dem Code wird die Seite nicht mehr geladen.


  • Hi,
    also wenn ich so ein Problem habe, dann schreibe ich das erst mal als HTML-Code rein und wenn das dann funktioniert, dann setze ich das nach PHP um ...
    cu,
    -ds-

    Hallo Dreamshader,

    danke für den Denkanstoß.
    Im HTML habe ich mit der onclick-Funktion in der Regel keine Probleme.
    Aber hier arbeite ich innerhalb von PHP und habe Probleme mit dem setzen der eine PHP-Kommandos innerhalb eines HTML Elements.

    Zur besseren Erklärung, hier der funktionierende Code-Ausschnitt mit href:

    in die onclock-funktion zu übernehmen

    Code
    onclick='self.location.href='?gpio=".$pin."&state=0''


    Und hier stolpert die Seite an den Hochkommas.

    Eventuell hat jemand einen anderen Lösungsansatz für mich.
    Würde mich tierisch darüber freuen.

  • Der Kardinalfehler ist schon die Art, wie du PHP benutzt. PHP's Staerke liegt darin, in HTML *eingebettet* zu werden. Statt also HTML mittels echo auszugeben, schreibst du das HTML. Das wird dann gleich so gerendert. Und nur da, wo du es dynamisch anpassen willst, schreibst du PHP. Tell hat dir das oben schon richtig vor gemacht. Und wenn das so nicht funktionert, musst du uns den gesamten Quellcode zeigen, am besten mittels eines Pastebin.

  • Also ich würde das Problem wenn es nur um das Design geht mit css lösen:

    Hier auch noch nen Fiddle: https://jsfiddle.net/o49uffc8/2/

    Viel Erfolg :)


  • Der Kardinalfehler ist schon die Art, wie du PHP benutzt. PHP's Staerke liegt darin, in HTML *eingebettet* zu werden. Statt also HTML mittels echo auszugeben, schreibst du das HTML. Das wird dann gleich so gerendert. Und nur da, wo du es dynamisch anpassen willst, schreibst du PHP. Tell hat dir das oben schon richtig vor gemacht. Und wenn das so nicht funktionert, musst du uns den gesamten Quellcode zeigen, am besten mittels eines Pastebin.

    Hallo __deets__,

    erstmal Danke für Deine Unterstützung!
    Die von Dir genannte Stäre ist mir theoretisch klar. Aber ich bin (zum Thema PHP) blutiger Anfänger.
    Normalerweise hätte ich eine HTML Tabelle aufgebaut und versucht die einzelnen Funktionen in die jeweiligen Zellen eingebunden.

    So weit ich die Grundversion aber Verstanden habe, liegt der Vorteil hier in der Verwendung des Arrys.
    Die Anzahl der ausgegebenen Tabellen wird durch entsprechende Einträge im Array vorgegeben.
    Aus diesem Grund habe ich mir das Beispiel für die Steuerung von GPIO genommen, zum laufen gebracht.
    Dann versuchte ich es etwas umzuwandeln und scheiterte an dem Aufruf ihn der onclick Variante.

    Hier die komplett Funktionierende Datei mit der href Funktion gpio.php
    Automatisch zusammengefügt:


    Also ich würde das Problem wenn es nur um das Design geht mit css lösen:
    ......
    Hier auch noch nen Fiddle: https://jsfiddle.net/o49uffc8/2/

    Viel Erfolg :)

    Hallo Kleiner Mann,

    das Thema CSS habe ich bis jetzt komplett vernachlässigt, da ich erstmal eine Grundfunktion realisieren wollte.
    Dein Vorschlag sieht aber gut aus und lässt sich wahrscheinlich leichter umsetzten (zumindest für einen Noobie wie mich).

    Einmal editiert, zuletzt von ObelixDE (4. Dezember 2015 um 12:00)

  • Puh, ich weiss schon, warum ich PHP schon lange hinter hier gelassen habe.

    Ich habe mal einen Teil deines Problems rausgeloest und umgeschrieben - ausprobieren kann ich das gerade nicht:

    http://pastebin.com/9D4vprZN

    Da kannst du sehen, wass ich meine: du belegst dir deine gewuenschten Werte in Variablen vor, und statt die ganze Zeit sich wiederholende Bloecke desselben HTML mit String-Verkettung zu basteln, baust du den nur einmal - und fuellst die Variablen ein.


  • Puh, ich weiss schon, warum ich PHP schon lange hinter hier gelassen habe.

    Ich habe mal einen Teil deines Problems rausgeloest und umgeschrieben - ausprobieren kann ich das gerade nicht:

    http://pastebin.com/9D4vprZN

    Da kannst du sehen, wass ich meine: du belegst dir deine gewuenschten Werte in Variablen vor, und statt die ganze Zeit sich wiederholende Bloecke desselben HTML mit String-Verkettung zu basteln, baust du den nur einmal - und fuellst die Variablen ein.

    Hallo __deets__,

    ein :heart: liches Dankeschön für Deine Hilfe.
    Ich habe das ganze umgesetzt. Nach dem es funktioniert hat, habe ich das Thema mit den Buttons noch einmal in Angriff genommen.
    Und diesmal mit Erfolg:gpio2.php

    Das Problem mit der falschen Darstellung im Bereich onclick konnte ich so lösen:
    [code=php]<form action='gpio.php'>
    <button type='button' value='An' onclick="self.location.href='?gpio=<?= $pin ?>&state=1'" >An</button>
    </form>[/php]
    Jetzt habe ich eine Seite mit Buttons für die Steuerung und Bild-Anzeigen für den Zustand der Ausgänge.

    Also nochmals Danke an alle, für die schnelle und kompetente Hilfe!

    Grüße
    ObelixDE

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!