Выпадающий список PHP / MySQL с несколькими столбцами, проблема с синтаксисом

#php #mysql #select #drop-down-menu #alias

#php #mysql #выберите #выпадающее меню #псевдоним

Вопрос:

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

Я получаю список строк, если отбрасываю функцию CONCAT и выбираю один столбец, но я не могу понять, как выбрать более одного. Что я делаю не так?

 <li>
    <?php 
    $sql="SELECT CONCAT(county, ' ',municipality, ' ',park), id FROM mtmg.locality";
    $result=mysql_query($sql, $connection);

    echo '<label for="county_municipality_park">County, Municipality, Park</label>';
    echo '<select  id="county_municipality_park" name="county_municipality_park">';

    while ($row = mysql_fetch_assoc($result)) {echo '<option value="'.$row['county,municipality,park'].'">'.$row['county,municipality,park'].'</option>';}
    echo mysql_error();

    echo '</select>';
    ?>
</li>
  

Ответ №1:

Вам нужно присвоить вашей функции CONCAT() псевдоним, что-то вроде

 SELECT CONCAT(county, ' ',municipality, ' ',park) as county_municipality_park, id FROM ...
  

и затем ссылайтесь на него как таковой в $row массиве, т.е. $row['county_municipality_park'] .

Комментарии:

1. @SabeenMalik @spanky Отличное объяснение! Еще одна вещь, это работает, только если все значения не равны null. Есть ли какой-либо способ показать частичные результаты?

2. Я мог бы выбрать округ, муниципалитет и парк отдельно, а затем ссылаться на них все вместе в PHP. Как только он будет помещен в массив $ row, PHP будет обрабатывать значения NULL и blank одинаково, поэтому вместо эха $row['county_municipality_park'] вы могли бы выполнять echo $row['county'].' '.$row['municipality'].' '.$row['park'] . Это то, что вы ищете?

3. Фантастика! Это именно то, что я искал. И последнее, я еще не смог это протестировать, но на основе текущего запроса: $sql="SELECT county, municipality, park, id FROM mtmg.locality"; отображается ли все, кроме последнего значения после ВЫБОРА, конечное значение (id), которое будет сохранено в $ _POST[‘county_municipality_park’]? Я должен изучать PHP / MySQL по мере выполнения своей работы, так что для меня это пока не очевидно.

4. Вы можете отобразить любое из выбранных полей. Вы использовали mysql_fetch_assoc($result) для преобразования их в массив с именем $row , поэтому любой из них может быть вызван оттуда, например, $row[‘id’], $row[‘municipality’] и т.д. Данные сохраняются в $_POST, когда вы используете их в качестве значений для input элементов в HTML, а затем отправляете данные с помощью <form> с помощью метода post. Это действительно слишком много, чтобы писать об этом в комментарии. Я предлагаю вам ознакомиться с некоторыми руководствами!

5. Хорошо, спасибо! Я разобрался во всем этом с вашей помощью. Я должен ввести: echo '<option value="'.$row['id'].'">'.$row['county'].', '.$row['municipality'].', '.$row['park'].'</option>' чтобы получить то, что я хочу. Я должен был это знать, но это не было очевидно для меня до сих пор. Изначально я писал форму в openoffice base, и я думал, что это что-то в синтаксисе SQL, что разграничивает отображаемые и хранимые данные.

Ответ №2:

попробуйте это

 $sql="SELECT CONCAT(county, ' ',municipality, ' ',park) as location , id FROM mtmg.locality";
  

и затем используйте $row['location']