Генерация элемента со скриптом php скриптом php - PullRequest
0 голосов
/ 05 мая 2020

Я пытаюсь выучить php и теперь застрял в одном. У меня есть такой код:

<select name = "Option1" id ="Option1">
 <option value="0">Option1</option>
  <?php
   include ("db_connect.php");
   $option1 = $pdo->query("SELECT * FROM options");
   while($row = $option1->fetch(PDO::FETCH_ASSOC)){
    echo '<option value = "' . $row['id'] . '">' . $row['name'] . '</option>';
   }
  ?>
</select>

Это элемент выбора с параметрами из базы данных. Но мне нужно их 5, и копировать этот кусок кода 5 раз просто бессмысленно, или я ошибаюсь?

Я пробовал что-то вроде этого:

     function renderSelect()
    {
        for ($a = 0; $a < 5; $a++){
            echo '<select>
                    <option value="0">Option ' . $a . '</option>
                    ' . renderOptions($a) . '
                  </select>';
        }
    }


    function renderOptions(){

   include ("db_connect.php");
   $option1 = $pdo->query("SELECT * FROM options");
   while($row = $option1->fetch(PDO::FETCH_ASSOC)){
    echo '<option value = "' . $row['id'] . '">' . $row['name'] . '</option>';
   }
  }

А затем просто позвоните renderSelect, но он работает не так, как ожидалось.

Не могли бы вы дать мне небольшой совет что здесь делать?

Большое спасибо, я ценю это!

1 Ответ

0 голосов
/ 05 мая 2020

Попробуйте использовать return во второй функции. Если вы повторите его во второй функции, он добавит вывод эха в начало, где вы вызвали функцию. Вы создаете строку, в которую добавляете все свои параметры, а затем возвращаете эту строку.

function renderOptions(){

   include ("db_connect.php");
   $option1 = $pdo->query("SELECT * FROM options");

   $string = "";
   while($row = $option1->fetch(PDO::FETCH_ASSOC)){
    $string .= '<option value = "' . $row['id'] . '">' . $row['name'] . '</option>';
   }

   return $string;
}

И еще один момент, о котором стоит упомянуть, вы вызываете renderOption функцию и передаете $a функции, который принимает параметр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...