Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вывод из базу при выборе значения в списке
 
 автор: studentPO   (04.06.2010 в 07:19)   письмо автору
 
 

Подскажите как сделать вывод из базы при выборе значения из списка?

<select name="select" id="select">
<option>значение 1</option>
<option>значение 2</option>
<option>Значение 3</option>
</select>

При выборе Значения 1 на ту же страницу где и этот список должны выводиться записи со значением 1.

  Ответить  
 
 автор: sim5   (04.06.2010 в 07:29)   письмо автору
 
   для: studentPO   (04.06.2010 в 07:19)
 

<select name="sel" id="sel">
<option value=1>значение 1</option>
<option value=2>значение 2</option>
<option value=2>Значение 3</option>
</select>
Не именуйте объекты зарезервированными словами, напоретесь когда либо на нехорошее.

  Ответить  
 
 автор: StudentPO   (04.06.2010 в 07:31)   письмо автору
 
   для: sim5   (04.06.2010 в 07:29)
 

Вопрос был другой, но за совет спасибо!

  Ответить  
 
 автор: sim5   (04.06.2010 в 07:40)   письмо автору
 
   для: StudentPO   (04.06.2010 в 07:31)
 

По вопросам конкретной выборки из базы, это вам надо обращаться к учебникам и мануалам, можно таже смотреть темы этого раздела форума.
Выборка из базы осуществляется оператором SELECT.
В общем изучать надо.

  Ответить  
 
 автор: StudentPO   (04.06.2010 в 07:45)   письмо автору
 
   для: sim5   (04.06.2010 в 07:40)
 

Про SELECT это понятно.
Вот выбираю данные независимо от того что выбрано в списке
$sql=mysql_query("SELECT `id`,`vid`,`tenderName`,`zakazchik`,`datePubl`,`dateBegin`,`dateEnd` from `tenders` order by `dateEnd` LIMIT $pageNav->start, $pageNav->limit");

Как сделать так, чтобы при выборе значения из списка работал бы запрос
$sql=mysql_query("SELECT `id`,`vid`,`tenderName`,`zakazchik`,`datePubl`,`dateBegin`,`dateEnd` from `tenders` order by `dateEnd` LIMIT $pageNav->start, $pageNav->limit where `vid`=то что выбрано в списке"); ?
При этом вывод должен осуществляться на эту же страницу где и список,

  Ответить  
 
 автор: sim5   (04.06.2010 в 07:48)   письмо автору
 
   для: StudentPO   (04.06.2010 в 07:45)
 

Ну коли вы это знаете, то какие проблемы?
Я для чего в ваш список добавил атрибут value опшенам?
Вот эти атрибуты опшенов и должны быть равны id ваших записей (для условия where).
Или это не понятно?

  Ответить  
 
 автор: StudentPO   (04.06.2010 в 07:53)   письмо автору
 
   для: sim5   (04.06.2010 в 07:48)
 

Это понятно. Не соображу как запустить выполнение запроса сразу после выбора значения из списка.
Если приделать кнопку ВЫПОЛНИТЬ в форме, то без проблем, нажал на кнопку и запустился на выаполнение файл с запросом. А если без кнопки?

Вот нашел пример того, как примерно надо сделать.
http://torgi.samregion.ru/catnav/bidclosed/bidclosed//auction/11/ID/bidactive?trade_type_selector=bidactive&TradeType=bidpending

  Ответить  
 
 автор: sim5   (04.06.2010 в 07:56)   письмо автору
 
   для: StudentPO   (04.06.2010 в 07:53)
 

<select name="sel" id="sel" onchange="this.form.submit()">

И форма будет отправлена без нажатия на кнопку submit. Только добавте опшен в начале списка со значением, например, 0, и текстом Выберите..., иначе у пользователя не будет возможности выбрать первое значение из списка.

  Ответить  
 
 автор: StudentPO   (04.06.2010 в 08:06)   письмо автору
 
   для: sim5   (04.06.2010 в 07:56)
 

sim5, спасибо. Но не очень понятно пока. Можно поконкретнее?

  Ответить  
 
 автор: sim5   (04.06.2010 в 08:11)   письмо автору
 
   для: StudentPO   (04.06.2010 в 08:06)
 

<?
print_r
($_POST['sel']);
?>
<form action="" method="post">
<select name="sel" onchange="this.form.submit()">
 <option value="0">Выберите...</option>
 <option value="1">Значение 1</option>
 <option value="2">Значение 2</option>
 <option value="3">Значение 3</option>
</select>
</form>

Выполните, посмотрите, что будете получать на сервере. А теперь уберите опшен <option value="0">Выберите...</option> из списка, и попробуйте выбрать в нем опшен <option value="1">Значение 1</option>. Получается выбрать?

  Ответить  
 
 автор: StudentPO   (04.06.2010 в 08:23)   письмо автору
 
   для: sim5   (04.06.2010 в 08:11)
 

Не получится конечно, с этим ясно все.
я не то имел в виду.

Вот сделал я список

<?
   print_r
($_POST['sel']); 
?> 
<form action="" method="post"> 
<select name="sel" onchange="document.forma.action=document.forma.vid.value;submit()"> 
 <option value="0">Выберите...</option> 
 <option value="1">Значение 1</option> 
 <option value="2">Значение 2</option> 
 <option value="3">Значение 3</option> 
