Я совсем недавно начал очень интересоваться программированием на ПХП. Накачал кучу учебников и....
При выполнении вот такого урока:
"Операторы выбора/ Переключатель 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'];
ай опередили)
$number=$_GET['number'];
ай опередили)
Спустя 1 минута, 57 секунд (16.08.2009 - 12:06) Krevedko написал(а):
ага..у нас тут зубами не счелкают
![biggrin.gif](http://phpforum.ru/html/emoticons/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>
А почему тогда во втором уже учебнике просто так написано??? Бывают различные варианты???
Вот кстати то, о чем я говорил про Ченгаева(в первой странице просто ссылка на муз файл со строкой УРЛ, где 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](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 3 минуты, 26 секунд (16.08.2009 - 12:26) Krevedko написал(а):
Эххх..помню как я с этой темой встрял. Еще смотрел тогда Попова (стыдно..каюсь), сделал как топикстартер выше и тоже долго не мог понять почему не работает. Потом тут подсказали.
Зато запомнил на всю жизнь
![rolleyes.gif](http://phpforum.ru/html/emoticons/rolleyes.gif)
Зато запомнил на всю жизнь
![biggrin.gif](http://phpforum.ru/html/emoticons/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
А еще, вопрос совсем ламера, как присваивать файлам 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 теги
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](http://phpforum.ru/html/emoticons/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
любителям и почитателям Попова посвещается ))
http://phpforum.ru/index.php?showtopic=18801
любителям и почитателям Попова посвещается ))
Спустя 2 часа, 35 минут, 51 секунда (16.08.2009 - 23:59) blase написал(а):
учиться надо на примерах,
есть такая пословица:
сделаешь гостевую книгу - освоишь php на 50%
(с)
есть такая пословица:
сделаешь гостевую книгу - освоишь php на 50%
(с)
![smile.gif](http://phpforum.ru/html/emoticons/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](http://phpforum.ru/html/emoticons/biggrin.gif)
_____________
Не ругайтесь, с "0" хочу изучить ПХП....