I have A court rental page where people can choose amenities for their courts, after checking checkboxes and submitting the form, Php is only receiving 1 of the checkboxes, I basically want to take the id of the court I create, and the id of the selected amenities from the database and put them in a junction table so it would look something like
Court_id Amenity_id
1 1
1 2 etc…
but after pressing submit, all the court details are getting saved correctly in the court database, but the courtamenity junction table stays empty all the time.
Here is the relevant code
<code> <div class="amenities">
<label><input type="checkbox" name="amenities[]" value="Cafeteria"> Cafeteria</label>
<label><input type="checkbox" name="amenities[]" value="Showers"> Showers</label>
<label><input type="checkbox" name="amenities[]" value="Wifi"> Wifi</label>
<label><input type="checkbox" name="amenities[]" value="Toilets"> Toilets</label>
<label><input type="checkbox" name="amenities[]" value="Gym"> Gym</label>
<label><input type="checkbox" name="amenities[]" value="Parking"> Parking</label>
<label><input type="checkbox" name="amenities[]" value="Indoors"> Indoors</label>
<label><input type="checkbox" name="amenities[]" value="Outdoors"> Outdoors</label>
<code> <div class="amenities">
<label><input type="checkbox" name="amenities[]" value="Cafeteria"> Cafeteria</label>
<label><input type="checkbox" name="amenities[]" value="Showers"> Showers</label>
<label><input type="checkbox" name="amenities[]" value="Wifi"> Wifi</label>
<label><input type="checkbox" name="amenities[]" value="Toilets"> Toilets</label>
<label><input type="checkbox" name="amenities[]" value="Gym"> Gym</label>
<label><input type="checkbox" name="amenities[]" value="Parking"> Parking</label>
<label><input type="checkbox" name="amenities[]" value="Indoors"> Indoors</label>
<label><input type="checkbox" name="amenities[]" value="Outdoors"> Outdoors</label>
</div>
</code>
<div class="amenities">
<label><input type="checkbox" name="amenities[]" value="Cafeteria"> Cafeteria</label>
<label><input type="checkbox" name="amenities[]" value="Showers"> Showers</label>
<label><input type="checkbox" name="amenities[]" value="Wifi"> Wifi</label>
<label><input type="checkbox" name="amenities[]" value="Toilets"> Toilets</label>
<label><input type="checkbox" name="amenities[]" value="Gym"> Gym</label>
<label><input type="checkbox" name="amenities[]" value="Parking"> Parking</label>
<label><input type="checkbox" name="amenities[]" value="Indoors"> Indoors</label>
<label><input type="checkbox" name="amenities[]" value="Outdoors"> Outdoors</label>
</div>
<code>// Get the last inserted court ID
$court_id = $conn->insert_id;
// Fetch selected amenities from the form
if (isset($_POST['amenities']) && is_array($_POST['amenities'])) {
$selected_amenities = $_POST['amenities'];
$selected_amenities = array(); // No amenities selected
// Prepare and execute SQL query to insert amenities
if (!empty($selected_amenities)) {
print_r($selected_amenities);
$sql_court_amenity = "INSERT INTO courtamenity (court_id, amenity_id) VALUES (?, ?)";
$stmt_court_amenity = $conn->prepare($sql_court_amenity);
if (!$stmt_court_amenity) {
die('Error preparing statement: ' . $conn->error);
foreach ($selected_amenities as $amenity_name) {
// Check if the amenity exists
$sql_check = "SELECT amenity_id FROM amenity WHERE name = ?";
$stmt_check = $conn->prepare($sql_check);
die('Error preparing statement: ' . $conn->error);
$stmt_check->bind_param('s', $amenity_name);
$result = $stmt_check->get_result();
if ($row = $result->fetch_assoc()) {
$amenity_id = $row['amenity_id'];
// Insert into courtamenity table
$stmt_court_amenity->bind_param('ii', $court_id, $amenity_id);
if (!$stmt_court_amenity->execute()) {
echo "Error inserting into courtamenity: " . $stmt_court_amenity->error;
echo "No matching amenity found for: " . $amenity_name;
$stmt_court_amenity->close();
<code>// Get the last inserted court ID
$court_id = $conn->insert_id;
// Fetch selected amenities from the form
if (isset($_POST['amenities']) && is_array($_POST['amenities'])) {
$selected_amenities = $_POST['amenities'];
} else {
$selected_amenities = array(); // No amenities selected
}
// Prepare and execute SQL query to insert amenities
if (!empty($selected_amenities)) {
echo '<pre>';
print_r($selected_amenities);
echo '</pre>';
$sql_court_amenity = "INSERT INTO courtamenity (court_id, amenity_id) VALUES (?, ?)";
$stmt_court_amenity = $conn->prepare($sql_court_amenity);
if (!$stmt_court_amenity) {
die('Error preparing statement: ' . $conn->error);
}
foreach ($selected_amenities as $amenity_name) {
// Check if the amenity exists
$sql_check = "SELECT amenity_id FROM amenity WHERE name = ?";
$stmt_check = $conn->prepare($sql_check);
if (!$stmt_check) {
die('Error preparing statement: ' . $conn->error);
}
$stmt_check->bind_param('s', $amenity_name);
$stmt_check->execute();
$result = $stmt_check->get_result();
if ($row = $result->fetch_assoc()) {
$amenity_id = $row['amenity_id'];
// Insert into courtamenity table
$stmt_court_amenity->bind_param('ii', $court_id, $amenity_id);
if (!$stmt_court_amenity->execute()) {
echo "Error inserting into courtamenity: " . $stmt_court_amenity->error;
}
} else {
echo "No matching amenity found for: " . $amenity_name;
}
$stmt_check->close();
}
$stmt_court_amenity->close();
}
</code>
// Get the last inserted court ID
$court_id = $conn->insert_id;
// Fetch selected amenities from the form
if (isset($_POST['amenities']) && is_array($_POST['amenities'])) {
$selected_amenities = $_POST['amenities'];
} else {
$selected_amenities = array(); // No amenities selected
}
// Prepare and execute SQL query to insert amenities
if (!empty($selected_amenities)) {
echo '<pre>';
print_r($selected_amenities);
echo '</pre>';
$sql_court_amenity = "INSERT INTO courtamenity (court_id, amenity_id) VALUES (?, ?)";
$stmt_court_amenity = $conn->prepare($sql_court_amenity);
if (!$stmt_court_amenity) {
die('Error preparing statement: ' . $conn->error);
}
foreach ($selected_amenities as $amenity_name) {
// Check if the amenity exists
$sql_check = "SELECT amenity_id FROM amenity WHERE name = ?";
$stmt_check = $conn->prepare($sql_check);
if (!$stmt_check) {
die('Error preparing statement: ' . $conn->error);
}
$stmt_check->bind_param('s', $amenity_name);
$stmt_check->execute();
$result = $stmt_check->get_result();
if ($row = $result->fetch_assoc()) {
$amenity_id = $row['amenity_id'];
// Insert into courtamenity table
$stmt_court_amenity->bind_param('ii', $court_id, $amenity_id);
if (!$stmt_court_amenity->execute()) {
echo "Error inserting into courtamenity: " . $stmt_court_amenity->error;
}
} else {
echo "No matching amenity found for: " . $amenity_name;
}
$stmt_check->close();
}
$stmt_court_amenity->close();
}
I tried debugging the $_Post using
<code>echo '<pre>';
print_r($_POST);
echo '</pre>';
</code>
echo '<pre>';
print_r($_POST);
echo '</pre>';
and it shows only 1 amenity, but in the f12 console log, in the network section it is showing in the form-data that all 3 amenities are being sent