Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Funkcja EOD, problem
saperek25
post 12.11.2010, 15:54:46
Post #1





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 1.11.2009
Skąd: Bytom

Ostrzeżenie: (0%)
-----


Mam problem z funkcją EOD. Oto przykładowy kod:

  1. <?php
  2.  
  3. $movie=<<<EOD
  4. <h2><center>Baza danych recenzji filmów</center></h2>
  5. <table width="70%" border="1" cellpadding="2" cellspacing="2" align="center">
  6. <tr>
  7. <th>Tytuł filmu</th>
  8. <th>Rok produkcji</th>
  9. <th>Reżyser</th>
  10. <th>Główny aktor</th>
  11. <th>Gatunek</th>
  12. </tr>
  13. </table>
  14. EOD:
  15.  
  16. echo $movie;
  17.  
  18. ?>


wyskakuje błąd


Parse error: syntax error, unexpected $end in C:\xampp\htdocs\tabel1.php on line 18
Go to the top of the page
+Quote Post
skowron-line
post 12.11.2010, 16:05:43
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


manual mówi
Kod
$str = <<<'EOD'
Example of string
spanning multiple lines
using nowdoc syntax.
EOD;


no i masz dwukropek na końcu a nie średnik.


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
saperek25
post 12.11.2010, 16:09:48
Post #3





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 1.11.2009
Skąd: Bytom

Ostrzeżenie: (0%)
-----


Zmieniłem kod na

  1. <?php
  2. $movie =<<<EOD
  3. <h2><center>Baza danych recenzji filmów</center></h2>
  4. <table width="70%" border="1" cellpadding="2" cellspacing="2" align="center">
  5. <tr>
  6. <th>Tytuł filmu</th>
  7. <th>Rok produkcji</th>
  8. <th>Reżyser</th>
  9. <th>Główny aktor</th>
  10. <th>Gatunek</th>
  11. </tr>
  12. </table>
  13. EOD;
  14. echo $movie;
  15. ?>

i teraz wyskakuje

Parse error: syntax error, unexpected T_SL in C:\xampp\htdocs\tabel1.php on line 2


wcześniej chodziło o spacje
Go to the top of the page
+Quote Post
skowron-line
post 12.11.2010, 16:18:13
Post #4





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


http://www.php.net/manual/en/language.types.string.php#98140


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
saperek25
post 12.11.2010, 16:39:05
Post #5





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 1.11.2009
Skąd: Bytom

Ostrzeżenie: (0%)
-----


skowron i co tam niby pisze to jest ogólny opis tej funkcji

Stwierdzam że ta funkcja jest beznadziejna lepiej trochę wydłużyć kod i będzie bez błędów:

  1. <?php
  2.  
  3. echo "<h2><center>Baza danych recenzji filmów</center></h2>";
  4. echo "<table width=\"70%\" border=\"1\" cellpadding=\"2\" cellspacing=\"2\" align=\"center\">" ;
  5. echo "<tr>";
  6. echo "<th>Tytuł filmu</th>";
  7. echo "<th>Rok produkcji</th>";
  8. echo "<th>Reżyser</th>";
  9. echo "<th>Główny aktor</th>";
  10. echo "<th>Gatunek</th>";
  11. echo "</tr>";
  12. echo "</table>";
  13.  
  14. ?>
  15.  
Go to the top of the page
+Quote Post
Crozin
post 12.11.2010, 16:43:56
Post #6





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


To co zamyka blok heredoc/newdoc (to nie są funkcje notabene) tuaj "EOD;" musi być jedynym zapisem w linii, a Ty masz przed tym jeszcze białe znaki. Czyli:
  1. EOD;
  2.  
  3. // Nie
  4.  
  5. EOD;
Go to the top of the page
+Quote Post
Mephistofeles
post 12.11.2010, 16:57:47
Post #7





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

Ostrzeżenie: (0%)
-----


