#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']