Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Problem z zakończeniem kodu
Forum PHP.pl > Forum > Przedszkole
adi19887
Witam,

Pisałem już o tym wcześniej. Błąd poprawiłem (tak mi się wydawało) jednak mimo wszystko pokazuje mi błąd o nieoczekiwanym zakończeniu działania. Pod spodem kod:
  1. <!--c1--><div class='codetop'>Kod</div><div class='codemain'><!--ec1--><?php include ("headermovie.php"); ?>
  2. <?php
  3.  
  4.     /*Funckcja obliczająca, czy film okazał się kasowym sukcesem czy raczej sromotna porażką*/
  5.     function calculate_differences($takings, $cost){
  6.     
  7.         $difference = $takings  - $cost;
  8.         
  9.         if ($difference < 0){
  10.         
  11.             $difference = substr($difference, 1);
  12.             $font_color = 'red';
  13.             $profit_or_loss = '$' . $difference . 'm';
  14.         
  15.         }else if($difference >0){
  16.         
  17.             $font_color = 'green';
  18.             $profit_or_loss = "$" . $difference . "m";
  19.             
  20.         
  21.         }else {
  22.         
  23.             $font_color = 'blue';
  24.             $profit_or_loss = "Równowaga";
  25.         
  26.         }
  27.     return "<font color=\"$font_color\">" . $profit_or_loss . "</font>";
  28.     }
  29.     
  30.     function get_director(){
  31.     
  32.         global $movie_director;
  33.         global $director;
  34.         
  35.         $query_d = "SELECT people_fullname ".
  36.                       "FROM people ".
  37.                       "WHERE people_id = '$movie_director'"; //przypisuje odpowiednie pozycje z bd cyfrowo
  38.                         
  39.         $results_d = mysql_query($query_d)    or die(mysql_error());
  40.         $row_d = mysql_fetch_array($results_d); //przyporządkowuje asocjacyjnie wartosci w tablicy
  41.         extract($row_d);
  42.         $director = $people_fullname;
  43.     
  44.     }
  45.     
  46.     function get_leadactor(){
  47.     
  48.         global $movie_leadactor;
  49.         global $leadactor;
  50.         
  51.         $query_a = "SELECT people_fullname ".
  52.                       "FROM people ".
  53.                       "WHERE people_id = '$movie_leadactor'";
  54.                         
  55.         $results_a = mysql_query($query_a)    or die(mysql_error());
  56.         $row_a = mysql_fetch_array($results_a);
  57.         extract($row_a);
  58.         $leadactor = $people_fullname;
  59.     
  60.     }
  61.     
  62.     $query = "SELECT * FROM movie ".
  63.                 "WHERE movie_id= '" . $_GET['movie_id'] . "'"; // przechwyca id z adrsu URL
  64.     
  65.     $result = mysql_query($query, $link) or die (mysql_error());
  66.     
  67.     $movie_table_headings=<<<EB
  68.       
  69.         <tr>
  70.         
  71.             <th>Tytuł filmu</th>
  72.             <th>Rok produkcji</th>
  73.             <th>Reżyser</th>
  74.             <th>Główny aktor</th>
  75.             <th>Czas trwania</th>
  76.             <th>Zysk lub strata</th>
  77.             
  78.         </tr>
  79.                     EB;
  80.  
  81.   
  82.     
  83. $movie_health = calculate_differences($movie_takings, $movie_cost); //wywołanie funkcji
  84.  
  85. $page_start =<<<EC
  86.  
  87. <html>
  88.  
  89.     <head>
  90.         <meta http-equiv=\"content-type"\ content=\"text/html; charset=iso-8859-2"\>
  91.  
  92.  
  93.     <title>Szczegóły i recenzja dla: $movie_name</title>
  94.     </head>
  95.     
  96.     <body>
  97.     
  98.         EC;
  99.     
  100.     $movie_details =<<<ED
  101.     
  102.         <table width = '70%' border = '0' cellspacing = '2' cellpadding = '2' align ='center'>
  103.         
  104.             <tr>
  105.             
  106.                 <th colspan='6'><u><h2>$movie_name: szczegóły</h2></u></th>
  107.             
  108.             </tr>
  109.     $movie_table_headings
  110.             <tr>
  111.             
  112.                 <td width = '33%' align = 'center'>$movie_name</td>
  113.                 <td align = 'center'>$movie_year</td>
  114.                 <td align = 'center'>$director</td>
  115.                 <td align = 'center'>$leadactor</td>
  116.                 <td align = 'center'>$movie_running_time</td>
  117.                 <td align = 'center'>$movie_health</td>
  118.             
  119.             </tr>
  120.         </table>
  121.         <br />
  122.         <br />
  123.         ED;
  124.     $page_end =<<<EE
  125.         </body>
  126.         </html>
  127.         EE;
  128.             
  129.       $detailed_movie_info =<<<EF
  130.             $page_start
  131.             $movie_details
  132.             $page_end
  133.             EF;
  134.                 
  135.         echo $detailed_movie_info;
  136.         mysql_close();
  137.  
  138.         ?><!--c2--></div><!--ec2-->


