2017-02-16 15 views
2

Для начала: Мои навыки кодирования в Интернете почти не существуют, я просто немного поработал с веками HTML ... И мои первые шаги с php сделаны только сегодня.Передача результата jscolor команде shell_exec

Моя цель: наличие выбора цвета и отправка выбранного значения в качестве аргумента в скрипт python.

Мне удалось использовать jscolor picker libary (http://jscolor.com/examples/), и я также смог запустить скрипты python с (цветовым) аргументом из php.

Моя проблема сейчас:

Как отправить цвет строки (гекс-НТР) с выполняемым командой (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

ответ

0

Ваш входной селектор цвета необходим атрибут name, чтобы соответствовать вашему PHP-код, а также должен быть внутри <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

Спасибо за ваш ответ! К сожалению, он все еще не работает. Сценарий всегда вызывается с начальным значением из 'LED_color'' FFFFFF', когда нажимается кнопка. После этого сборщик цветов возвращается к исходному значению '000000' – Marcel

+0

См. Мой обновленный ответ. – miken32

+0

Большое спасибо! Теперь это работает как шарм :) – Marcel

Смежные вопросы