2014-06-27 5 views
-2

У меня есть набор массивов, каждый из которых имеет значение, приписываемое им. Это значение проходит через функцию, чтобы найти процент, который он отображает на странице. Вот отрывок из этого кода:Как изменить переменную PHP с формой ввода?

<?php 
$balls = array(
    'blue' => 4, 
    'red' => 13, 
    'green' => 5 
); 

function percent($array, $element) 
{ 
    $total = array_sum($array); 
    $elementValue = $array[$element]; 
    return ($elementValue/$total) * 100; 
} 
?> 

<html> 
<body> 
Blue balls per set:<?php echo $balls["blue"]; ?>. 
Percentage of blue balls:<?php echo percent($balls, 'blue'); ?>%. 
</body> 
</html> 

Как добавить форму ввода, которая может изменить это уравнение вокруг. В частности, я хочу иметь возможность добавлять переменную ($ sets), которая будет умножать значения элементов массива до их суммирования.

Ближайший вещь, которую я могу придумать что-то вроде этого:

$sets = value from input form, if no value entered, default as 1 

$balls = array(
    'blue' => 4 * $sets, 
    'red' => 13 * $sets, 
    'green' => 5 * $sets 
); 

Остальная часть уравнения будет работать в обычном режиме, но обновляться с новым значением от $ наборов, как представлено в форме ввода. Кроме того, будет ли такое обновление обновлять номера, отображаемые на веб-странице мгновенно?

+0

Вам либо нужно отправить все переменные клиенту, либо изменить отображение с помощью Javascript, либо вы должны использовать AJAX для отправки цвета на сервер и возврата процентов. PHP выполняется, когда пользователь меняет ввод. – Barmar

ответ

1

Если $sets это единственное, что вы заинтересованы в изменении, вы можете легко настроить форму небольшой HTML (при условии, index.php это имя файла PHP):

<form action="index.php" method="post"> 
Number of sets: <input type="text" name="sets" /> 
<br /><input type="submit" value="Get sum!" /> 
</form> 

В вашем PHP код, вы можете сделать следующее, чтобы получить значение, когда кто-то отправляет форму HTML:

$sets = 1; // default value 

// Make sure a value was sent 
if(isset($_POST['sets'])) { 
    // Check that sets is numeric, and above 0 
    if(is_numeric($_POST['sets']) && $_POST['sets'] > 0) { 
     $sets = $_POST['sets']; 
    } 
} 

// Do computation with $sets... 

Да, если вы пришлете значение из HTML формы на страницу PHP, значения на вашей странице будет по к тому, что вы отправили в своей форме немедленно.

Похоже, вы начинаете с PHP (или программирования в целом) - удачи! Важным правилом, который следует помнить, является проверка правильности ввода данных, как мы это делали здесь: мы проверили, что нам отправили номер (поскольку это то, что нам нужно), и что значение было больше 0.

У нас есть только добавила значение $ _POST ['sets'] к нашей переменной, как только мы были уверены, что она соответствует нашим критериям. Вы никогда не знаете, что люди могут попытаться отправить вам, и вы хотите быть готовым к любому делу.

Установка $sets к 1 в начале означает, что мы начинаем со значением по умолчанию, и мы можем только беспокоиться о настройке $sets к чему-то еще когда мы хотим. Рассмотрим это в отличие:

if(isset($_POST['sets'])) { 
    if(is_numeric($_POST['sets']) && $_POST['sets'] > 0) { 
     $sets = $_POST['sets']; 
    } 
    else { 
     $sets = 1; 
    } 
} 
else { 
    $sets = 1; 
} 

Это менее приятно, потому что это менее очевидно, что $ сеты, положительно, имеет действительное значение в каждом конкретном случае. Это также означает, что вам нужно изменить 1 на другой номер, если вы решите изменить значение по умолчанию.

Это довольно тривиально в этом примере, так как код небольшой, но я уверен, что вы можете представить себе выгоду, как только вы напишете более крупный код с более сложными проверками.

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

  • Нет связанных вопросов^_^