[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не пойму с методом GET (передачей переменных)
Stealth454
Добрый день, дорогие друзья!
Я совсем недавно начал очень интересоваться программированием на ПХП. Накачал кучу учебников и....
При выполнении вот такого урока:

"Операторы выбора/ Переключатель switch

Переключатель switch является наиболее удобным средством для организации мультиветвления. Синтаксис переключателя таков:

switch(expression) // переключающее выражение
{
case value1: // константное выражение 1
statements; // блок операторов
break;
case value2: // константное выражение 2
statements;
break;
default:
statements;
}

Управляющая структура switch передает управление тому из помеченных case операторов, для которого значение константного выражения совпадает со значением переключающего выражения. Если значение переключающего выражения не совпадает ни с одним из константных выражений, то выполняется переход к оператору, помеченному меткой default. В каждом переключателе может быть не более одной метки default, однако она может отсутствовать вообще. Приведем пример программы с переключателем. В этой программе выводятся названия нечетных целых десятичных цифр от 1 до 9 не меньше заданной, в зависимости от числа, указанного в форме test.html. Форма test.html не отличается от той, что мы уже использовали:

<form action = "http://localhost/PHP/chapt2/switch.php" method="get">
number: <input type="text" name="number"/><br>
<input type="submit"/>
</form>

<?
switch($number)
{
case 1:
echo ("one ");
case 2: case 3:
echo ("free");
case 4: case 5:
echo ("five");
case 6: case 7:
echo ("seven");
case 8: case 9:
echo ("nine");
break;
default:
echo ("This isn't number or number is > 9 or < 1");
}
?>

Результат выполнения скрипта:

Форма запроса

Результат выполнения скрипта

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

Кроме уже сказанного о переключателе, приведенная программа демонстрирует действие оператора break, с помощью которого происходит выход из переключателя. Если поместить операторы break после вывода каждой из цифр, то в окне браузера мы увидим название только одной нечетной цифры.

Как видим, после конструкции switch приведен составной оператор, однако это совершенно не обязательно – после switch может находиться любой оператор, помеченный служебным словом case.

Напомним, что составной оператор, это заключенная в фигурные скобки последовательность операторов.

Заметим также, что в PHP в качестве меток case могут использоваться не только литералы, но и сами метки могут быть переменными. В качестве меток case в PHP не могут выступать только массивы и объекты. "


у меня почему то всегда выдает надпись - "This isn't number or number is > 9 or < 1".

Пробовал, с помощью echo выводить в начале скрипта, до оператора переключателя (switch) переменную $number, но никакой реакции - просто пропускается и ничего на экран не выводит.

Это значит html (форма запроса) не пересылает переменную? Хотя, с другой стороны, адресная строка правильного вида! Пробовал и на Денвере и на удаленном хосте... ни в какую....

или все таки не правильное написание case'ов (может все таки точку с запятой после 2-го, 4го, 6го, 8го?)? - пробовал, ничего не меняется.

И вообще, любой ли скрипт пхп должен быть вставлен в хтмл страницу в заключении <? и /?>? или запрашиваемый скрипт пхп может быть без хтмлных форм(<html>, <body> и т.д.)?... Хотя, если скрипт должен выводить на экран какую то инфу, значит он полюбову должен быть в заключении форм хтмл, да?

Извиняюсь за сумбур и не понятность. Еще не привык в жарнгону правильному. Но очень хочется изучить язык. Это уже вторая книга,где стопорюсь в самом начале из за этого метода передачи переменных.... блин... До этого делал счетчик скачиваний файла по книге Дмитрия Ченгаева и тоже ни как не получилось....

В чем неправильность руки/мозга у меня?



Спустя 4 минуты, 17 секунд (16.08.2009 - 12:02) Krevedko написал(а):
switch($_GET['number'])

Спустя 2 минуты, 54 секунды (16.08.2009 - 12:04) Gradus написал(а):
Чёто столько писанины понакопировано читать в падлу,попробуйте в switch.php прописать в самом вверху
$number=$_GET['number'];
ай опередили)

Спустя 1 минута, 57 секунд (16.08.2009 - 12:06) Krevedko написал(а):
ага..у нас тут зубами не счелкают biggrin.gif

Спустя 9 минут, 34 секунды (16.08.2009 - 12:16) Stealth454 написал(а):
Вот блин... Спасибо огромное... Видимо варит еще Башка моя немного.... Была такая мысль, что не присваевается переменной, но я пытался писать в строке URL после =$name... Но потом почитал и понял, что я лох и, типо, должно сразу все присваиваться....
А почему тогда во втором уже учебнике просто так написано??? Бывают различные варианты???

