Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Funkcja EOD
Forum PHP.pl > Forum > PHP
saperek25
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
skowron-line
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.
saperek25
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
saperek25
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.  
Crozin
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;
Mephistofeles
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. ", ').
saperek25
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
Mephistofeles
A masz w ogóle w skrypcie funkcję extractor?
saperek25
W którym skrypcie

no tak literówka sorki
Mephistofeles
Wykaż trochę inicjatywy i próbuj zrozumieć błędy wyrzucane przez PHP ;/.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.