Как записать данные в массив на стороне клиента?
Выполняю дз по php. Условие задачи:
В файле index.php создать массив объектов класса Product и форму, которая состоит из двух текстовых полей и кнопки Add. По клику на кнопку Add в массив добавляется новый объект со значениями, которые написаны в форме.
Как сделать, чтобы по нажатию кнопки что-то записывалось в массив на стороне клиента?
Ответы (1 шт):
Автор решения: Вадим Никитин
→ Ссылка
Решение в лоб и на коленке. На выходе массив объектов класса Product.
<?
class Product {
public $data = [];
public function __set($name = '', $value = '') {
$this->data[$name] = $value;
}
}
$result = [];
if(isset($_POST['f1']) && isset($_POST['f2'])) {
$key = 0;
if(is_file($_SERVER['DOCUMENT_ROOT'].'/dz.txt')) {
$res = file_get_contents($_SERVER['DOCUMENT_ROOT'].'/dz.txt');
$res = json_decode($res);
foreach($res as $key => $val) {
$product[$key] = new Product;
$product[$key]->field_1 = $val->data->field_1;
$product[$key]->field_2 = $val->data->field_2;
$result[] = $product[$key];
}
}
$key = ((int)$k > 0) ? ++$k : 0;
$product[$key] = new Product;
$product[$key]->field_1 = $_POST['f1'];
$product[$key]->field_2 = $_POST['f2'];
$result[] = $product[$key];
file_put_contents($_SERVER['DOCUMENT_ROOT'].'/dz.txt', json_encode($result));
}
?>
<form method="post" action="" name="form">
<label>Field 1</label>
<input type="text" name="f1"><br>
<label>Field 2</label>
<input type="text" name="f2"><br>
<input type="submit" value="Add">
</form>
<?
if(is_file($_SERVER['DOCUMENT_ROOT'].'/dz.txt')) {
echo 'Результат:'."<br>";
$res = file_get_contents($_SERVER['DOCUMENT_ROOT'].'/dz.txt');
$res = json_decode($res);
foreach($res as $key => $val) {
$product[$key] = new Product;
$product[$key]->field_1 = $val->data->field_1;
$product[$key]->field_2 = $val->data->field_2;
}
// Вывод результата
echo '<pre>';
print_r($product);
echo '</pre>';
}
?>