Php - Как исключить данные из MySQL - PullRequest
3 голосов
/ 08 августа 2009

Как исключить некоторые страны из списка меню ниже? Теперь мой код будет перечислять все названия стран из базы данных.

Пример. Я хочу исключить страну из Албании из списка меню. Как реализовать это в соответствии с этим кодом.

код

    <?php $select_country=mysql_query("SELECT * FROM tbl_country ORDER BY country_name ASC")?>
    <select name="country"  onchange="return get_country(this.value);">
        <option value=""><?=SELECT_COUNTRY?></option>
        <? while($country=mysql_fetch_array($select_country)) {?>
           <option  <? if($_SESSION['getcountry']==$country['id']){ ?> selected="selected"<? }?> value="<?=$country['id']?>">
           <?=$country['country_name']?></option>
        <? } ?>
    </select>

Mysql

id    country_name
1   Afghanistan
2   Aland Islands
3   Albania
4   Algeria
5   American Samoa
6   Andorra

Ответы [ 6 ]

6 голосов
/ 08 августа 2009

Либо исключить эту строку из набора результатов:

SELECT * FROM tbl_country WHERE country_name != "Albania" ORDER BY country_name ASC

Или вы пропустите его с помощью PHP:

<?php
    while($country=mysql_fetch_array($select_country)) {
        if ($country['country_name'] == 'Albania') {
            continue;
        } ?>
    <option <?php if($_SESSION['getcountry']==$country['id']){ ?> selected="selected"<? }?> value="<?=$country['id']?>"><?=$country['country_name']?></option>
<?php } ?>
2 голосов
/ 08 августа 2009
"SELECT * FROM tbl_country WHERE country_name <> "Albania" ORDER BY country_name ASC"

«<>» эквивалентно «! =», И они оба означают «не равно», поэтому теоретически следует выбрать все записи из таблицы, где название страны не равно определенному «Албания».

Я думаю, что также работает следующее:

"SELECT * FROM tbl_country WHERE country_name NOT IN("Albania","other_country_name", "another_country_name") ORDER BY country_name ASC"
1 голос
/ 08 августа 2009
<?php $select_country=mysql_query("SELECT * FROM tbl_country ORDER BY country_name ASC")?>
    <select name="country"  onchange="return get_country(this.value);">
    <option value=""><?=SELECT_COUNTRY?></option>
    <?php 
       $exclude = array('Afghanistan', 'Andorra');
       while($country=mysql_fetch_array($select_country)) {
         if(!in_array($country['name'], $exclude){
    ?>
    <option  <? if($_SESSION['getcountry']==$country['id']){ ?> selected="selected"<? }?> value="<?=$country['id']?>"><?=$country['country_name']?></option>
    <? }} ?>
    </select>
1 голос
/ 08 августа 2009

Вы можете установить массив стран, которые вы хотите исключить ...

<?php

$excludeArray = array('Albania','United States') ;

$select_country=mysql_query("SELECT * FROM tbl_country ORDER BY country_name ASC");

echo <<<HTML
    <select name="country"  onchange="return get_country(this.value);">
    <option value=""><?=SELECT_COUNTRY?></option>
HTML;

while($country=mysql_fetch_array($select_country)) {
  if (!in_array($country['country_name'],$excludeArray)) {
    $selected = ($_SESSION['getcountry']==$country['id'] ? 'selected="selected"' : '');
    echo "<option value='" . $country['id'] . "' " . $selected . ">" . $country['country_name'] . "</option>" ;
  }
echo "</select>";


?>
1 голос
/ 08 августа 2009

Если я понял ваш вопрос:

 mysql_query("SELECT * FROM tbl_country WHERE country_name <> 'Algeria' ORDER BY country_name ASC")
0 голосов
/ 26 мая 2012

почему бы просто не сделать статус в вашей базе данных? Например, Албания показывает статус , чем вы можете использовать SELECT FROM country WHERE status='show'

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