[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: неизвестная ошибка
2fed
Помогите пожалуйста...никак не могу разобраться, в чём ошибка! Набрал код точно как в учебнике... но начиная с первого here doc: "<<<HERE *** HERE;" далее код программы отображается как текст, заключённый в HERE

вот, собственно говоря и код:

<html>
<head>
<title>
Petals Around the Rouse</title>
</head>

<body
bgcolor="tan">

<center>
<font
face="Comic Sans MS">
<h1>
Petals Around the Rouse</h1>

<?

printGreeting();
printDice();
printForm();


function printGreeting()
{
global $guess, $numPetals;
if (empty($guess))
{
print "<h3>Welcom to Petals Around the Rouse</h3>";
}
else if ($gues==$numPetals)
{
print "<h3>You Got It!</h3>";
}
else
{
print "<h3>from last try: </h3>
you guessed:
$guess<br><br>
-and the correct answer was:
$numPetals petals around the rouse<br>";
}
}



function printDice()
{
global $numPetals;
print "<h3>New Roll:</h3>";
$numPetals=0;

$die1=rand(1,6);
$die2=rand(1,6);
$die3=rand(1,6);
$die4=rand(1,6);
$die5=rand(1,6);

showDie($die1);
showDie($die2);
showDie($die3);
showDie($die4);
showDie($die5);

print "<br>";

calcNumPetals($die1);
calcNumPetals($die2);
calcNumPetals($die3);
calcNumPetals($die4);
calcNumPetals($die5);
}


function showDie($value)
{
print <<<HERE
<img src="$value.jpg">
HERE;
}


function calcNumPetals(
$value)
{
global
$numPetals;
switch (
$value)
{
case 3:

$numPetals +=2;
break;
case 5:

$numPetals +=4;
break;
}
}


function printForm()
{
global
$numPetals;
print <<<HERE
<h3>How many petals around the rouse?</h3>
<form method="post">
<input type="text" name="guess" value="0">
<input type="hidden" name="numPetals">
<br>
<input type="submit">
</form>
HERE;
}
?>
</font>
</center>

</body>
</html>



вот адрес сервера, куда я залил файл для теста



Спустя 4 минуты, 20 секунд (29.04.2011 - 12:52) waldicom написал(а):
Разве закрывающий "тег" не должен стоять с самого начала строки (и больше ничего в этой строке)?

Спустя 3 минуты, 25 секунд (29.04.2011 - 12:55) 2fed написал(а):
незнаю... я позавчера начал учить php... напечатал код в точности, как в книге...

Спустя 1 минута, 48 секунд (29.04.2011 - 12:57) Arni написал(а):
<? ?> попробуйте заменить на <?php ?>

Учить пхп по книжкам не советую. Издания выходят с опозданиями. Пока напишут и напечатают уже много воды уходит. Основы да, можете почитать. Но вас ждет много очень много подводных камней. Если на книжке чето там про пхп4, будет чем костер поджечь.

Спустя 1 минута, 21 секунда (29.04.2011 - 12:58) 2fed написал(а):
нет... тоже самое выходит...

Спустя 25 минут, 9 секунд (29.04.2011 - 13:23) Arni написал(а):
Уважаемый, вы тратите наше и свое время. Книжку подарить врагу а самому научиться использовать оператор echo.

HERE это очень капризная штука которая не хочет работать внутри функции, чувствительна к пробелам до и после, и просто как по мне бесполезная штука.

И вот это вот "$value.jpg" отучить себя делать в корне, я понимаю что приколько когда пхп интерпретатор сам себе находит что это переменная, и не нужно париться вам. Но это признак плохого кода и ненужные тормоза. Потому что интерпретатор в двойных кавычках ищет переменные, на что уходит время.

А этот ваш пример надо повесить в раздел как нельзя писать пхп программы.

+ скачайте себе редактор пхп с подстветкой синтаксиса и проверкой на ошибки в синтаксисе. У вас в строке 70 и начались проблемы. Пхп посчитал что все что идет ниже это строка.

Спустя 3 минуты, 9 секунд (29.04.2011 - 13:27) waldicom написал(а):
Цитата (2fed @ 29.04.2011 - 10:55)
незнаю... я позавчера начал учить php... напечатал код в точности, как в книге...

Просто поставьте HERE в самом начале строки и всё (без пробелов)

Спустя 4 минуты, 24 секунды (29.04.2011 - 13:31) 2fed написал(а):
Цитата
HERE это очень капризная штука которая не хочет работать внутри функции, чувствительна к пробелам до и после, и просто как по мне бесполезная штука.


а как тогда обойтись без неё? в данном случае?



Цитата
Просто поставьте HERE в самом начале строки и всё (без пробелов)


тоесть вот так вот?

 function showDie($value)
{
echo <<<HERE
<img src="$value.jpg">
HERE;
}

Спустя 30 секунд (29.04.2011 - 13:31) waldicom написал(а):
Цитата (2fed @ 29.04.2011 - 11:31)
тоесть вот так вот?

да. Точка с запятой не обязательна.

Спустя 2 минуты, 22 секунды (29.04.2011 - 13:34) 2fed написал(а):
спасибо...

Цитата
И вот это вот "$value.jpg" отучить себя делать в корне, я понимаю что приколько когда пхп интерпретатор сам себе находит что это переменная, и не нужно париться вам. Но это признак плохого кода и ненужные тормоза. Потому что интерпретатор в двойных кавычках ищет переменные, на что уходит время.



вот так вот надо?

 <img src="img/$value.jpg">


или следует создать цикл... или условие?
Быстрый ответ:

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