Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2011, 20:30   #1
Зелёный
Пользователь
 
Регистрация: 26.11.2010
Сообщений: 29
Вопрос Непонятная ошибка.Не знаю даже в чём дело. PHP наверно

Так вот. Решил тут почтитать про PHP ...азы вроде.
Нашёл вот такой код:
Код:
<?php
function display_form() {
  global $PHP_SELF;
?>
<FORM TARGET="<?php echo $PHP_SELF; ?>" METHOD=GET>
Имя:   <INPUT TYPE=TEXT NAME="name"><BR>
Любимый сорт сыра: <INPUT TYPE=RADIO NAME="cheese" VALUE="brie">Very soft French Brie
                 <INPUT TYPE=RADIO NAME="cheese" VALUE="cheddar">Farmhouse English Cheddar
                 <INPUT TYPE=RADIO NAME="cheese" VALUE="mozzarella">Italian Buffalo Mozzarella
Когда Вы предпочитаете есть сыр:
                 <INPUT TYPE=CHECKBOX NAME="times[]" VALUE="m">На завтрак
                 <INPUT TYPE=CHECKBOX NAME="times[]" VALUE="n">В обед
                 <INPUT TYPE=CHECKBOX NAME="times[]" VALUE="d">На ужин
                 <INPUT TYPE=CHECKBOX NAME="times[]" VALUE="l">Поздно ночью
<INPUT TYPE=HIDDEN NAME="stage" VALUE="results">
<INPUT TYPE=SUBMIT VALUE="Thanks!"> 
</FORM>
<?php
}
?>

Только вот проблема. Экран просто белый выходит и всё в браузере.
Открыл error.log Апача. Там вот такая ошибка:
[Mon Nov 14 15:17:56 2011] [error] [client ::1] File does not exist: /var/www/favicon.ico


Погуглил...что-то говорят про Joomla и про человекопонятные урл. И про то,что надо бы SEF отключить некий,чтобы этой фигни не было.
Это конечно всё понятно. Только у меня проблема: везде пишут,что надо зайти в этот самый Joomla и чего-то там понатыкать. Да только я вроде не устанавливал сам себе ничего такого. Ну и соответственно не знаю, где искать и тыкать...

Так,хотелось бы получить какой-нибудь дельный совет от знающих людей на тему того,как мне избавиться от этой ошибки...
Зелёный вне форума Ответить с цитированием
Старый 14.11.2011, 20:44   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Код к указанной ошибке в логе не имеет отношения.
В коде - просто функция, без вызова.
Добавьте вызов этой функции - и будет "не белый экран".
Andkorol вне форума Ответить с цитированием
Старый 15.11.2011, 11:12   #3
Зелёный
Пользователь
 
Регистрация: 26.11.2010
Сообщений: 29
По умолчанию

Да,точно) затупил.




А можно ли ещё вопрос...код разросся до этого теперть:
Код:
<?php
function display_form() {
  global $PHP_SELF;
?>
<FORM TARGET="<?php echo $PHP_SELF; ?>" METHOD=GET>
Имя:   <INPUT TYPE=TEXT NAME="name"><BR>
Любимый сорт сыра:<BR> <INPUT TYPE=RADIO NAME="cheese" VALUE="brie">Very soft French Brie<BR>
                 <INPUT TYPE=RADIO NAME="cheese" VALUE="cheddar">Farmhouse English Cheddar<BR>
                 <INPUT TYPE=RADIO NAME="cheese" VALUE="mozzarella">Italian Buffalo Mozzarella<BR>
Когда Вы предпочитаете есть сыр:<BR>
                 <INPUT TYPE=CHECKBOX NAME="times[]" VALUE="m">На завтрак<BR>
                 <INPUT TYPE=CHECKBOX NAME="times[]" VALUE="n">В обед<BR>
                 <INPUT TYPE=CHECKBOX NAME="times[]" VALUE="d">На ужин<BR>
                 <INPUT TYPE=CHECKBOX NAME="times[]" VALUE="l">Поздно ночью<BR>
<INPUT TYPE=HIDDEN NAME="stage" VALUE="results">
<INPUT TYPE=SUBMIT VALUE="Thanks!"> 
</FORM>
<?php
}
?>

