Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > СУБД, общие вопросы > тег SELECT


Автор: PrettyGirl 28.11.2006, 22:21
Приветик всем!!!!
возник вопрос: как сделать поле формы в виде выпадающего списка с использованием тега SELECT и передать в неё массив?(размер массива может изменяться) 
Код
<tr>
<td class = "form_left">ID предмета:</td>
<td class = "form_right">
<select name = "id_pred">
<options value=01>"здесь должны быть записи id_pred из таблицы topik"</option>
</select>
</td>
</tr>

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

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

Автор: LSD 28.11.2006, 22:49
Надо генерировать страницу скриптом.

P.S. Я извиняюсь за нескромный вопрос, какой у вас цвет волос?

Автор: PrettyGirl 29.11.2006, 10:34
smile)) вот стоит только спросить что-то невпопад и сразу..smile не блонд точно;)
сделала таким образом вывод: 
Код
<?php

$dbsl=mysql_select_db('lid');

echo "<form method = \"post\">";

echo "ID специальности:";
echo "<select name = \"id_spec\" size = \"1\">";

$spec = mysql_query ("select * from speciality;");
$spec_rows = mysql_num_rows ($spec);

 for ($i = 0; $i < $spec_rows; $i++)
  {
     $spec_arr = mysql_fetch_array ($spec);
     echo "<option  = ".$spec_arr[id_spec].">".$spec_arr[name]."</option>";
     }

echo "</select>";
echo "<br>";

?>

возник такой вопрос: вывод вида: 
 echo "<option  = ".$spec_arr[id_spec].">".$spec_arr[name]."</option>";
не совсем корректно работает.
у меня поле таблицы,которое нужно выводить называется id_spec
данный вывод работает только с id
вывод вида: 
 echo "<option  = ".$spec_arr[id].">".$spec_arr[name]."</option>"; работает
Только вот достаточно неудобно изменять теперь во всей базе id_spec и id_pred  
на id.
Как этого изюежать?

Добавлено @ 10:35 
Да и как же насчет: "каждый человек имеет право немного потупить?" ;)))
я всего пару дней назад начала разбираться с этимsmile 
так что прошу проститьsmile

Автор: Dremlin 29.11.2006, 11:20
LSD, ну чего ты прям сразу про цвет волос?  smile Ключевое слово SELECT присутствует - значит можно постить в раздел по БД  smile 


Цитата(PrettyGirl @  29.11.2006,  09:34 Найти цитируемый пост)
возник такой вопрос: вывод вида: 
 echo "<option  = ".$spec_arr[id_spec].">".$spec_arr[name]."</option>";
не совсем корректно работает.

что значит "не совсем корректно"? вроде должно все работать правильно...

Автор: chief39 29.11.2006, 11:50
Цитата(PrettyGirl @  29.11.2006,  10:34 Найти цитируемый пост)
smile)) вот стоит только спросить что-то невпопад и сразу..smile не блонд точно;)

Цитата(PrettyGirl @  29.11.2006,  10:34 Найти цитируемый пост)
Да и как же насчет: "каждый человек имеет право немного потупить?" ;)))

Да это просто лёгкий флиртsmile

по-первах.... код лучше бы обрамить с помощью кнопки со списком "Код"(справа вверху над окошком ввода текста). А то утром с похмелья ну никак не воспримется у людей smile

по-вторях... скл запрос правильный, потому как простой... то иссь - далее вопрос ПХП раздела. Там уже свои зубры имеются smile

Хотя и жалко девушку отдавать ПХПистам, но... такие правила разделения территории smile

Добавлено @ 11:52 
Цитата(PrettyGirl @  29.11.2006,  10:34 Найти цитируемый пост)
не блонд точно;)

А кто? smile

Автор: LSD 29.11.2006, 12:00
1. Что вы все сразу про блондинок. Мне вот например рыжие девушки нравяться smile , может я с целью познакомиться спросил smile

2. Переименовать столбец из id_spec в id можно в тектсе запроса:
Код
select id_spec as id, name as first_name, .... from my_table


3. Почуму тут:
Цитата(PrettyGirl @  29.11.2006,  10:34 Найти цитируемый пост)
возник такой вопрос: вывод вида: 
 echo "<option  = ".$spec_arr[id_spec].">".$spec_arr[name]."</option>";
не совсем корректно работает.
у меня поле таблицы,которое нужно выводить называется id_spec
данный вывод работает только с id
вывод вида: 
 echo "<option  = ".$spec_arr[id].">".$spec_arr[name]."</option>"; работает
Только вот достаточно неудобно изменять теперь во всей базе id_spec и id_pred  
на id.

возникают проблемы я не знаю, но это вопрос не по базам данных, а скорее по PHP. Если есть желание могу перекинуть тему туда.

Автор: PrettyGirl 29.11.2006, 14:26
Спасибо всем за помощь!!!
Разобралась самаsmile 
снова появились, конечно,новые вопросы;)
ПХПистам что ли нанести визитsmile
Я симпотичная голубоглазая брюнетка!

Автор: LSD 30.11.2006, 00:13
Цитата(PrettyGirl @  29.11.2006,  14:26 Найти цитируемый пост)
Разобралась сама

Молодец smile Только не забывай пользоваться кнопкой Пометить вопрос как решенный.


Цитата(PrettyGirl @  29.11.2006,  14:26 Найти цитируемый пост)
Я симпотичная голубоглазая брюнетка!

А можно полюбоваться? smile 
В профиле как раз есть прекрастное место для фотографии smile

Автор: PrettyGirl 30.11.2006, 00:32
возник новый вопрос: при обновлении таблицы(корректировка данных). Алгоритм обновления такой: 
сначала пользователь выбирает из списка всех возможных специальностей ту, которую собирается редактировать, получаем id_spec этой специальности и передаем в обработчик.

Далее пользователю предлагается ввести новое значение специальности, в то же поле id_spec smile
Код
<tr>
<td align ="left" width="40%">
<b>ID специальности</b> </td>
<td align="left">
<input type="varchar" name = "id_spec1" size=81 maxlength=30>
</td></tr>

 когда я начинаю получать в обработчике значение переменной id_spec. 
То приходит уже значение новой специальности...Как сделать разными id_spec?
Вот выбираемая для корректировки специальность:
Код
<?php
$dbsl=mysql_select_db('lid');
echo "<form method = \"post\">";
echo "<td align=\"left\">";
echo "<b> ID специальности </b>";
echo "<ID spec size=81 maxlength=30>";

echo "<select name = id_spec size = 1>";

$spec = mysql_query ("select id_spec from speciality;");
$spec_rows = mysql_num_rows ($spec);

 for ($i = 0; $i < $spec_rows; $i++)
  {
     $spec_arr = mysql_fetch_array ($spec);
echo "<option value=\"".$spec_arr[id_spec]."\">".$spec_arr[id_spec]."</option>";
     }

echo "</select>";
echo "<br>";

?>


а вот вновь вводимая специальность:
Код
<tr>
       <td align ="left" width="40%">
<b>ID специальности</b> </td>
<td align="left">
<input type="varchar" name = "id_spec1" size=81 maxlength=30>
</td></tr>

значение id для редактируемой специальности нужно,чтобы её удалить из таблицы, и вписать новую smile

Автор: Dremlin 30.11.2006, 09:41
Цитата(PrettyGirl @  29.11.2006,  23:32 Найти цитируемый пост)
значение id для редактируемой специальности нужно,чтобы её удалить из таблицы, и вписать новую

 smile 
зачем удалять и вписывать, когда нужно просто отредактировать?

Код

UPDATE speciality SET id_spec=$id_spec1 WHERE id_spec=$id_spec

Автор: LSD 30.11.2006, 11:26
Нифига не понял. В чем вопрос? Как сгенерировать новый id_spec, или узнать старый?

P.S. Пользуйся кнопкой код для вставки исходного кода.

Автор: check 30.11.2006, 15:11
Цитата(PrettyGirl @  30.11.2006,  00:32 Найти цитируемый пост)
<input type="varchar"
И что, у вас из этого поля в самом деле что-то приходит?  Блин,  HTML богаче, чем я думал  smile

Добавлено @ 15:16 
Кроме шуток,  счас попробовал - приходит.  Что, в самом деле бывают такие input-ы,   типа varchar?

Добавлено @ 15:19 
HTML классный язык,   очень расширяемый!  
Я сейчас в атрибуте type написал неприличное слово,  причем русскими буквами,  и что же - все отлично работает!  

Автор: skyboy 30.11.2006, 15:23
check, скорее всего, неверный аттрибут просто игнорируется. А по-умолчанию <input> имеет тип "text". Потому и работает форма-то.

Автор: check 30.11.2006, 15:28
Да,   я так и понял.  

Автор: chief39 30.11.2006, 16:25
check, главное не что писать можно, а что браузер скушает.
А он, в отличие от компилятора, сволочь та ещё молчаливая...


LSD, "ну и рожа у тебя, Шарапов" smile)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)