Я пробую делать формуляр редактирования, в котором есть поле, которое является multi-select, чтобы выбирать услуги, которые есть у этого свойства.
Структура BD, он такой, как я показываю вас.
ТАБЛИЦА ЖИЛИЩЕ
vivienda_id
ТАБЛИЦА УСЛУГА
servicio_id | имя
ТАБЛИЦА VIVIENDA_SERVICIO
vivienda_vivienda_id | servicio_servicio_id
Таблицы vivienda_servicio, я достаю услуги, которые есть у каждого жилища.
В файле EDITAR-VIVIENDA-ALQUILER.php
Здесь у меня есть эта консультация, чтобы наполнять value
формуляра
$idget = $_GET['ID'];
$results = $mysqli->query("
SELECT vi.vivienda_id, vi.localidad, vi.metrosUtiles,
vi.construccion, vi.referencia, vi.ciudad,
vi.nombre, vi.foto, vi.estado_id, vi.etiqueta_id,
vi.precio, vi.metros, vi.habitaciones, vi.aseos,
vi.banos, vi.descripcion, vi.cliente_id, vi.terraza,
vi.orientacion,vi.plantas, vi.altura,
vi.estadoVivienda, vi.comunidad, vi.home, et.etiqueta_id,
et.etiqueta AS nombreETQ, es.estado_id, es.estado,
cl.cliente_id, cl.nombre AS name, cl.apellido
FROM vivienda AS vi
LEFT JOIN etiqueta AS et ON vi.etiqueta_id = et.etiqueta_id
INNER JOIN estado AS es ON vi.estado_id = es.estado_id
LEFT JOIN cliente AS cl ON vi.cliente_id = cl.cliente_id
where vi.estado_id = 1 and vi.vivienda_id = $idget;
");
if($res = $results->fetch_array())
Потом я имею в multi-select с консультацией, чтобы доставать услуги, которые есть у этого жилища и власти добавлять больше или прекращаться.
<select id="select2-2" class="form-control" name="servicios" multiple>
<?php
$vivienda = $mysqli->query("
SELECT viS.vivienda_vivienda_id,
viS.servicio_servicio_id,
serv.servicio_id, serv.nombre
FROM vivienda_servicio AS viS
RIGHT JOIN servicio AS serv
ON viS.servicio_servicio_id = serv.servicio_id;
");
foreach ($vivienda as $viv){
?><option value='<?php echo $viv['servicio_id']; ?>' <?php
if(trim($viv['vivienda_vivienda_id'])==$res['vivienda_id']){
?> selected<?php
} ?>><?php echo $viv['nombre']; ?></option><?php
}?>
</select>
Вопрос состоит в том, что меня замедляет браузер и кроме того удваивает мне все услуги, потом с другой стороны я не могу сохранять их хорошо, но это другая тема: какая-то подсказка?
Решенный таким образом.
<?php
$servicios = $mysqli->query("SELECT s.nombre, s.servicio_id FROM servicio s");
foreach ($servicios as $servicio){
$viviendaConServicio = $mysqli->query("SELECT vs.vivienda_vivienda_id FROM vivienda_servicio vs WHERE vs.vivienda_vivienda_id = $idget AND vs.servicio_servicio_id = ".$servicio['servicio_id']);
$viviendaConServicio = $viviendaConServicio->fetch_array();
echo json_encode($viviendaConServicio);
if(isset($viviendaConServicio['vivienda_vivienda_id'])){
?>
<option value='<?php echo $servicio['servicio_id']; ?>' selected><?php echo $servicio['nombre']; ?></option>
<?php
}else{
?>
<option value="<?php echo $servicio['servicio_id']; ?>"><?php echo $servicio['nombre']; ?></option>
<?php
}
?>
<?php } ?><?php
$servicios = $mysqli->query("SELECT s.nombre, s.servicio_id FROM servicio s");
foreach ($servicios as $servicio){
$viviendaConServicio = $mysqli->query("SELECT vs.vivienda_vivienda_id FROM vivienda_servicio vs WHERE vs.vivienda_vivienda_id = $idget AND vs.servicio_servicio_id = ".$servicio['servicio_id']);
$viviendaConServicio = $viviendaConServicio->fetch_array();
echo json_encode($viviendaConServicio);
if(isset($viviendaConServicio['vivienda_vivienda_id'])){
?>
<option value='<?php echo $servicio['servicio_id']; ?>' selected><?php echo $servicio['nombre']; ?></option>
<?php
}else{
?>
<option value="<?php echo $servicio['servicio_id']; ?>"><?php echo $servicio['nombre']; ?></option>
<?php
}
?>
<?php } ?>