Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Parse Error - что это за зверь?

Сообщения:  [1-10]   [11-13] 

 
 автор: Jurik   (19.01.2005 в 23:03)   письмо автору
 
   для: cheops   (19.01.2005 в 22:26)
 

Вы абсолютно правы!
Именно так я и нашел ошибку. Довольно забавно, хоть и нервов потрачено...
Теперь дальше мучаю / мучаюсь.
Всем спасибо за помощь!

   
 
 автор: cheops   (19.01.2005 в 22:26)   письмо автору
 
   для: Jurik   (19.01.2005 в 21:21)
 

Совершено потрясная ошибка я такие очень люблю: на самом деле после HERE идёт пробел, который PHP тоже считает продолжением "буквенно-цифровой последовательности":
"HERE ", поэтому он не может найти конца, так как там только "HERE" и находит следующий "HERE ", который уже в фукнции... С этим <<< следует быть осторожным - это не самая удачная конструкция языка.

   
 
 автор: glsv (Дизайнер)   (19.01.2005 в 22:08)   письмо автору
 
   для: Jurik   (19.01.2005 в 21:30)
 

Лучше перепишите это следующим образом.

$buttonText = '<input type = "radio" 
           name = "room" 
           value = "'.$newID.'">'.$roomName;


Раз уж эта конструкция так хитро работает, то может ее и не использовать?

Применяйте двойные кавычки для обрамления одинарных
$var = "Здесь был 'Вася' - УРА";

И одинарные для обрамления двойных.
$var = 'Здесь был "Вася" - УРА';


А для включения переменных в текст используйте символ точки:
$var = 5;
$txt = "Меня зовут Вася - мне ".$var." лет";


Это выведет строку
Меня зовут Вася - мне 5 лет

   
 
 автор: Jurik   (19.01.2005 в 22:04)   письмо автору
 
   для: elenaki   (19.01.2005 в 21:23)
 

Кое что нарыл, но пока далек от истины.
Итак, проверил эту странную конструкцию. Работает. Вот код:

<html>
<head>
<title></title>
</head>
<body>
<?php
$var
=5;
  print <<<HERE
  <center> This is just example </center><br>
  of using this strange construction<br>
  <center><h2>But, it works!</h2></center>
  <center>Here is a variable \$var ,
  and its value is 
$var </center>
HERE;
?>
</body>
</html>


Вот. А теперь магический трюк - если код HERE (который перед тегом ?>) пробелом отодвинуть от левого края, то та самая фраза и выскакивает....
А говорили, пробелы не имеют значения...
Правда, в моем исходнике я не могу эту бяку убрать - все равно эту гадость пишет. Вот такие дела...

   
 
 автор: Jurik   (19.01.2005 в 21:46)   письмо автору
 
   для: elenaki   (19.01.2005 в 21:23)
 

По научному эта штука называется механизмом цитирования. Применяется для вывода многострочного текста. Но вот кк работает, не пойму.

   
 
 автор: Jurik   (19.01.2005 в 21:30)
 
   для: elenaki   (19.01.2005 в 21:23)
 

А что за редактор с подсветкой кода?
А эта конструкция - создание и вывод многострочного текста. Взято из учебника "PHP / MySQL для начинающих." Автор - Энди Харрис.
Может есть возможность заменить этот участок кода?
Признаюсь, я сам толком еще не понял, что это за код и для чего он - я пишу программу по учебнику, а потом разбираю её. В данном случае нерабочую прогу не могу разобрать.

   
 
 автор: elenaki   (19.01.2005 в 21:23)   письмо автору
 
   для: Jurik   (19.01.2005 в 21:10)
 

что за конструкция
print <<<HERE 
.
.
.
HERE; 


на ней и выдается ошибка. если бы у вас был редактор с подсветкой кода, сразу бы увидели...

   
 
 автор: Jurik   (19.01.2005 в 21:21)
 
   для: Jurik   (19.01.2005 в 21:08)
 

И все таки, где же собака зарыта?

   
 
 автор: Jurik   (19.01.2005 в 21:10)
 
   для: elenaki   (19.01.2005 в 20:46)
 

Может, у меня уже глаза зашились ошибку искать? Все скобки вроде на месте. Мистика...


<html>
<head>
  <title>Show Segment</title>
<style type ="text/css">
body {
        color:red
        }
td {
        color: white;
        backgroung-color:blue;
        width: 20%;
        height: 3em;
        font-size: 20pt
        }

</style>
</head>

<body>

<?
if (empty($room))
 {
 
$room=1;
 }
$conn=mysql_connect("localhost""root""123");
$select=mysql_select_db ("game"$conn);
$sql="SELECT * FROM adventure WHERE id='$room'";
$result=mysql_query($sql);
$mainRow mysql_fetch_assoc ($result);

$theText $mainRow ["description"];
$northButton buildButton ("north");
$eastButton buildButton ("east");
$westButton buildButton ("west");
$southButton buildButton ("south");
$roomName $mainRow ["name"];

print <<<HERE
<center><h1>$roomName</h1></center>
<form method = "post">
<table border =1>
<tr>
    <td></td>
    <td>
$northButton</td>
    <td></td>
</tr>

<tr>
 <td>
$eastButton</td>
 <td>
$theText</td>
 <td>
$westButton</td>
</tr>

<tr>
 <td></td>
 <td>
$sounthButton</td>
 <td></td>
</tr>

</table>
<center>
<input type = "submit"
       value = "go">
</center>
</form>
HERE;

function 
buildButton ($dir)
  {
    global 
$mainRow$conn;
    
$newID $mainRow[$dir];
    
$query "SELECT name FROM adventure WHERE id = $newID";
    
$result mysql_query ($query$conn);
    
$row=mysql_fetch_assoc ($result);
    
$roomName $row ["name"];
    
$buttonText = <<< HERE
    <input type = "radio"
           name = "room"
           value = "
$newID">$roomName
    HERE;
    return 
$buttonText;
  }
?>
</body>
</html>


   
 
 автор: Jurik   (19.01.2005 в 21:08)
 
   для: glsv (Дизайнер)   (19.01.2005 в 21:06)
 

Это не Ваш учебник. Я пользовался простым "бумажным".
Но скобки и прочее на месте.

   

Сообщения:  [1-10]   [11-13] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования