|
|
|
| Из БД формирую поочередно значения и заношу их в таблицу. Как мне узнать, какое поле выбрано из selecta?
$arr=array('user', 'moderator', 'admin');
echo "<td valign=center><p class=zag2>".$usr['priority']."
<select class=input type=text name='prior[]'>";
for($i = 0; $i <= 2; $i++){
if($priority == $i) $temp = "selected"; else $temp = "";
echo "<option value=$i $temp>".$arr[$i]."</option>";
$f=print_r($_POST['prior'][$i]);
}
echo "</select></td>
<td><p class=zag2>".$usr['ip']."</td>
<td><a href='index.php?id_user=".$usr['id_user']."&prior=$f'>Изменить</a><br>
<a href='del_user.php?id_user".$usr['id_user']."'>Удалить</a>
</td>
</tr>";
|
| |
|
|
|
|
|
|
|
для: diman
(29.07.2009 в 12:16)
| | prior[] - так дают имена спискам с мультивыбором, а у вас зачем? А узнать по значению поля выбранного опшена, и если $i равно выбранному значит установить атрибут SELECTED ему. | |
|
|
|
|
|
|
|
для: sim5
(29.07.2009 в 13:18)
| | знаю, что именно так и надо делать, давно не прибегал к select и уже совсем забыл как это осуществить. Впереди кода из БД выбирается нужное поле, значения поля заносятся в массив, а затем в цикле while и происходит выше описанный код. Никак не могу понять как передать по ссылке выбранное поле. Помогите пожалуйста | |
|
|
|
|
|
|
|
для: Diman
(29.07.2009 в 13:44)
| | Ссылка передается методом GET, и, например, значение этого списка (выбранного опшена) приходит от клиента в переменной с именем sel. Тогда:
<?
echo "<select class=input type=text name='prior'>";
for($i = 0; $i <= 2; $i++){
$temp = intval($_GET['sel']) == $i ? "selected" : "";
|
Еще раз повторяю - если у вас один список, и он не имеет атрибута multiple, то именовать его как prior[], это проблемы для самого себя.
PS. У вас список содержит всего три опшена, и первый не выбран по умолчанию, от сюда можно предположить, что выбрать можно только два значения 1 и 2. Не проще ли в таком случае применить вместо списка радиокнопки? | |
|
|
|
|
|
|
|
для: sim5
(29.07.2009 в 13:55)
| | Немного изменяю код и всё равно нужное поле не выбирается
Не использую радиокнопки, т.к. приоритеты могут в будущем добавиться
echo "<td valign=center><p class=zag2>".$usr['priority']."
<select class=input type=text name='prior'>";
for($i = 0; $i <= 2; $i++){
$temp = intval($_GET['prior']) == $i ? "selected" : "";
if (intval($_GET['prior']) == $i) {
$pr=$i;
switch($pr)
{
case 0: $prior="user";
break;
case 1: $prior="moderator";
break;
case 2: $prior="admin";
break;
default: $prior=$usr['priority'];
}
}
echo "<option value=$i $temp>".$arr[$i]."</option>";
} // End for
echo "</select></td>";
|
| |
|
|
|
|
|
|
|
для: Diman
(29.07.2009 в 15:34)
| | Во-первых, что это ерунда такая, switch в цикле? Проверять принятые данные надо не по итерации цикла, а по....? Думайте.
<?
$prior = isset($_GET['prior']) ? intval($_GET['prior']) : 0;
echo "<form><select class='input' type='text' name='prior'>
<option value=0>Selected</option>";
for($i = 1; $i <= 3; $i++) {
$temp = $prior == $i ? "selected" : "";
echo "<option value=$i $temp>Select $i</option>";
}
echo "</select><input type='submit' value='Send'></form>";
if ($prior) {
switch($prior) {
case 1 : $prior="user";
break;
case 2 : $prior="moderator";
break;
case 3 : $prior="admin";
break;
default: $prior=$usr['priority'];
}
}
|
А вообще, весь код на какой-то маразм похож, ну честное слово. | |
|
|
|
|
|
|
|
для: sim5
(29.07.2009 в 16:07)
| | Тогда забудем про этот уже действительно получаемый бред. Создадим простую форму
<form action=index.php?id_user=<? $usr['id_user']?> method=post>
<table>
<tr>
<td>
<select class=input type=text name=h>
<option value=1 <? if($h==1) echo "selected";?>>user
<option value=2 <? if($h==2) echo "selected";?>>moderator
<option value=3 <? if($h==3) echo "selected";?>>admin
</select></td>
<td><input class=button type=submit value=Изменить></td>
</tr>
</table>
<input type=hidden name=action value=post>
</form>
<? if (isset($_POST['action'])) echo "Приоритет = "; print_r($_POST['h']);?>
|
Выводится всё время 1. Что не так? | |
|
|
|
|
|
|
|
для: Diman
(30.07.2009 в 09:12)
| | Прошу прощенья. Простая форма рабочая. А если так:
<table class=bodytable border=1>
<?
$query="Select * From userlist";
$rez=mysql_query($query);
if(!$rez) error("Ошибка при обращении таблице пользователей");
// Если в текущей группе пользователей имеется хотя бы один
// - формируем таблицу с пользователями
if(mysql_num_rows($rez) > 0)
{
while($usr = mysql_fetch_array($rez))
{
echo "<tr><td valign=center><p class=zag2>".$usr['priority'];
?>
<form action=index.php?id_user=<? $usr['id_user']?> method=post>
<select class=input type=text name=h>
<option value=1 <? if($h==1) echo "selected";?>>user
<option value=2 <? if($h==2) echo "selected";?>>moderator
<option value=3 <? if($h==3) echo "selected";?>>admin
</select></td>
<td><input class=button type=submit value=Изменить></td>
<?
}
}
?>
</table>
<input type=hidden name=action value=post>
</form>
<? if (isset($_POST['action'])) echo "Приоритет = "; print_r($_POST['h']);?>
|
Тогда всё время выводится 1 для первых строк, а с последней всё как надо. Где-то наверное я не туда включил строку кнопки.
Конечно это не все поля формы. Я включил только те, которые требуются. | |
|
|
|
|
|
|
|
для: Diman
(30.07.2009 в 09:29)
| | Закрываю данную тему. Вопрос решен. Нужно было для каждого пользователя создавать отдельную форму в цикле while. Надо было раньше об этом сказать, что действие происходит именно так и давно бы всё решилось. А то пришлось уже разный маразм сочинять | |
|
|
|
|
|
|
|
для: diman
(29.07.2009 в 12:16)
| | когда вам надо узнать:
1. при построении селекта
2. при изменении (onchange) вашего селекта
3. после сабмита формы
?
upd
и для чего? | |
|
|
|
|
|
|
|
для: ride
(29.07.2009 в 15:49)
| | сразу после изменения селекта переменная $prior должна принимать нужное значение, а затем это значение мне надо передать при помощи $_GET по ссылке.
Хочу чтобы в админ-панели можно было сразу изменять приоритеты пользователя. Удобно, выбираешь из списка нужный приоритет и нажимаешь на ссылку изменить. После чего в БД будет идти апдейт поля приоритета. | |
|
|
|
|
|
|
|
для: Diman
(29.07.2009 в 15:54)
| | если так, то вам нужен яваскрипт
или же два <input type=submit> (вместо ссылок)
я предпочитаю второй вариант | |
|
|
|