Multi select, я не могу заставить это функционировать с BD

Я пробую делать формуляр редактирования, в котором есть поле, которое является 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>

Вопрос состоит в том, что меня замедляет браузер и кроме того удваивает мне все услуги, потом с другой стороны я не могу сохранять их хорошо, но это другая тема: какая-то подсказка?

0
задан 21.03.2019, 09:44
1 ответ

Решенный таким образом.

<?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 } ?>
0
ответ дан 02.12.2019, 05:22

Теги

Похожие вопросы