Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Операторы выбора: переключатель switch

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: как настроить фильтр?
dread_rock
Отправлено: 21 Марта, 2011 - 13:51:51
Post Id


Новичок


Покинул форум
Сообщений всего: 18
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




вот ссылка на веб-учебник:
http://webmasterschool[dot]ru/php/ch2.php

потренировался. попробовал ввести с клавиатуры 3апр
получил результат - 3! если же ввести 3n, где N - число, то всё ок работает.

и если не использовать подавление, то всё время предупреждения высвечиваются:

Notice: Undefined index: number in D:\Program Files (x86)\Apache Group\Apache2\htdocs\switch\switch.php on line 14

CODE (html):
скопировать код в буфер обмена
  1. <html>
  2. <head>
  3. <title>TEST</title>
  4. </head>
  5. <body>
  6. <form action = "switch.php" method="GET">
  7.     number: <input type="text" name="number" /><br>
  8.     <input type="submit" />
  9. </form>
  10. </body>
  11. </html>
  12.  

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. //без @ notice будет
  3. @$number=$_GET['number'];
  4. if (!isset($number)) {
  5. echo "Вы не ввели число";
  6. }
  7. else {
  8. switch( $number )
  9. {
  10.     case 1:
  11.         echo "number = 1"; break;
  12.     case 2:
  13.         echo "number = 2"; break;
  14.     case 3:
  15.         echo "number = 3"; break;
  16.     case 4:
  17.         echo "вы ввели 4"; break;
  18.     case "тратата":
  19.         echo "Вы ввели тратата!"; break;       
  20.     default:
  21.         echo "This is not number or number is > 3 or < 1";
  22. }
  23. }
  24. ?>
 
 Top
OrmaJever Модератор
Отправлено: 21 Марта, 2011 - 14:13:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




PHP:
скопировать код в буфер обмена
  1. $number = isset($_GET['number']) ? $_GET['number'] : 0;


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
dread_rock
Отправлено: 21 Марта, 2011 - 14:24:49
Post Id


Новичок


Покинул форум
Сообщений всего: 18
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




Не помогло....

т.е.

$number будет присвоено значение $_GET['number'], если существует значение переменной, иначе 0.

а как мне это поможет? вот ввёл я с клавиатуры что-то. переменная существует.
но ...проблему не решает.
 
 Top
OrmaJever Модератор
Отправлено: 21 Марта, 2011 - 14:41:36
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




dread_rock пишет:
проблему не решает

как я понял проблема в этом?
dread_rock пишет:
Notice: Undefined index: number in D:\Program Files (x86)\Apache Group\Apache2\htdocs\switch\switch.php on line 14

то замените 14 строку на ту что я написал. Не работать просто не может.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
dread_rock
Отправлено: 21 Марта, 2011 - 14:45:31
Post Id


Новичок


Покинул форум
Сообщений всего: 18
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




эмм...ну в этом тоже, но основная проблема в том, как работает switch.

если я ввожу с клавиатуры 3 - он нормально отрабатывает. т.к.
условие case 3: echo "вы ввели 3"; break;

а если я ввожу 3уптумпущму - то он всё равно пишет вы ввели 3
 
 Top
Viper
Отправлено: 21 Марта, 2011 - 14:53:20
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




dread_rock проблема в том что "3уптумпущму" не число.


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
OrmaJever Модератор
Отправлено: 21 Марта, 2011 - 14:54:39
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Интересно... А кода нету? Переменая сама не может перевестить в int...
PHP:
скопировать код в буфер обмена
  1. $number = isset($_GET['number']) ? (string)$_GET['number'] : 0;

Может так поможет?


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
AdMeen
Отправлено: 21 Марта, 2011 - 15:14:31
Post Id



Посетитель


Покинул форум
Сообщений всего: 370
Дата рег-ции: Сент. 2009  
Откуда: Воронеж


Помог: 1 раз(а)




dread_rock пишет:
эмм...ну в этом тоже, но основная проблема в том, как работает switch.

если я ввожу с клавиатуры 3 - он нормально отрабатывает. т.к.
условие case 3: echo "вы ввели 3"; break;

а если я ввожу 3уптумпущму - то он всё равно пишет вы ввели 3


вы не задумывались, над тем, что в php неявное приведение типов? switch приводит тип string к целочисленному типу, тоже самое что вы бы использовали

замените в своей конструкции

на


и у вас все будет правильно.

(Отредактировано автором: 21 Марта, 2011 - 15:15:26)

 
 Top
dread_rock
Отправлено: 21 Марта, 2011 - 15:25:17
Post Id


Новичок


Покинул форум
Сообщений всего: 18
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




спасибо! помогло!

да...

не посоветуете, где можно найти репетитора по php?
я создал подобную тему в разделе объявления. может ещё что посоветуете?
 
 Top
JustUserR
Отправлено: 21 Марта, 2011 - 23:06:31
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




dread_rock пишет:
Может ещё что посоветуете?
Использование языка программирования PHP предполагает осуществление создания приложений, для которых производится автоматизированное преобразование ассоцированных типов информационных полей, определение целевых объявленных переменных объектов на основне использования неявного связного ассоциативного массива из целевой области видимости, а также проведение вариационных действий по осуществлению модикации уровня базового элементного трактования, проводимого на основании используемого разграничения по методологии декларации разделительных и управляющих объектов


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB