@Ibishka

Плохо ли так выводить html?

<?php
      if (isset($_POST['register'])) {
        $user = mysqli_fetch_assoc(mysqli_query($connection, "SELECT * FROM `users` WHERE `email` = '" . $_POST['email'] . "'"));
        if ($user) {
        echo  '<p class="error">This email address is already associated with an account.</p>';
        }
      }
      ?>

Или так лучше?
<?php
      if (isset($_POST['register'])) {
        $user = mysqli_fetch_assoc(mysqli_query($connection, "SELECT * FROM `users` WHERE `email` = '" . $_POST['email'] . "'"));
        if ($user) {
      ?>
          <p class="error">This email address is already associated with an account.</p>
      <?php
        }
      }
      ?>
  • Вопрос задан
  • 151 просмотр
Решения вопроса 2
FanatPHP
@FanatPHP
Чебуратор тега РНР
Плох и тот и другой вариант.

Он подразумевает что вывод идёт прямо вперемешку с запросами к БД. А надо сначала выполнить все запросы, собрать все данные для вывода, и только потом начинать выводить.
<?php
if (isset($_POST['register'])) {
    if ($user) {
        $error = "This email address is already associated with an account.";
    }
  // остальные проверки

и только после того как закончили все проверки, начинаем выводить хтмл.

А вот что в этих кусках кода действительно плохо - это то что переменная пихается прямо в запрос.

Да. И никакого "накладного расхода" при испльзовании echo, тем более по сравнению с другими вариантами вывода, в природе не существует - это всё бабкины сказки.
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
В целом - дело вкуса, можете вообще heredoc использовать. Я предпочитаю второй способ, в частности:
1) редактор понимает стили и форматирование
2) редактор понимает открытие/закрытие тегов
3) редактор умеет фолдинг хтмл кода, что удобно
4) меньше ошибок с кавычками и экранированием

и - мелочь, но цепляет - использовать ехо для вывода - небольшой, но накладной расход.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы