2017-02-16 1 views
2

Pour commencer: Mes compétences de codage Web sont presque inexistantes, j'ai juste fait un peu de HTML il y a des siècles ... Et mes premiers pas avec php sont juste faits aujourd'hui.Soumettre le résultat de jscolor à la commande shell_exec

Mon but est: Avoir un sélecteur de couleur et envoyer la valeur choisie comme argument à un script python.

J'ai réussi à utiliser le sélecteur jscolor libary (http://jscolor.com/examples/) et j'ai également été capable d'exécuter les scripts python avec un argument (couleur) de php.

Mon problème est maintenant:

Comment puis-je soumettre la chaîne de couleur (hex-str) à la commande 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

Répondre

0

Votre entrée de sélecteur de couleur a besoin d'un attribut name pour correspondre à votre code PHP, et doit également être à l'intérieur de l'élément <form>.

<?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

Merci pour votre réponse! Malheureusement, ça ne marche toujours pas. Le script est toujours appelé avec la valeur initiale de 'LED_color'' FFFFFF', lorsque le bouton est cliqué. Ensuite, le sélecteur de couleurs revient à sa valeur initiale '000000' – Marcel

+0

Voir ma mise à jour. – miken32

+0

Merci beaucoup! Maintenant, cela fonctionne comme un charme :) – Marcel