<?php
function process_form() {
  global $name; 
  global $cheese;
  global $times;
  if ($cheese == 'brie') { $cheese_message = 'I love brie.'; }
  elseif ($cheese == 'cheddar') { $cheese_message = 'Cheddar is awesome!'; }
  else { $cheese_message = 'Fresh mozzarella is divine.'; }
  $favorite_times = count($times);

  if ($favorite_times <= 1) {
    $times_message = 'You should eat cheese more often.';
  } elseif ($favorite_times > 1 && $favorite_times < 4) {
  $times_message = 'Those are good times to eat cheese.';
  } else { 
    $times_message = 'You are eating too much cheese.';
  }
  echo "Hello $name.";
  echo "$cheese_message $times_message";
}
?>

<?php
if (empty($stage)) { display_form();}
else { process_form(); }
?>


и вот последний кусочек должен вроде проверять значение переменно stage на пустоту ,исходя из этого идти в нужную ветку...
так вот...он идёт почему-то всегда в ветку выполняется display_form...и не заходит во вторую. Хотя stage должно быть не пустым уже после выполнения display_form...
вот...и не просекаю,что делать.
Зелёный вне форума Ответить с цитированием
Старый 15.11.2011, 11:47   #4
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

Цитата:
Хотя stage должно быть не пустым уже после выполнения display_form...
С чего вы взяли ???
Ваша переменная $stage вдруг появится только когда вы нажмете на кнопку submit в вашей форме, данные придут на эту же страницу и при условии что register_globals = On
P.S. может $_GET['stage'] ?)

Последний раз редактировалось Cronos20; 15.11.2011 в 11:50.
Cronos20 вне форума Ответить с цитированием
Старый 15.11.2011, 12:21   #5
Зелёный
Пользователь
 
Регистрация: 26.11.2010
Сообщений: 29
По умолчанию

Не знаю,честно говоря...я в этом новичок...
вот ссылка на статью:
http://www.opennet.ru/docs/RUS/php_intro/
там вроде такого нет...

А куда ставить $_GET['stage']?
в последний кусок попробовал:
Код:
<?php
if (empty($_GET['stage'])) { display_form();}
else { process_form(); }
?>
оно конечно заработало,но не выдаёт те результаты,которые я ввёл в предыдущей форме...а выходят результаты,которые должны быть,если я ничего не отмечал и отправил пустую форму...


и где писать:

PHP код:
register_globals On

Последний раз редактировалось dr.Chas; 15.11.2011 в 19:26.
Зелёный вне форума Ответить с цитированием
Старый 15.11.2011, 12:54   #6
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

Вы читаете слишком старые статьи ... там 2000 год, посмотрите в этом разделе вверху есть тема с литературой, изучайте лучше по новым изданиям PHP пятой версии.
register_globals = On; писать вам нигде не стоит, потому что это плохо ... пока примите это как факт. Вместо этого те данные, которые вы отправляете из формы приходят в глобальных массивах $_GET или $_POST - смотря что вы указали в форме ( ... METHOD=GET> .. у вас)
Поэтому все значения полей будут доступны так
$stage = $_GET['stage']
<INPUT TYPE=RADIO NAME="cheese" VALUE="cheddar"> будет в $_GET['cheese']
Ну это кратко .. все-таки лучше подробнее изучите учебники, все в 2-х словах не объяснишь
И кстати лучше используйте метод POST
Cronos20 вне форума Ответить с цитированием
Старый 15.11.2011, 19:17   #7
Зелёный
Пользователь
 
Регистрация: 26.11.2010
Сообщений: 29
По умолчанию

Хорошо,я вас понял)
А не могли бы всё же сейчас написать тут,как мне исправить данный скрипт,чтобы он работал?
Или тут нужны слишком кардинальные меры?

PHP код:
<?php
$stage
=$_GET['stage']; 
if (empty(
$stage)) { display_form();}
else { 
process_form(); }
?>

такое не помогло что-то...


Пользуйтесь кнопкой "правка", не стоит писать несколько постов подряд. Оформляйте код, специальным тегом. Модератор

Последний раз редактировалось dr.Chas; 15.11.2011 в 19:24.
Зелёный вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не знаю в чём ошибка.. Newbie. Помощь студентам 5 26.04.2011 19:56
Даже не знаю в чем проблема DeFace Win Api 2 04.09.2010 20:44
Подскажите в чём дело? GMSD PHP 0 14.08.2009 14:04