|
|
|
| Не работает вот такая конструкция:
if(isset($_GET[edit_user]))
{
$select=mysql_query("select * from users where id='$_GET[edit_user]';");
$data=mysql_fetch_array($select);
echo $data['rights']; если сделать так то в переменную $data['rights'] попадают данные от 1 до 4
switch($data['rights'])
{
case "4":
$edit_user_interface="
<select name='user_rights'>
<option >-интерфейс пользователя-</option>
<option value='4' selected>Просмотр статистики</option>
<option value='3'>Получатель заявок</option>
<option value='2'>Отправитель заявок</option>
<option value='1'>Исполнитель заявок</option>
</select>
";
break;
case "3":
$edit_user_interface="
<select name='user_rights'>
<option >-интерфейс пользователя-</option>
<option value='4'>Просмотр статистики</option>
<option value='3' selected>Получатель заявок</option>
<option value='2'>Отправитель заявок</option>
<option value='1'>Исполнитель заявок</option>
</select>
";
break;
case "2":
$edit_user_interface="
<select name='user_rights'>
<option >-интерфейс пользователя-</option>
<option value='4'>Просмотр статистики</option>
<option value='3'>Получатель заявок</option>
<option value='2' selected>Отправитель заявок</option>
<option value='1'>Исполнитель заявок</option>
</select>
";
break;
case "1":
$edit_user_interface="
<select name='user_rights'>
<option >-интерфейс пользователя-</option>
<option value='4'>Просмотр статистики</option>
<option value='3'>Получатель заявок</option>
<option value='2'>Отправитель заявок</option>
<option value='1' selected>Исполнитель заявок</option>
</select>
";
break;
}
}
|
Условие именно со Switch-Case не выполняеться.
Подскажите из за чего это может быть? | |
|
|
|
|
|
|
|
для: Eser
(31.01.2011 в 10:41)
| | А в $data['rights'] цифра или строка? Если цифра, то уберите в case кавычки, т.е. вместо
пишите
| |
|
|
|
|
|
|
|
для: cheops
(31.01.2011 в 10:54)
| | Извиняюсь! Был не внимательным. Спасибо за помощь! | |
|
|
|
|
|
|
|
для: Eser
(31.01.2011 в 10:41)
| | Прочитал несколько раз и не понял - а чем различается edit_user_interfac во всех четырех случаях? | |
|
|
|
|
|
|
|
для: sim5
(31.01.2011 в 11:10)
| | Положением атрибута selected. | |
|
|
|
|
|
|
|
для: cheops
(31.01.2011 в 11:12)
| | И что, ради этого писать четырежды одно и тоже, да еще через swith? Ну это же нелепость. | |
|
|
|
|
|
|
|
для: sim5
(31.01.2011 в 11:39)
| | Мне это тоже странным показалось, но сначала не сообразила.
Вот так же лучше смотрится, да и писать меньше:
<?php
switch($data['rights']){
case 4:
$sel = 'selected="selected"';
break;
case 3:
$sel1 = 'selected="selected"';
break;
case 2:
$sel2 = 'selected="selected"';
break;
case 1:
$sel3 = 'selected="selected"';
break;
default:
$sel = '';
$sel1 = '';
$sel2 = '';
$sel3 = '';
}
$edit_user_interface="
<select name='user_rights'>
<option >-интерфейс пользователя-</option>
<option value='4' $sel>Просмотр статистики</option>
<option value='3' $sel1>Получатель заявок</option>
<option value='2' $sel2>Отправитель заявок</option>
<option value='1' $sel3>Исполнитель заявок</option>
</select>
";
?>
|
| |
|
|
|
|
|
|
|
для: Лена
(31.01.2011 в 11:40)
| | а error_reporting(E_ALL) стоит? | |
|
|
|
|
|
|
|
для: Лена
(31.01.2011 в 11:40)
| | И зачем четыре переменных? | |
|
|
|
|
|
|
|
для: sim5
(31.01.2011 в 11:57)
| | А с одной так?
If(isset($_POST['user_rights']) && $data['rights'] == $_POST['user_rights']) $sel = 'selected="selected"'; | |
|
|
|
|
|
|
|
для: Лена
(31.01.2011 в 13:29)
| | Не знаю, пост, не пост, но это $data['rights'] как бы напрашивается, что выборка из таблицы, а уже это цикл. А даже если и нет, то лаконичней циклом все-таки, мне так кажется. | |
|
|
|
|
|
|
|
для: sim5
(31.01.2011 в 11:39)
| | >И что, ради этого писать четырежды одно и тоже, да еще через swith? Ну это же нелепость.
Почему сразу нелепость, сначала так, потом замечается что много повторений - начинаются поиски решений для сокращения. Несколько итераций и со временем получается оптимальный код. Если эту стадию не проходить, потом не будет привычки поиска повторяющихся фрагментов разбросанных по всему коду в больших проектах. Поставит человек проблему повторения кода в case-операторах, будет помогать ему с ней. Пока не стоит такой проблемы, зачем навязывать решение? Надавно только пол форума сокрушалось, что людям подумать не дают над собственным кодом :).
PS Это не претензия, а так бурчание по теме :))) | |
|
|
|
|
|
|
|
для: cheops
(31.01.2011 в 11:51)
| | Ах вон оно что, все это для того чтобы мозги размять? ))) Ну тогда ладно. ) | |
|
|
|
|
|
|
|
для: Eser
(31.01.2011 в 10:41)
| | Вообще-то выбор какого-либо опшена надо так писать:
<option value='1' selected='selected'>Исполнитель заявок</option> | |
|
|
|
|
|
|
|
для: Лена
(31.01.2011 в 11:22)
| | Только следует уточнить, что этого требует XHTML, просто HTML позволяет указывать атрибут selected в сокращенной форме. | |
|
|
|