получать только определенные записи базы данных - PullRequest
0 голосов
/ 24 апреля 2020

Код ниже получает несколько доменов из моей базы данных и выводит их в раскрывающемся списке. Мне нужна помощь, так как я не могу получить это изменение, я хочу заставить работать.

Я хочу показать только домены, где в базе данных premium_only установлено значение 6, больше ничего. Если я пытаюсь изменить оператор if на $shortUrlDomain['premium_only'] == 6, я не вижу никаких доменов, отображаемых в списке, для которого premium_only имеет значение 6 в базе данных. Почему?

Структура базы данных:

id | domain      | premium_only | status  | date_created
---+-------------+--------------+---------+-------------------
1  | exaple.com  | 0            | enabled | 2020-03-02 08:13:0
2  | exaple2.com | 6            | enabled | 2021-03-02 08:13:0

PHP код:

<div>
  <label for="shortUrlDomain"><?php echo t("short_url_domain", "Short Url Domain"); ?>:</label>
  <select id="shortUrlDomain" name="shortUrlDomain" style="width: 100%;">
<?php
foreach ($shortUrlDomains AS $k => $shortUrlDomain) {
  // active domains only
  if ($shortUrlDomain['status'] != 'enabled') {
    continue;
  }
  $lastPremiumOnly = $shortUrlDomain['premium_only'];
  echo '<option value="' . (int)$k . '"';
  // selected option
  if ($k == (int)$_REQUEST['shortUrlDomain']) {
    echo ' SELECTED';
  }
  echo '>';
  '</option>';
}
echo '</optgroup>';
?>
  </select>
</div>


// get base urls
$shortUrlDomains = getShortUrlDomains();


    static function getShortUrlDomain($domainId)
    {
        // get base urls
        $shortUrlDomains = getShortUrlDomains();

        if(!isset($shortUrlDomains[$domainId]))
        {
            return _CONFIG_SITE_PROTOCOL.'://'._CONFIG_SITE_FULL_URL;
        }

        return _CONFIG_SITE_PROTOCOL.'://'.$shortUrlDomains[$domainId]['domain'];
    }

1 Ответ

1 голос
/ 24 апреля 2020

Это немного глупо, но вы могли бы добавить это утверждение ранее в своем коде.

В идеале вы бы изменили запрос к базе данных дальше по стеку, но ваш вопрос не включает упоминания о том, как вы set $shortUrlDomains.

<?php
// somewhere before you render the HTML as in the snippet from your Q.

/**
 * This makes shortUrlDomains into a subset of the original array, 
 * showing only those who have a `premium_only` key with a value of `6`.
 */
$shortUrlDomains = array_filter($shortUrlDomains, function($domain) {
    return (int) $domain['premium_only'] === 6;
});

Подробнее о array_filter здесь , в PHP документах.

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