#php
#php
Вопрос:
Все, что я пытаюсь сделать, это создать форму с полями ввода текста и кнопками в стиле кодирования ниже. Все работает нормально, но я немного запутался в том, как создать кнопку отправки, а после отправки вставить данные из текстовых полей в базу данных. Как мне правильно сгенерировать кнопку отправки, используя приведенный ниже стиль кодирования?
IceCreamForm.php:
<?php
require_once 'Form.php';
require_once 'RadioButton.php';
require_once 'TextInput.php';
require_once 'Validator.php';
$form = new Form();
$form -> addInput(new TextInput("First Name: ", "firstName"));
$form -> addInput(new TextInput("Last Name: ", "lastName"));
$form -> addInput(new TextInput("Ice Cream Flavor: ", "iceCreamFlavor"));
$radio = new RadioButton("Number of Scoops: ");
$radio -> addOption("One Scoop", "one");
$radio -> addOption("Two Scoops", "two");
$radio -> addOption("Three Scoops", "three");
$form -> addInput($radio);
echo $form -> generateHTML();
Form.php:
<?php
class Form
{
const GET = "GET";
const POST = "POST";
private $action = "someLocation.php";
private $inputs = array();
private $method = "POST";
public $form = "";
public $name = "";
function __construct()
{
}
function addInput(TextInput $input)
{
$this -> inputs[] = $input;
}
function getAction(): string
{
return $this -> action;
}
function getMethod(): string
{
return $this -> method;
}
function setAction(string $action)
{
$this -> action = $action;
return $this;
}
function setMethod(string $method)
{
$this -> method = $method;
return $this;
}
function set($param, $value)
{
$this -> $param = $value;
}
function generateHTML(): string
{
$this -> form = '<form action="' . $this -> getAction() . '"
method="' . $this -> getMethod() . '">';
foreach ($this -> inputs as $input)
{
$this -> form .= $input -> generateHTML();
}
$this -> form .= '</form>';
return $this -> form;
}
}
TextInput.php:
<?php
class TextInput
{
const TYPE = "text";
private static $REQUIRED = "REQUIRED";
private $defaultValue;
private $id;
private $label;
private $name;
private $onNewLine;
private $required = false;
private $type;
function __construct($label = "", $name = "", $defaultValue = "", $id = "", $onNewLine = "", $required = false, $type = self::TYPE)
{
$this -> defaultValue = $defaultValue;
$this -> id = $id;
$this -> label = $label;
$this -> name = $name;
$this -> onNewLine = $onNewLine;
$this -> required = $required;
$this -> type = $type;
}
public function generateHTML():string
{
$req = "";
if ($this -> required == true)
{
$req = self::$REQUIRED;
}
return "<label>$this->label</label><input id='$this->id' type='$this->type' name='$this->name' onNewLine='$this->onNewLine' $req/><br/>";
}
}
Комментарии:
1. С таким же успехом можно добавить еще один ввод, который является кнопкой отправки.
Ответ №1:
Вы должны внести следующие изменения:
Измените generateHTML()
метод класса TextInput, чтобы добавить defaultValue
.
public function generateHTML():string
{
$req = "";
if ($this -> required == true)
{
$req = self::$REQUIRED;
}
return "<label>$this->label</label><input id='$this->id' type='$this->type' name='$this->name' onNewLine='$this->onNewLine' value='$this -> defaultValue' $req/><br/>";
}
создайте кнопку отправки, как показано ниже:
$form -> addInput(new TextInput("", "submit_btn","Submit Button Name","submit_btn","",false,"submit"));
чтобы сохранить данные, добавьте действие и метод формы как
echo $form -> setAction("You post url where you want to save data");
echo $form -> setMethod("POST");
echo $form -> generateHTML();