</select> 
</form>


Что еще нужно прописать чтоб выполнялся запрос?

  Ответить  
 
 автор: sim5   (04.06.2010 в 08:32)   письмо автору
 
   для: StudentPO   (04.06.2010 в 08:23)
 

document.forma.action=document.forma.vid.value;submit()" - выбросить. Писать так, как я писал.
Во-первых, это не будет выполнено, так как не верно написано.
Во-вторых, атрибут action формы содержит не значения опшенов, а адрес запрашиваемой страницы (скрипта).
Вы разве не видете при выполнении этого примера, что на сервере вы и будете получать значение выбранного опшена? Если пользователь выберет опшен <option value="2">Значение 2</option>, то сервер получить переменную $_POST['sel'] равную 2.
Если опешены списка вместо 1,2,3... будут содержать реальные id записей в базе, то вы и получите необходимое - номер записи, которую нужно подставить в условие запроса: intval($_POST['sel']).
Что не понятного?

  Ответить  
 
 автор: StudentPO   (04.06.2010 в 08:44)   письмо автору
 
   для: sim5   (04.06.2010 в 08:32)
 

Теперь все прояснилось.
Спасибо за помощь!

  Ответить  
 
 автор: neadekvat   (04.06.2010 в 08:52)   письмо автору
 
   для: sim5   (04.06.2010 в 08:32)
 

Человеку нужны связанные поля формы, а не отправка формы по выбору. По-моему, так.

  Ответить  
 
 автор: sim5   (04.06.2010 в 08:56)   письмо автору
 
   для: neadekvat   (04.06.2010 в 08:52)
 

Даже так? Что-то я не заметил из его повествования. Впрочем, можете у него уточнить.

  Ответить  
 
 автор: StudentPO   (04.06.2010 в 09:00)   письмо автору
 
   для: sim5   (04.06.2010 в 08:56)
 

Необходимо было то, о чем говорил sim5

  Ответить  
 
 автор: studentPO   (04.06.2010 в 21:23)   письмо автору
 
   для: StudentPO   (04.06.2010 в 09:00)
 

А возможно ли использование 2 таких списков с onChange="this.form.submit()" в одной форме?

  Ответить  
 
 автор: sim5   (04.06.2010 в 21:34)   письмо автору
 
   для: studentPO   (04.06.2010 в 21:23)
 

На здоровье, хоть 20. Но если два списка этих будут работать по принципу ИЛИ, а вот если последовательный выбор, то это называется связанными списками.

  Ответить  
 
 автор: StudentPO   (04.06.2010 в 21:45)   письмо автору
 
   для: sim5   (04.06.2010 в 21:34)
 

Допустим у меня 2 списка


<td width="50%" scope="col"><div align="left"><span class="TableTenderHeader">Вид тендера
                      <select name='vid' class="RegistrField" onChange="this.form.submit()">
                        <option value="Тип">Выберите вид тендера</option>
                        <option value="">Все тендеры</option>
                        <option value="1">Аукцион</option>
                        <option value="2">Катировки</option>
                        <option value="3">Конкурс</option>
                      </select>
              </span></div></td>
              <td width="50%" scope="col"><div align="left"><span class="TableTenderHeader">Состояние тендеров 
                      <select name='status' class="RegistrField" id="status" onChange="this.form.submit()">
                        <option value="Состояние">Выберите состояние тендеров</option>
                        <option value="">Все тендеры</option>
                        <option value="1">Активные</option>
                        <option value="0">Завершившиеся</option>
                </select>


И в зависимости от выбранных значений работают запросы
$sql=mysql_query("SELECT `id`,`vid`,`tenderName`,`zakazchik`,`datePubl`,`dateBegin`,`dateEnd` from `tenders` where `vid` like '$vid' order by `dateEnd`"); 


или
 $sql=mysql_query("SELECT `id`,`vid`,`tenderName`,`zakazchik`,`datePubl`,`dateBegin`,`dateEnd` from `tenders` order by `dateEnd`");


В данных запросах выбираются значения в зависимости от того что выбрано в первом списке. Т.е. вид тендеров. А еще необходимо приделать такой же список со статусом тендеров - Активные или Завершенные. Это что получается связанные списки или поп ринципу ИЛИ?

  Ответить  
 
 автор: sim5   (05.06.2010 в 04:38)   письмо автору
 
   для: StudentPO   (04.06.2010 в 21:45)
 

Да, конечно ИЛИ, но неразумное.
Вы же понимаете, что это будут два отдельных запроса, следовательно пользователь никак не получит, например, Аукционы :: Активные, он может получить лишь одно из этих значений.
В вашем случае либо связанные списки нужны (если конечно подобного много у вас), либо добавить в форму группу радиокнопок, которыми можно будет выбрать состояние тендеров, удалив список 'status'. При этом список 'vid' либо не должен отправлять форму (отправка кнопкой submit), либо отправлять, но по событию onsubmit формы проверять - выбрал ли пользователь статус, если для его выбора используется список. А можно просто назначить списку (группе радиокнопок) статус по умолчанию, и списком 'vid' отправлять форму.
В общем, списком "status" отправлять форму в этом сценарии не логично.

PS Кстати, это из каких таких соображений?:
where `vid` like '$vid'

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования