Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Problem z zakończeniem kodu
adi19887
post 26.07.2010, 17:23:47
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 13.07.2010

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


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
everth
post 26.07.2010, 17:36:11
Post #2





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


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.

Ten post edytował everth 26.07.2010, 17:46:41


--------------------
Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]!
Go to the top of the page
+Quote Post
!*!
post 26.07.2010, 17:40:40
Post #3





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


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.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
adi19887
post 26.07.2010, 17:43:25
Post #4





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 13.07.2010

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


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
Go to the top of the page
+Quote Post
PanGuzol
post 26.07.2010, 17:51:21
Post #5





Grupa: Zarejestrowani
Postów: 353
Pomógł: 50
Dołączył: 28.07.2005
Skąd: Łaziska Górne

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


Używaj cudzysłowów, są wygodniejsze ;]
http://php.net/manual/en/language.types.string.php


--------------------
Sposób na życie? Uśmiech na twarzy :D
"Widzę więcej, wiem więcej, tak to jest mniej więcej"
"NIE kradnij, rząd nielubi konkurencji"
Go to the top of the page
+Quote Post
muk4
post 26.07.2010, 17:51:57
Post #6





Grupa: Zarejestrowani
Postów: 309
Pomógł: 56
Dołączył: 3.11.2006
Skąd: Gliwice

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


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.

Ten post edytował muk4 26.07.2010, 17:55:36
Go to the top of the page
+Quote Post
everth
post 26.07.2010, 18:00:09
Post #7





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


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.


--------------------
Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]!
Go to the top of the page
+Quote Post
adi19887
post 26.07.2010, 18:03:48
Post #8





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 13.07.2010

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


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

Ten post edytował adi19887 26.07.2010, 18:05:34
Go to the top of the page
+Quote Post
PanGuzol
post 26.07.2010, 18:04:24
Post #9





Grupa: Zarejestrowani
Postów: 353
Pomógł: 50
Dołączył: 28.07.2005
Skąd: Łaziska Górne

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


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.


--------------------
Sposób na życie? Uśmiech na twarzy :D
"Widzę więcej, wiem więcej, tak to jest mniej więcej"
"NIE kradnij, rząd nielubi konkurencji"
Go to the top of the page
+Quote Post
muk4
post 26.07.2010, 18:13:28
Post #10





Grupa: Zarejestrowani
Postów: 309
Pomógł: 56
Dołączył: 3.11.2006
Skąd: Gliwice

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


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.

Ten post edytował muk4 26.07.2010, 18:14:03
Go to the top of the page
+Quote Post
everth
post 26.07.2010, 18:15:25
Post #11





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


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

Ten post edytował everth 26.07.2010, 18:16:06


--------------------
Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]!
Go to the top of the page
+Quote Post
adi19887
post 26.07.2010, 18:40:06
Post #12





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 13.07.2010

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


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.
Go to the top of the page
+Quote Post
muk4
post 26.07.2010, 18:43:25
Post #13





Grupa: Zarejestrowani
Postów: 309
Pomógł: 56
Dołączył: 3.11.2006
Skąd: Gliwice

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


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-->
Go to the top of the page
+Quote Post
adi19887
post 26.07.2010, 18:49:31
Post #14





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 13.07.2010

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


Dziękuję wszystkim, kod działa smile.gif muk4 masz ode mnie plusa. No i sciągnąłem Notepada++ tongue.gif
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 - 06:45