Treść błędu: Parse error: syntax error, unexpected $end in D:\xampp\xampp\xampp\htdocs\movie_details.php on line 138

Proszę o pomoc głowię się nad tym ale czuję, że to jakieś potknięcie...gdzieś właśnie
Pozdrawiam.
everth
Ech, błąd tu może być wszędzie. Dlaczego do HTML nie zastosujesz jakiegoś szablonu? Albo nie domykasz htmla w stringach? Tak to trudno tu odróżnić tekst od kodu.

EDIT: Chciałbym ją znać (linię), ale nawet moje IDE się pogubiło w składni. Czyli zostaje ręczna robota (sprawdzanie linijka po linijce). Nie mam niestety tyle czasu.
!*!
A mógłbyś podać tą linię ?

Cytat
unexpected $end
Błąd tego typu pojawia się w przypadku, gdy interpreter osiągnął koniec pliku, a mimo to nie odnalazł jakiegoś symbolu. W zdecydowanej ilości przypadków błąd ten oznacza nie domknięcie nawiasu klamrowego.
adi19887
Linia 138 tak jak w załączonym kodzie smile.gif Hmmm wymczasowo uczę się kodowania w PHP do tej pory pracowałem w C++, everth co masz na myśli pisząc zamykanie HTML-a w stringach questionmark.gif
PanGuzol
Używaj cudzysłowów, są wygodniejsze ;]
http://php.net/manual/en/language.types.string.php
muk4
W heredoc w lini zamykającej musi być tylko ogranicznik tekstu - nie może być nawet spacji, czyli nie:
  1. $zmienna = <<<EOT
  2. Jakis tekst
  3. EOT;

lecz:
  1. $zmienna = <<<EOT
  2.   Jakis tekst
  3. EOT; //tylko ogranicznik


Musisz to poprawić przy każdym heredoc'u z tego co widzę.
Zainwestuj też w edytor/IDE z kolorowaniem składni.

@UP
Tutaj się nie zgodzę. Np. w heredoc nie musisz się martwić o wstawianie ukośników gdy w stingu są cudzysłowy.
everth
Co kto lubi - jednak sam widzisz że dodanie slasha przed (choćby za pomocą znajdź i zamień) " w stringu jest łatwiejsze niż polowanie na wcięcia i spacje w heredocu.
adi19887
Gdy zlikwiduję spację w Heredoc'ach pojawia mi się błąd:
Parse error: syntax error, unexpected T_SL in D:\xampp\xampp\xampp\htdocs\movie_details.php on line 85
Nie wiem czy zauważyłeś ale gdy bez spacji przypisałeś do zmiennej $zmienna coś tam to edytor kodu php na stronie pokazuje jakby było coś zle postawione np. cudzysłów za duzo... tak mnie się wydaje. W czym problem ?

Używam Pajączka...jakoś tak mi zostało po kodowaniu w CSS xHTML tongue.gif
PanGuzol
Na dłuższą metę w końcu przejdzie na jakiś system szablonów np Smarty czy OPT i prawie w ogóle nie będzie musiał się przejmować cudzysłowami i apostrofami. Głównie tylko w zapytaniach SQL.
muk4
Cytat(adi19887 @ 26.07.2010, 19:03:48 ) *
Gdy zlikwiduję spację w Heredoc'ach pojawia mi się błąd:
Parse error: syntax error, unexpected T_SL in D:\xampp\xampp\xampp\htdocs\movie_details.php on line 85
Nie wiem czy zauważyłeś ale gdy bez spacji przypisałeś do zmiennej $zmienna coś tam to edytor kodu php na stronie pokazuje jakby było coś zle postawione np. cudzysłów za duzo... tak mnie się wydaje. W czym problem ?

Używam Pajączka...jakoś tak mi zostało po kodowaniu w CSS xHTML tongue.gif


  1. $page_start =<<<EC

Po 'EC' jest spacja biggrin.gif Taki już jest heredoc.
Ja używam Notepad++ z domyślnym kolorowaniem i nie narzekam.
everth
Ja tam preferuję XSLT, ale co kto woli. Nie wiem jak tam w pajączku ale jeśli masz znajdź i zamień które akceptuje Regexpa to wpisz sobie coś takiego:
Kod
[\t ]+(?=E[A-F]+\;)

Zamień to na coś pustego. Nie wiem czy ten regexp nie zepsuje ci czegoś w innej części kodu, musisz przetestować

EDIT: XSLT jeśli chodzi o szablony
adi19887
Polikwidowałem wszystkie spacje po Heredocu i nadal ten sam błąd. Sciagam Notepad++ moze to cos pomoze

Czy to powinno tak wyglądaćquestionmark.gif:
  1. <!--c1--><div class='codetop'>Kod</div><div class='codemain'><!--ec1-->    $movie_table_headings=<<<EB<tr>
  2.         
  3.             <th>Tytuł filmu</th>
  4.             <th>Rok produkcji</th>
  5.             <th>Reżyser</th>
  6.             <th>Główny aktor</th>
  7.             <th>Czas trwania</th>
  8.             <th>Zysk lub strata</th>
  9.             
  10.         </tr>
  11.     EB;
  12.  
  13.   
  14.     
  15. $movie_health = calculate_differences($movie_takings, $movie_cost); //wywołanie funkcji
  16.  
  17. $page_start=<<<EC  <html>
  18.  
  19.     <head>
  20.         <meta http-equiv="\content-type"\ content="\text/html; charset=iso-8859-2"\>
  21.  
  22.  
  23.     <title>Szczegóły i recenzja dla: $movie_name</title>
  24.     </head>
  25.     
  26.     <body>
  27.     
  28.     EC;
  29.     
  30.     $movie_details=<<<EC<table width = '70%' border = '0' cellspacing = '2' cellpadding = '2' align ='center'>
  31.         
  32.             <tr>
  33.             
  34.                 <th colspan='6'><u><h2>$movie_name: szczegóły</h2></u></th>
  35.             
  36.             </tr>
  37.         $movie_table_headings
  38.             <tr>
  39.             
  40.                 <td width = '33%' align = 'center'>$movie_name</td>
  41.                 <td align = 'center'>$movie_year</td>
  42.                 <td align = 'center'>$director</td>
  43.                 <td align = 'center'>$leadactor</td>
  44.                 <td align = 'center'>$movie_running_time</td>
  45.                 <td align = 'center'>$movie_health</td>
  46.             
  47.             </tr>
  48.         </table>
  49.         <br />
  50.         <br />
  51.     ED;
  52.     $page_end=<<<EE</body>
  53.         </html>
  54.     EE;
  55.             
  56.       $detailed_movie_info=<<<EF$page_start
  57.             $movie_details
  58.             $page_end
  59.     EF;
  60.                 
  61.         echo $detailed_movie_info;
  62.         mysql_close();
  63.  
  64.         ?><!--c2--></div><!--ec2-->


Przy okazji wyświetla mi błąd: Parse error: syntax error, unexpected T_SL in D:\xampp\xampp\xampp\htdocs\movie_details.php on line 67

