В настоящее время я создаю проект проката автомобилей, где вы можете арендовать и вернуть автомобили. У меня нет проблем с добавлением, редактированием и удалением клиентов. Ни с арендой, ни с возвратом авто. Тем не менее, когда я хочу редактировать и удалять автомобили, они действительно удаляются и обновляются в базе данных, но как только я нажимаю «удалить автомобиль» или «изменить автомобиль», он просто переходит на пустую страницу вместо создания правильной ветки файл. Когда я проверяю базу данных, автомобиль был отредактирован / удален.
Таблица автомобилей в базе данных выглядит следующим образом:
CREATE TABLE Cars (
licensePlate VARCHAR(6) NOT NULL,
brand VARCHAR(10) NOT NULL,
colour VARCHAR(10) NOT NULL,
year VARCHAR(4) NOT NULL,
price FLOAT NOT NULL,
customerNumber CHAR(10),
statusRented boolean not null default 0,
start DATETIME NULL,
PRIMARY KEY (licensePlate),
FOREIGN KEY (colour) REFERENCES Colours(colour),
FOREIGN KEY (brand) REFERENCES Brands(brand)
);
функция в CarModel. php:
public function editCar($licensePlate, $newBrand, $newColour, $newYear, $newPrice)
{
$carsQuery = "UPDATE Cars SET brand = :brand, colour = :colour, year = :year, price = :price " .
"WHERE licensePlate = :licensePlate";
$carsStatement = $this->db->prepare($carsQuery);
$carsParameters = [
"licensePlate" => $licensePlate,
"brand" => $newBrand,
"colour" => $newColour,
"year" => $newYear,
"price" => $newPrice
];
$carsResult = $carsStatement->execute($carsParameters);
if ($carsResult) die($this->db->errorInfo()[2]);
}
Функции в CarController. php:
public function editCar($licensePlate, $brand, $colour, $year, $price)
{
//$customerName = $map["customerName"];
//$customerNumber = $map["customerNumber"];
$CarModel = new CarModel($this->db);
$fetchColours = $CarModel->fetchColours();
$fetchBrands = $CarModel->fetchBrands();
$properties = [
"licensePlate" => $licensePlate,
"oldBrand" => $brand,
"oldColour" => $colour,
"oldYear" => $year,
"oldPrice" => $price,
"colours" => $fetchColours,
"brands" => $fetchBrands
];
return $this->render("EditCar.twig", $properties);
}
public function carEdited($licensePlate, $oldBrand, $oldColour, $oldYear, $oldPrice)
{
$form = $this->request->getForm();
$newBrand = $form["brand"];
$newColour = $form["colour"];
$newYear = $form["year"];
$newPrice = $form["price"];
$carModel = new CarModel($this->db);
$carModel->editCar($licensePlate, $newBrand, $newColour, $newYear, $newPrice);
$properties = [
"licensePlate" => $licensePlate,
"oldBrand" => $oldBrand,
"newBrand" => $newBrand,
"oldColour" => $oldColour,
"newColour" => $newColour,
"oldYear" => $oldYear,
"newYear" => $newYear,
"oldPrice" => $oldPrice,
"newPrice" => $newPrice
];
return $this->render("CarEdited.twig", $properties);
}
Кнопка в Twig (генерируется HTML):
<form method="post" action="/editCar/{{car.licensePlate}}/{{car.brand}}/{{car.colour}}/{{car.year}}/{{car.price}}">
<input disabled type="submit" value="Edit">
</form>
маршруты. json:
"editCar/:licensePlate/:brand/:colour/:year/:price": {
"controller": "Car",
"method": "editCar",
"params": {
"licensePlate": "string",
"brand": "string",
"colour": "string",
"year": "number",
"price": "number"
}
},
"carEdited/:licensePlate/:brand/:colour/:year/:price": {
"controller": "Car",
"method": "carEdited",
"params": {
"licensePlate": "string",
"brand": "string",
"colour": "string",
"year": "number",
"price": "number"
}
},
Поднимите информацию только для функции редактирования автомобиля, так как я считаю, что функция удаления автомобиля, скорее всего, имеет ту же проблему. Я размышлял, что это произошло из-за того, что столбцы start не были упомянуты, а rentedStatus не упоминался, поэтому попытался добавить их в параметры различными способами, но это, к сожалению, не помогло. У меня нет таких дополнительных параметров в таблице «Клиенты». Как решить это? Заранее большое спасибо!