I don't know how to add a double record to db.
I have form with double same row content. I would like to add a dynamic line in the next step using js but at this point I used double html to validate it.
<form class="formAddCoupon" action="/?dashboard=coupon" method="post">
<div class="windowEvents">
<div class="row">
<input type="text" class="teamInput" name="team1">
<input type="text" class="teamInput" name="team2">
<select name="score" id="selectOptions">
<option value="Liczba bramek">Liczba bramek</option>
<option value="Liczba rzutów rożnych">
Liczba rzutów rożnych</option>
<option value="Ilość kartek">Liczba kartek</option>
<option value="Wygrana drużyny">Wygrana drużyny</option>
<option value="Wygrana drużyny lub połowy">
Wygrana drużyny lub połowy</option>
<option value="Wygrana połowy">Wygrana jednej z połów</option>
<option value="Hendicap">Hendicap</option>
<option value="Ilość punktów">Liczba punktów</option>
</select>
<input type="text" class="scoreInput" name="type_score">
</div>
<div class="row">
<input type="text" class="teamInput" name="team1">
<input type="text" class="teamInput" name="team2">
<select name="score" id="selectOptions">
<option value="Liczba bramek">Liczba bramek</option>
<option value="Liczba rzutów rożnych">
Liczba rzutów rożnych</option>
<option value="Ilość kartek">Liczba kartek</option>
<option value="Wygrana drużyny">Wygrana drużyny</option>
<option value="Wygrana drużyny lub połowy">
Wygrana drużyny lub połowy</option>
<option value="Wygrana połowy">Wygrana jednej z połów</option>
<option value="Hendicap">Hendicap</option>
<option value="Ilość punktów">Liczba punktów</option>
</select>
<input type="text" class="scoreInput" name="type_score">
</div>
</div>
<div class="valueAmountRow">
<input
type="number"
name="bid_amount"
id="bid_amount"
placeholder="Stawka"
min="0"
step="any"
>
<input
type="number"
name="winner_amount"
id="winner_amount"
placeholder="Wygrana"
min="0"
step="any"
>
<input type="submit" value="Dodaj">
</div>
</form>
Controller.php:
$data = $this->getRequestPost();
If(!empty($data)) {
$couponData = [
'bid_amount' => $data['bid_amount'],
'winner_amount' => $data['winner_amount'],
'team1' => $data['team1'],
'team2' => $data['team2'],
'score' => $data['score'],
'type_score' => $data['type_score'],
];
$this->db->createCoupon($couponData);
}
Database.php
public function createCoupon(array $data)
{
try {
$this->createNewCoupon($data);
} catch(Throwable $e) {
dump($e);
throw new StorageException('Nie udało się wysłać kuponu', 400, $e);
}
}
private function createNewCoupon($data): void
{
$nr_coupon = trim($this->connection->quote($this->checkIssetCode()));
$created = $this->connection->quote(date('Y-m-d H:i:s'));
$bid_amount = trim($this->connection->quote($data['bid_amount']));
$winner_amount = trim($this->connection->quote($data['winner_amount']));
$team1 = trim($this->connection->quote($data['team1']));
$team2 = trim($this->connection->quote($data['team2']));
$score = trim($this->connection->quote($data['score']));
$typeScore = trim($this->connection->quote($data['type_score']));
$insertNumberCoupon = "INSERT INTO
coupon_number(
nr_coupon,
created,
bid_amount,
winner_amount
)
VALUES(
$nr_coupon,
$created,
$bid_amount,
$winner_amount
)";
$sql_create_number_coupon = $this->connection->prepare($insertNumberCoupon);
if($sql_create_number_coupon)
{
$sql_create_number_coupon->execute();
$id = (int) $this->connection->lastInsertId();
$addEvent = "INSERT INTO
events_at_coupon(
number_id_coupon,
team1,
team2,
score,
type_score
)
VALUES($id,$team1,$team2,$score,$typeScore)";
$sql_add_event_to_table = $this->connection->prepare($addEvent);
if($sql_add_event_to_table)
{
$sql_add_event_to_table->execute();
}
}
}
When i send a form only one record is added to database. I know why, but what do i have to do to get a double record ?