Przy czym pierwsza linia tego wycinka kou to właśnie linia nr 67 w edytorze.
muk4
Wrzuciłem to do siebie i poprawiłem. Nie wywala nic oprócz warningów o bazie i include (oczywiste)
  1. <!--c1--><div class='codetop'>Kod</div><div class='codemain'><!--ec1--><?php include ("headermovie.php"); ?>
  2. <?php
  3.  
  4.  
  5.  
  6. /*Funckcja obliczająca, czy film okazał się kasowym sukcesem czy raczej sromotna porażką*/
  7. function calculate_differences($takings, $cost){
  8.  
  9. $difference = $takings - $cost;
  10.  
  11. if ($difference < 0){
  12.  
  13. $difference = substr($difference, 1);
  14. $font_color = 'red';
  15. $profit_or_loss = '$' . $difference . 'm';
  16.  
  17. }else if($difference >0){
  18.  
  19. $font_color = 'green';
  20. $profit_or_loss = "$" . $difference . "m";
  21.  
  22.  
  23. }else {
  24.  
  25. $font_color = 'blue';
  26. $profit_or_loss = "Równowaga";
  27.  
  28. }
  29. return "<font color=\"$font_color\">" . $profit_or_loss . "</font>";
  30. }
  31.  
  32. function get_director(){
  33.  
  34. global $movie_director;
  35. global $director;
  36.  
  37. $query_d = "SELECT people_fullname ".
  38. "FROM people ".
  39. "WHERE people_id = '$movie_director'"; //przypisuje odpowiednie pozycje z bd cyfrowo
  40.  
  41. $results_d = mysql_query($query_d) or die(mysql_error());
  42. $row_d = mysql_fetch_array($results_d); //przyporządkowuje asocjacyjnie wartosci w tablicy
  43. extract($row_d);
  44. $director = $people_fullname;
  45.  
  46. }
  47.  
  48. function get_leadactor(){
  49.  
  50. global $movie_leadactor;
  51. global $leadactor;
  52.  
  53. $query_a = "SELECT people_fullname ".
  54. "FROM people ".
  55. "WHERE people_id = '$movie_leadactor'";
  56.  
  57. $results_a = mysql_query($query_a) or die(mysql_error());
  58. $row_a = mysql_fetch_array($results_a);
  59. extract($row_a);
  60. $leadactor = $people_fullname;
  61.  
  62. }
  63.  
  64. $query = "SELECT * FROM movie ".
  65. "WHERE movie_id= '" . $_GET['movie_id'] . "'"; // przechwyca id z adrsu URL
  66.  
  67. $result = mysql_query($query, $link) or die (mysql_error());
  68.  
  69. $movie_table_headings=<<<EB
  70.  
  71.   <tr>
  72.  
  73.   <th>Tytuł filmu</th>
  74.   <th>Rok produkcji</th>
  75.   <th>Reżyser</th>
  76.   <th>Główny aktor</th>
  77.   <th>Czas trwania</th>
  78.   <th>Zysk lub strata</th>
  79.  
  80.   </tr>
  81. EB;
  82.  
  83.  
  84.  
  85. $movie_health = calculate_differences($movie_takings, $movie_cost); //wywołanie funkcji
  86.  
  87. $page_start = <<<EC
  88.  
  89. <html>
  90.  
  91.   <head>
  92.   <meta http-equiv=\"content-type"\ content=\"text/html; charset=iso-8859-2"\>
  93.  
  94.  
  95.   <title>Szczegóły i recenzja dla: $movie_name</title>
  96.   </head>
  97.  
  98.   <body>
  99.  
  100. EC;
  101.  
  102. $movie_details =<<<ED
  103.  
  104.   <table width = '70%' border = '0' cellspacing = '2' cellpadding = '2' align ='center'>
  105.  
  106.   <tr>
  107.  
  108.   <th colspan='6'><u><h2>$movie_name: szczegóły</h2></u></th>
  109.  
  110.   </tr>
  111.   $movie_table_headings
  112.   <tr>
  113.  
  114.   <td width = '33%' align = 'center'>$movie_name</td>
  115.   <td align = 'center'>$movie_year</td>
  116.   <td align = 'center'>$director</td>
  117.   <td align = 'center'>$leadactor</td>
  118.   <td align = 'center'>$movie_running_time</td>
  119.   <td align = 'center'>$movie_health</td>
  120.  
  121.   </tr>
  122.   </table>
  123.   <br />
  124.   <br />
  125. ED;
  126. $page_end =<<<EE
  127.   </body>
  128.   </html>
  129. EE;
  130.  
  131. $detailed_movie_info =<<<EF
  132.   $page_start
  133.   $movie_details
  134.   $page_end
  135. EF;
  136.  
  137. echo $detailed_movie_info;
  138.  
  139. ?><!--c2--></div><!--ec2-->
adi19887
Dziękuję wszystkim, kod działa smile.gif muk4 masz ode mnie plusa. No i sciągnąłem Notepada++ tongue.gif
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.