Вот кстати то, о чем я говорил про Ченгаева(в первой странице просто ссылка на муз файл со строкой УРЛ, где mus=1 и mus=2:

<html>

<head>
<title></title>
</head>

<body>

<?php
$mus=$_GET['mus'];
if($mus==1) {
header("location: http://www.test1.ru/Music/olesya.mp3");
echo "$QUERY_STRING";
$file=fopen("http://www.test1.ru/Counters/mus1.txt", "a+");
flock($file,LOCK_EX);
$count=fread($file,100);
$count++;
ftruncate($file,0);
fwrite($file,$count);
flock($file,LOCK_UN);
fclose($file);
}

else if($mus==2) {
header("location: http://www.test1.ru/Music/olsen.mp3");
$file=fopen("http://www.test1.ru/Counters/mus2.txt", "a+");
flock($file,LOCK_EX);
$count=fread($file,100);
$count++;
ftruncate($file,0);
fwrite($file,$count);
flock($file,LOCK_UN);
fclose($file);
}

?>


</body>

</html>

Спустя 6 минут, 10 секунд (16.08.2009 - 12:22) Gradus написал(а):
Да литературу хорошую хрен найдёш!
Тут просто зависит включены глобальные переменные или нет.Если были бы включены ты бы сюда не полез smile.gif

Спустя 3 минуты, 26 секунд (16.08.2009 - 12:26) Krevedko написал(а):
Эххх..помню как я с этой темой встрял. Еще смотрел тогда Попова (стыдно..каюсь), сделал как топикстартер выше и тоже долго не мог понять почему не работает. Потом тут подсказали. rolleyes.gif
Зато запомнил на всю жизнь biggrin.gif

Спустя 55 секунд (16.08.2009 - 12:27) Stealth454 написал(а):
Спасибо вам.
А еще, вопрос совсем ламера, как присваивать файлам chmod в Денвере? А то, при выполнении, верхнего скрипта вот что дает

Warning: Cannot modify header information - headers already sent by (output started at Z:\home\test1.ru\www\counter.php:9) in Z:\home\test1.ru\www\counter.php on line 12

Warning: fopen(http://www.test1.ru/Counters/mus1.txt) [function.fopen]: failed to open stream: HTTP wrapper does not support writeable connections. in Z:\home\test1.ru\www\counter.php on line 14

Warning: flock() expects parameter 1 to be resource, boolean given in Z:\home\test1.ru\www\counter.php on line 15

Warning: fread(): supplied argument is not a valid stream resource in Z:\home\test1.ru\www\counter.php on line 16

Warning: ftruncate(): supplied argument is not a valid stream resource in Z:\home\test1.ru\www\counter.php on line 18

Warning: flock() expects parameter 1 to be resource, boolean given in Z:\home\test1.ru\www\counter.php on line 20

Warning: fclose(): supplied argument is not a valid stream resource in Z:\home\test1.ru\www\counter.php on line 21

Спустя 7 минут, 51 секунда (16.08.2009 - 12:34) Gradus написал(а):
chmod("файл", 0755);
Но ругаеться он вроде не на права

Спустя 7 минут, 26 секунд (16.08.2009 - 12:42) Stealth454 написал(а):
не могу понять, почему он меня не переадресовывает на скачку?

Спустя 5 минут, 57 секунд (16.08.2009 - 12:48) Gradus написал(а):
Попробуй сам зайди по адресу
http://www.test1.ru/Music/olsen.mp3
или
http://www.test1.ru/Counters/mus1.txt
И перед header нельзя ничего выводить убери html теги

Спустя 4 минуты, 52 секунды (16.08.2009 - 12:53) Stealth454 написал(а):
Ссылка просто в браузере открывается....( убрал теги... один, извините, хрен....

Спустя 4 минуты, 17 секунд (16.08.2009 - 12:57) Stealth454 написал(а):
нет....Заработало..... Спасибо за подсказку... То есть ни в денвере, ни на удаленном хосте не были включены глобальные переменные...

И еще, может кто знает хорошую книгу для начинающих (таких как я) где нормально и доступно все разжеванно?

Спустя 7 минут, 26 секунд (16.08.2009 - 13:04) Krevedko написал(а):
Стивен Хольцнер - PHP в примерах

нормально написано

Спустя 5 минут, 10 секунд (16.08.2009 - 13:10) Stealth454 написал(а):
сеньк...

Спустя 5 часов, 37 минут, 13 секунд (16.08.2009 - 18:47) SunSet написал(а):
Krevedko
Попов рулид laugh.gif Хоть и примитивно все у него, зато в видео формате, можно хоть принципы понять. А оошибки уже самому искать.

Спустя 2 часа, 36 минут, 1 секунда (16.08.2009 - 21:23) glock18 написал(а):
http://phpforum.ru/index.php?showtopic=19020
http://phpforum.ru/index.php?showtopic=18801

любителям и почитателям Попова посвещается ))

Спустя 2 часа, 35 минут, 51 секунда (16.08.2009 - 23:59) blase написал(а):
учиться надо на примерах,
есть такая пословица:
сделаешь гостевую книгу - освоишь php на 50%
(с) smile.gif

Спустя 7 часов, 14 минут, 39 секунд (17.08.2009 - 07:13) glock18 написал(а):
Цитата (blase @ 16.08.2009 - 20:59)
сделаешь гостевую книгу - освоишь php на 50%


в сказке ложь, да в ней намек. 50% не освоить, если написать гораздо больший проект. нужно постоянно изучать новые возможности и технологии - без этого никуда не деться. Вот что верно в этом утверждении: написание гостевой от и до поможет понять пхп для начала. Это немало, но далеко не 50 % ))

Спустя 10 часов, 43 минуты, 35 секунд (17.08.2009 - 17:57) Krevedko написал(а):
я сделал гостевую. даже со смайликами.
и не только гостевую. я крут ? biggrin.gif


_____________
Не ругайтесь, с "0" хочу изучить ПХП....
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.