2017-02-16 1 views
2

Zum Anfang: Meine Web-Codierung Fähigkeiten sind fast nicht existent, ich habe nur ein wenig HTML vor ... Und meine ersten Schritte mit PHP sind nur heute gemacht.Einreichen von jscolor Ergebnis zu shell_exec Befehl

Mein Ziel ist: Mit einer Farbauswahl und dem Senden des ausgewählten Werts als Argument an ein Python-Skript.

Ich habe es geschafft, die Jscolor-Picker-Bibliothek (http://jscolor.com/examples/) zu verwenden und ich konnte auch die Python-Skripte mit einem (Farb-) Argument von PHP laufen lassen.

Mein Problem ist jetzt:

Wie übermittle ich die Farbe string (hex-str) mit dem Befehl exec (LED_COLOR)?

<?php 
    $LED_color="FFFFFF"; 

    $LED_color=escapeshellarg($LED_color); 

    if (isset($_POST['button'])) 
    { 
     $LED_color = $_REQUEST['hex-str']; 
     echo shell_exec("sudo /home/pi/LEDscripts/color-by-arg.py $LED_color"); 
    } 
?> 


<html> 
<head> 
    <title>Basic usage</title> 
</head> 
<body> 

<div style="position:absolute; left:280px; top:10px;"> 
    toString = <span id="hex-str"></span><br /> 
</div> 


<script src="jscolor.js"></script> 

Color: <input class="jscolor {closable:true,closeText:'Close me!',onFineChange:'update(this)'}" value="000000"> 

<script> 
function update(picker) { 
    document.getElementById('hex-str').innerHTML = picker.toString(); 
} 
</script> 

<form method="post"> 
    <p> 
     <button name="button">Submit color</button> 
    </p> 
</form> 

</body> 
</html> 

https://i.stack.imgur.com/1cXRn.png

Antwort

0

braucht Ihre Farbauswahl Eingang ein name Attribut Ihren PHP-Code entspricht, und muss auch im Innern des <form> Element sein.

<?php 
if (!empty($_POST["hex-str"])) { 
    $LED_color = escapeshellarg($_POST["hex-str"]); 
    echo shell_exec("sudo /home/pi/LEDscripts/color-by-arg.py $LED_color"); 
} 
?> 
<!DOCTYPE html> 
<html> 
<head> 
    <title>Basic usage</title> 
    <script src="jscolor.js"></script> 
</head> 
<body> 
    <form method="post"> 
     <p> 
      Color: 
      <input type="text" name="hex-str" value="000000" class="jscolor" data-jscolor="{closable:true,closeText:'Close me!',onFineChange:'update(this)'}"/> 
      toString = <span id="hex-str-display"></span> 
     </p> 
     <p> 
      <button type="submit">Submit color</button> 
     </p> 
    </form> 
    <script> 
     function update(picker) { 
      document.getElementById('hex-str-display').innerHTML = picker.toString(); 
     } 
    </script> 
</body> 
</html> 
+0

Vielen Dank für Ihre Antwort! Leider funktioniert es immer noch nicht. Das Skript wird immer mit dem Initialwert von 'LED_color'' FFFFFF' aufgerufen, wenn auf die Schaltfläche geklickt wird. Danach springt der Farbwähler zurück auf den Anfangswert '000000' – Marcel

+0

Siehe meine aktualisierte Antwort. – miken32

+0

Vielen Dank! Jetzt funktioniert es wie ein Charme :) – Marcel