|
|
|
| Как организовать, чтобы в расскрывающемся списке данные брались из базы.
Например есть такой расскрывающийся список
<select class="input" type=text name=district>
<option value='none' <?php if($_POST['district']=='none') echo "selected"; ?>>любое
<option value='Al' <?php if($_POST['district']=='Al') echo "selected"; ?>>Al
<option value='HB' <?php if($_POST['district']=='HB') echo "selected"; ?>>HB
<option value='UAL' <?php if($_POST['district']=='UAL') echo "selected"; ?>>UAL
</select>
|
где district - столбец в таблице table. Как можно организовать тот же самый список, но чтобы данные брались из базы из таблицы table столбца district. | |
|
|
|
|
|
|
|
для: Vova
(13.06.2006 в 15:11)
| |
<select class="input" type=text name=district>
<?
$sql = "SELECT * FROM table";
$r_sql = mysql_query($sql);
while ($res = mysql_fetch_array($r_sql))
{
?>
<option value='none' ><? echo $res['district']; ?> </option>
<? } ?>
</select>
|
| |
|
|
|
|
|
|
|
для: Boss
(13.06.2006 в 19:20)
| | Супер! Всё классно работает, спасибо ). А вот хотел спросить, а как можно при тех же самых условиях
<select class="input" type=text name=district>
<?
$sql = "SELECT * FROM table";
$r_sql = mysql_query($sql);
while ($res = mysql_fetch_array($r_sql))
{
?>
<option value='none' ><? echo $res['district']; ?> </option>
<? } ?>
</select>
|
Чтобы в списке показывались только разные значения. Например, в district значения: HB, HB, HB, AL, HB, AL. При таком запросе выводятся все эти значения, но нужно, чтобы выводилось только разные по одному разу - HB и AL. | |
|
|
|
|
|
|
|
для: Vova
(14.06.2006 в 12:17)
| | Для этого SQL-запрос
следует изменить на
SELECT * FROM table GROUP BY district
|
| |
|
|
|
|
|
|
|
для: Vova
(14.06.2006 в 12:17)
| | т.е. вы хотите исключить все дубликаты, насколько я понимаю:
измените строчку:
$sql = "SELECT * FROM table";
|
на
$sql = "SELECT DISTINCT * FROM table";
|
| |
|
|
|
|
|
|
|
для: Boss
(13.06.2006 в 19:20)
| | = | |
|
|
|
|
|
|
|
для: Vova
(14.06.2006 в 12:17)
| | Рано я обрадовался, в списке появляются данные из таблицы, но, поиск по этим данным не проходит ).
В этом варианте
<select class="input" type=text name=district>
<option value='none' <?php if($_POST['district']=='none') echo "selected"; ?>>любое
<option value='Al' <?php if($_POST['district']=='Al') echo "selected"; ?>>Al
<option value='HB' <?php if($_POST['district']=='HB') echo "selected"; ?>>HB
<option value='UAL' <?php if($_POST['district']=='UAL') echo "selected"; ?>>UAL
</select>
|
и далее у меня
if(isset($_POST['search']))
{
?>
<a name=table></a>
<?php
// Флаг равен true, если есть хотя бы один критерий поиска
$is_query = false;
// Проверяем наличие и число параметров поиска
$tmp1 = $tmp2 = $tmp3 = $tmp3 = $tmp4 = $tmp5 = $tmp6 = $tmp7 = $tmp8 =
$tmp9 = $tmp10 = $tmp11 = $tmp12 = $tmp13 = $tmp14 = $tmp15 = $tmp16="";
if(isset($_POST['district']) && $_POST['district']!='none')
$tmp1 = " and district='".$_POST['district']."'";
...
// Формируем запрос из переданных данных
$query = "SELECT * FROM table
WHERE hide='show'
".$tmp11.$tmp1.$tmp2.$tmp3.$tmp4.$tmp5.$tmp6.$tmp7.$tmp8.
$tmp9.$tmp10.$tmp12.$tmp13.$tmp14.$tmp15.$tmp16."
ORDER BY currency";
// Выполняем SQL-запрос
$prt = mysql_query($query);
if(!$prt) puterror("Ошибка при обращении к таблице");
// количество рядов в наборе должно быть больше нуля
if (mysql_num_rows($prt)>0)
{
?>
...
<?
while($par = mysql_fetch_array($prt))
{
....
<td> $distr</td>
|
В этом случае поиск идёт нормально (по выбираемым значениям списка).
Но, если список организовать так
<select class="input" type=text name=district>
<?
$sql = "SELECT * FROM table";
$r_sql = mysql_query($sql);
while ($res = mysql_fetch_array($r_sql))
{
?>
<option value='none' ><? echo $res['district']; ?> </option>
<? } ?>
</select>
|
То, значения в расскрывающемся списке появляются, но поиск не ведётся. Ни как не могу разобраться, в чём дело. | |
|
|
|
|
|
|
|
для: Vova
(14.06.2006 в 13:42)
| | Дело в том, что при передаче из формы php сценарию переменная $name будет пуста:
для этого, передайте вот так:
<select class="input" type=text name=district>
<?
$sql = "SELECT * FROM table";
$r_sql = mysql_query($sql);
while ($res = mysql_fetch_array($r_sql))
{
?>
<option value='<?= $res['district']; ?>' ><?= $res['district']; ?> </option>
<? } ?>
</select>
|
И тогда у вас будет все тип-топ =) | |
|
|
|
|
|
|
|
для: Vova
(14.06.2006 в 13:42)
| | Дело в том, что при передаче из формы php сценарию переменная $name будет пуста:
для этого, передайте вот так:
<select class="input" type=text name=district>
<?
$sql = "SELECT * FROM table";
$r_sql = mysql_query($sql);
while ($res = mysql_fetch_array($r_sql))
{
?>
<option value='<?= $res['district']; ?>' ><?= $res['district']; ?> </option>
<? } ?>
</select>
|
И тогда у вас будет все тип-топ =) | |
|
|
|
|
|
|
|
для: Boss
(14.06.2006 в 13:50)
| | Всё тип-топ, спасибо )
Я там ещё добавил строчку, чтоб можно было искать по любому значению:
<select class="input" type=text name=district>
<option value='none' <?php if($_POST['district']=='none') echo "selected"; ?>>любое
<?
$sql = "SELECT * FROM products GROUP BY district";
$r_sql = mysql_query($sql);
while ($res = mysql_fetch_array($r_sql))
{
?>
<option value='<?= $res['district']; ?>' ><?= $res['district']; ?> </option>
<? } ?>
</select>
|
Выбирая любое значение из списка - всё ищется нормально, включая, если выбрать значение "любое", но вот после поиска значение в списке устанавливается на первое - "любое". А как сделать, чтобы значение оставалось тем, которое было выбрано. Без добавленной мною строчки, значение после поиска тоже устанавливается на первое в списке ... | |
|
|
|
|
|
|
|
для: Vova
(14.06.2006 в 17:45)
| |
<select class="input" type=text name=district>
<option value='none' <?php if($_POST['district'] == 'none') echo "selected"; ?>>любое</option>
<?
$sql = "SELECT * FROM products GROUP BY district";
$r_sql = mysql_query($sql);
while ($res = mysql_fetch_array($r_sql))
{
?>
<option value='<?= $res['district'];?>' <? if ($_POST['district'] == $res['district'] echo 'selected'); ?>><?= $res['district']; ?> </option>
<? } ?>
</select>
|
| |
|
|
|
|
|
|
|
для: Boss
(14.06.2006 в 19:01)
| | Всё в точности так поменял, но появляется белый экран.
В этом случае работает
<option value='<?= $res['district'];?>' ><?= $res['district']; ?> </option>
|
но, когда вместо этой строчки вставляю
<option value='<?= $res['district'];?>' <? if ($_POST['district'] == $res['district'] echo 'selected'); ?>><?= $res['district']; ?> </option>
|
Появляется белый экран
Вопрос решился. Строчку переделал так
<option value='<?= $res['district'];?>'<?php if ($_POST['district']==$res['district']) echo "selected"; ?>><?= $res['district']; ?> </option>
И всё заработало. Сэнкс )
|
| |
|
|
|
|
|
|
|
для: Vova
(15.06.2006 в 12:56)
| | смотрите исх.код HTML. У Вас все сообщения об ошибках остались там, из-за нарушения в синтаксисе тегов.
Причина в том, что круглая скобка ушла после echo 'selected' , а должна быть перед ним. | |
|
|
|