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

Форум PHP

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

 

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

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

тема: Проблемы со Switch-Case
 
 автор: Eser   (31.01.2011 в 10:41)   письмо автору
 
 

Не работает вот такая конструкция:
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 не выполняеться.
Подскажите из за чего это может быть?

  Ответить  
 
 автор: cheops   (31.01.2011 в 10:54)   письмо автору
 
   для: Eser   (31.01.2011 в 10:41)
 

А в $data['rights'] цифра или строка? Если цифра, то уберите в case кавычки, т.е. вместо
case "4":

пишите
case 4:

  Ответить  
 
 автор: Eser   (31.01.2011 в 11:04)   письмо автору
 
   для: cheops   (31.01.2011 в 10:54)
 

Извиняюсь! Был не внимательным. Спасибо за помощь!

  Ответить  
 
 автор: sim5   (31.01.2011 в 11:10)   письмо автору
 
   для: Eser   (31.01.2011 в 10:41)
 

Прочитал несколько раз и не понял - а чем различается edit_user_interfac во всех четырех случаях?

  Ответить  
 
 автор: cheops   (31.01.2011 в 11:12)   письмо автору
 
   для: sim5   (31.01.2011 в 11:10)
 

Положением атрибута selected.

  Ответить  
 
 автор: sim5   (31.01.2011 в 11:39)   письмо автору
 
   для: cheops   (31.01.2011 в 11:12)
 

И что, ради этого писать четырежды одно и тоже, да еще через swith? Ну это же нелепость.

  Ответить  
 
 автор: Лена   (31.01.2011 в 11:40)   письмо автору
 
   для: 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>
"
;
?>

  Ответить  
 
 автор: psychomc   (31.01.2011 в 11:55)   письмо автору
 
   для: Лена   (31.01.2011 в 11:40)
 

а error_reporting(E_ALL) стоит?

  Ответить  
 
 автор: sim5   (31.01.2011 в 11:57)   письмо автору
 
   для: Лена   (31.01.2011 в 11:40)
 

И зачем четыре переменных?

  Ответить  
 
 автор: Лена   (31.01.2011 в 13:29)   письмо автору
 
   для: sim5   (31.01.2011 в 11:57)
 

А с одной так?
If(isset($_POST['user_rights']) && $data['rights'] == $_POST['user_rights']) $sel = 'selected="selected"';

  Ответить  
 
 автор: sim5   (31.01.2011 в 13:40)   письмо автору
 
   для: Лена   (31.01.2011 в 13:29)
 

Не знаю, пост, не пост, но это $data['rights'] как бы напрашивается, что выборка из таблицы, а уже это цикл. А даже если и нет, то лаконичней циклом все-таки, мне так кажется.

  Ответить  
 
 автор: cheops   (31.01.2011 в 11:51)   письмо автору
 
   для: sim5   (31.01.2011 в 11:39)
 

>И что, ради этого писать четырежды одно и тоже, да еще через swith? Ну это же нелепость.
Почему сразу нелепость, сначала так, потом замечается что много повторений - начинаются поиски решений для сокращения. Несколько итераций и со временем получается оптимальный код. Если эту стадию не проходить, потом не будет привычки поиска повторяющихся фрагментов разбросанных по всему коду в больших проектах. Поставит человек проблему повторения кода в case-операторах, будет помогать ему с ней. Пока не стоит такой проблемы, зачем навязывать решение? Надавно только пол форума сокрушалось, что людям подумать не дают над собственным кодом :).

PS Это не претензия, а так бурчание по теме :)))

  Ответить  
 
 автор: sim5   (31.01.2011 в 11:56)   письмо автору
 
   для: cheops   (31.01.2011 в 11:51)
 

Ах вон оно что, все это для того чтобы мозги размять? ))) Ну тогда ладно. )

  Ответить  
 
 автор: Лена   (31.01.2011 в 11:22)   письмо автору
 
   для: Eser   (31.01.2011 в 10:41)
 

Вообще-то выбор какого-либо опшена надо так писать:
<option value='1' selected='selected'>Исполнитель заявок</option>

  Ответить  
 
 автор: cheops   (31.01.2011 в 11:29)   письмо автору
 
   для: Лена   (31.01.2011 в 11:22)
 

Только следует уточнить, что этого требует XHTML, просто HTML позволяет указывать атрибут selected в сокращенной форме.

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

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