Nie lepiej, lepiej to by było zamknąć blok PHP i wpisać kod HTML, nie robi się tylu echo. Heredoc pozwala na wykorzystywanie znaków niedozwolonych w PHP (np. ", ').
Go to the top of the page
+Quote Post
saperek25
post 12.11.2010, 18:18:37
Post #8





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 1.11.2009
Skąd: Bytom

Ostrzeżenie: (0%)
-----


ok poradziłem lecz po dołożeniu kodu kolejny błąd:

  1. <?php
  2.  
  3. $link = mysql_connect("localhost", "root", "tatiana13")
  4. or die("Sprawdź połączenie serwerem.");
  5. mysql_select_db("moviesite")
  6.  
  7. $query = "SELECT movie_name, movie_director, movie_leadactor " .
  8. "FROM movie";
  9.  
  10. $result = mysql_query($query, $link)
  11. $num_movies = mysql_num_rows($result);
  12.  
  13. $movie_header=<<<EOD
  14. <h2><center>Baza danych recenzji filmów</center></h2>
  15. <table width="70%" border="1" cellpadding="2" cellspacing="2" align="center">
  16. <tr>
  17. <th>Tytuł filmu</th>
  18. <th>Reżyser</th>
  19. <th>Główny aktor</th>
  20. </tr>
  21. EOD;
  22.  
  23. function get_director() {
  24. global $movie_director;
  25. global $director;
  26.  
  27. $query_d = "SELECT people_fullname " .
  28. "FROM people " .
  29. "WHERE people_id='$movie_director'";
  30. $results_d = mysql_query($query_d)
  31. $row_d = mysql_fetch_array($results_d);
  32. extract($row_d);
  33. $director = $people_fullname;
  34. }
  35.  
  36. function get_leadactor() {
  37. global $movie_leadactor;
  38. global $leadactor;
  39.  
  40. $query_a = "SELECT people_fullname " .
  41. "FROM people " .
  42. "WHERE people_id='$movie_leadactor'";
  43. $results_a = mysql_query($query_a)
  44. $row_a = mysql_fetch_array($results_a);
  45. extractor($row_a);
  46. $leadactor = $people_fullname;
  47. }
  48.  
  49. while ($row = mysql_fetch_array($result)) {
  50. $movie_name = $row['movie_name'];
  51. $movie_director = $row['movie_director'];
  52. $movie_leadactor = $row['movie_leadactor'];
  53.  
  54. //pobranie imienia i nazwiska reżysera z tabeli people
  55. get_director();
  56.  
  57. //pobranie imienia i nazwiska głównego aktora z tabeli people
  58. get_leadactor();
  59.  
  60. $movie_details .=<<<EOD
  61. <tr>
  62. <td>$movie_name</td>
  63. <td>$director</td>
  64. <td>$leadactor</td>
  65. </tr>
  66. EOD;
  67. }
  68.  
  69. $movie_details .=<<<EOD
  70. <tr>
  71. <td>Łącznie filmów: $num_movies</td>
  72. </tr>
  73. EOD;
  74.  
  75. $movie_footer ="</table>";
  76. $movie =<<<MOVIE
  77. $movie_header
  78. $movie_details
  79. $movie_footer
  80. MOVIE;
  81.  
  82. echo "W bazie danych znajduje się $num_movies filmów";
  83. echo $movie
  84. ?>
  85.  


błąd: Fatal error: Call to undefined function extractor() in C:\xampp\htdocs\tabel1.php on line 49

jeśli z linijki 62 usunę nawiasy to nie wyświetla mi wtedy aktorów po dołożeniu tych nawiasów wyświetla wyższy błąd

Ten post edytował saperek25 12.11.2010, 18:20:10
Go to the top of the page
+Quote Post
Mephistofeles
post 12.11.2010, 18:21:52
Post #9





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

Ostrzeżenie: (0%)
-----


A masz w ogóle w skrypcie funkcję extractor?
Go to the top of the page
+Quote Post
saperek25
post 12.11.2010, 18:24:23
Post #10





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 1.11.2009
Skąd: Bytom

Ostrzeżenie: (0%)
-----


W którym skrypcie

no tak literówka sorki
Go to the top of the page
+Quote Post
Mephistofeles
post 12.11.2010, 18:25:47
Post #11





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

Ostrzeżenie: (0%)
-----


Wykaż trochę inicjatywy i próbuj zrozumieć błędy wyrzucane przez PHP ;/.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 05:50