• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

PHP Parse error: syntax error, unexpected ' ' 500 Internal Server error

VPS Starter Arubacloud
+1 głos
771 wizyt
pytanie zadane 7 października 2021 w PHP przez Jacek Śmiel Użytkownik (510 p.)

Witajcie,

stworzyłem sobie swoją aplikację lokalnie na windowsie na xampie. Chciałem ją przerzucić na serwer apache2, cała strona działa ok, lecz strona zarobki.php niestety nie chcę się w ogóle załadować, w przeglądarce dostaje błąd 500 internal server error. W logach apache, dostaję błąd:

[Thu Oct 07 12:58:30.303827 2021] [php7:emerg] [pid 18580] [client xxx.xxxx.xxxx:59661] PHP Parse error:  syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting '-' or identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in /var/www/html/public_html/zarobki.php on line 262, referer: http://apka.moja-strona.ovh/settings/account.php

Na xampie na widowsie ten problem nie występuje. Kawałek kodu na którym kompilator staje nizej:

    <?php

      echo '
      <table class="table">
      <thead>
      <tr>
        <th scope="col">ID operacji w systemie</th>
        <th scope="col">Login wypłacającego</th>
        <th scope="col">Kwota zlecona do wypłaty</th>
        <th scope="col">Data zlecenia wypłaty</th>
        <th scope="col">Data aktualizacji statusu</th>
        <th scope="col">Wypłata na</th>
        <th scope="col">Status wypłaty</th>
        <th scope="col">Komentarz</th>
      </tr>';

      $zapytanie_tabela_wszytskich_userow = "SELECT * FROM wyplaty WHERE `nick` = '$nick'";
      $rezultat_tabela_ze_wszytskimi_userami = mysqli_query($connect, $zapytanie_tabela_wszytskich_userow);

      while($wiersz_wszyscy_userzy = mysqli_fetch_assoc($rezultat_tabela_ze_wszytskimi_userami)) {
        $id_wszyscy_zlecone_wyplaty = $wiersz_wszyscy_userzy['id'];  
        $login_wszyscy_zlecone_wyplaty = $wiersz_wszyscy_userzy['nick'];
        $kwota_wszyscy_zlecone_wyplaty = $wiersz_wszyscy_userzy['kwota'];
        $data_zlecenia_wszyscy_zlecone_wyplaty = $wiersz_wszyscy_userzy['data_zlecenia'];
        $data_aktualizacji_wszyscy_zlecone_wyplaty = $wiersz_wszyscy_userzy['data_aktualizacji'];
        $status_wszyscy_zlecone_wyplaty = $wiersz_wszyscy_userzy['status'];
        $wyplata_na_zlecone_wyplaty = $wiersz_wszyscy_userzy['wyplata_na'];  
        $komentarz_wszystkie_zlecone_wyplaty = $wiersz_wszyscy_userzy['komentarz'];
        
        //nizej kolorowanie statusow wyplat zaleznie od potrzeby
        if($status_wszyscy_zlecone_wyplaty == 'zlecono') {
          $status_wyplaty_kolorowy = '<p class="text-warning">zlecono</p>';
        }

        if($status_wszyscy_zlecone_wyplaty == 'wykonana') {
          $status_wyplaty_kolorowy = '<p class="text-success">wykonana</p>';
        }

        if($status_wszyscy_zlecone_wyplaty == 'odrzucona_bez_zwrotu') {
          $status_wyplaty_kolorowy = '<p class="text-danger">odrzucona bez zwrotu salda</p>
          <p class="text-primary">'.$komentarz_wszystkie_zlecone_wyplaty.'</p>';
        }

        if($status_wszyscy_zlecone_wyplaty == 'odrzucona_ze_zwrotem_salda') {
          $status_wyplaty_kolorowy = '<p class="text-danger">odrzucona ze zwrotem salda</p>';
        }

        echo '</thead>
        <tbody>
        <tr>
        <th scope="row">'.$id_wszyscy_zlecone_wyplaty.'</th>
        <th scope="row">'.$login_wszyscy_zlecone_wyplaty.'</th>
        <th scope="row">'.$kwota_wszyscy_zlecone_wyplaty.' zł</th>
        <th scope="row">'.$data_zlecenia_wszyscy_zlecone_wyplaty.'</th>
        <th scope="row">'.$data_aktualizacji_wszyscy_zlecone_wyplaty.'</th>
        <th scope="row">'.$wyplata_na_zlecone_wyplaty.'</th>
        <th scope="row">'.$status_wyplaty_kolorowy.'</th>
        <th scope="row">'; 
        echo '
        <a href="komentarz-wyplaty.php?id='.$id_wszyscy_zlecone_wyplaty.'.php" class="badge badge-pill badge-info"> Sprawdź</a>
        </tr>';

      }
      echo '
      </tbody>
      </table>';
     

    ?>

Nie potrafię sobie poradzić z tym problem od wczoraj. Kilka razy sprawdzałem kod pętli while, lecz na innym serwerze apache2 na windowie bez żadnego problemu strona się ładuję. Proszę mądrzejsze głowy odemnie o pomoc ;)

komentarz 7 października 2021 przez VBService Ekspert (255,760 p.)
edycja 7 października 2021 przez VBService

Pomijając ten błąd, o który pytasz, masz inne

wypisujesz tzw. head tabeli

  echo '
  <table class="table">
  <thead>
  <tr>
    <th scope="col">ID operacji w systemie</th>
    <th scope="col">Login wypłacającego</th>
    <th scope="col">Kwota zlecona do wypłaty</th>
    <th scope="col">Data zlecenia wypłaty</th>
    <th scope="col">Data aktualizacji statusu</th>
    <th scope="col">Wypłata na</th>
    <th scope="col">Status wypłaty</th>
    <th scope="col">Komentarz</th>
  </tr>';

a później w pętli while co każdy wiersz wypisujesz

while($wiersz_wszyscy_userzy = ...) {
  ...
  echo '</thead>
    <tbody>
    <tr> ...

to powinno się znaleść przed pętlą

  echo '
  <table class="table">
  <thead>
  <tr>
    <th scope="col">ID operacji w systemie</th>
    <th scope="col">Login wypłacającego</th>
    <th scope="col">Kwota zlecona do wypłaty</th>
    <th scope="col">Data zlecenia wypłaty</th>
    <th scope="col">Data aktualizacji statusu</th>
    <th scope="col">Wypłata na</th>
    <th scope="col">Status wypłaty</th>
    <th scope="col">Komentarz</th>
  </tr>
  </thead>
  <tbody>';

  ...

  while($wiersz_wszyscy_userzy = ...) {

 

ostatni <th> w <tbody> masz "niedomknięty" ( </th> )

. . .
<th scope="row">'; 
echo '
<a href="komentarz-wyplaty.php?id='.$id_wszyscy_zlecone_wyplaty.'.php" class="badge badge-pill badge-info"> Sprawdź</a>
</tr>';

 

Moim zdaniem nie ma sensu wierszy zwróconych z sql-a przypisywać do zmiennych gdy nie używa się ich poza pętlą, ewentualnie używać zmiennych, które ułatwiają formatowanie kodu wyjściowego html.

Propozycja

<?php

  echo '
  <table class="table">
  <thead>
  <tr>
    <th scope="col">ID operacji w systemie</th>
    <th scope="col">Login wypłacającego</th>
    <th scope="col">Kwota zlecona do wypłaty</th>
    <th scope="col">Data zlecenia wypłaty</th>
    <th scope="col">Data aktualizacji statusu</th>
    <th scope="col">Wypłata na</th>
    <th scope="col">Status wypłaty</th>
    <th scope="col">Komentarz</th>
  </tr>
  </thead>
  <tbody>';
 
  $zapytanie_tabela_wszytskich_userow = "SELECT * FROM wyplaty WHERE `nick` = '$nick'";
  $rezultat_tabela_ze_wszytskimi_userami = mysqli_query($connect, $zapytanie_tabela_wszytskich_userow);
 
  while($wiersz_wszyscy_userzy = mysqli_fetch_assoc($rezultat_tabela_ze_wszytskimi_userami)) {
    //nizej kolorowanie statusow wyplat zaleznie od potrzeby
    if($wiersz_wszyscy_userzy['status'] == 'zlecono') {
      $status_wyplaty_kolorowy = '<p class="text-warning">zlecono</p>';
    }
 
    if($wiersz_wszyscy_userzy['status'] == 'wykonana') {
      $status_wyplaty_kolorowy = '<p class="text-success">wykonana</p>';
    }
 
    if($wiersz_wszyscy_userzy['status'] == 'odrzucona_bez_zwrotu') {
      $status_wyplaty_kolorowy = '<p class="text-danger">odrzucona bez zwrotu salda</p>
      <p class="text-primary">'.$wiersz_wszyscy_userzy['komentarz'].'</p>';
    }
 
    if($wiersz_wszyscy_userzy['status'] == 'odrzucona_ze_zwrotem_salda') {
      $status_wyplaty_kolorowy = '<p class="text-danger">odrzucona ze zwrotem salda</p>';
    }

    $a_tag_sprawdz = '<a href="komentarz-wyplaty.php?id='.$wiersz_wszyscy_userzy['id'].'" class="badge badge-pill badge-info">Sprawdź</a>';
 
    echo '
    <th scope="row">'.$wiersz_wszyscy_userzy['id'].'</th>
    <th scope="row">'.$wiersz_wszyscy_userzy['nick'].'</th>
    <th scope="row">'.$wiersz_wszyscy_userzy['kwota'].' zł</th>
    <th scope="row">'.$wiersz_wszyscy_userzy['data_zlecenia'].'</th>
    <th scope="row">'.$wiersz_wszyscy_userzy['data_aktualizacji'].'</th>
    <th scope="row">'.$wiersz_wszyscy_userzy['wyplata_na'].'</th>
    <th scope="row">'.$status_wyplaty_kolorowy.'</th>
    <th scope="row">'.$a_tag_sprawdz.'</th>
    </tr>';
 
  }

  echo '
  </tbody>
  </table>';  
 
?>

 

2 odpowiedzi

0 głosów
odpowiedź 7 października 2021 przez CubeStorm Pasjonat (15,020 p.)
Co znajduje się w tym pliku w linii 262? Tam jest wyrzucany problem.

Na jakiej wersji php pisałeś stronę lokalnie?
komentarz 7 października 2021 przez Jacek Śmiel Użytkownik (510 p.)

strone pisalem na php 7.3.25, a serwer jest w wersji 7.2.24.

Na linii 262 znajduje sie:

$id_wszyscy_zlecone_wyplaty = $wiersz_wszyscy_userzy['id']; 

 

0 głosów
odpowiedź 7 października 2021 przez VBService Ekspert (255,760 p.)

Może spróbuj "przenieść" kod html poza kod php

 

propozycja

<?php
	$zapytanie_tabela_wszytskich_userow = "SELECT * FROM wyplaty WHERE `nick` = '$nick'";
	$rezultat_tabela_ze_wszytskimi_userami = mysqli_query($connect, $zapytanie_tabela_wszytskich_userow);
 
	$wiersz_wszyscy_userzy_html = '';
	while($wiersz_wszyscy_userzy = mysqli_fetch_assoc($rezultat_tabela_ze_wszytskimi_userami)) {
		//nizej kolorowanie statusow wyplat zaleznie od potrzeby
		switch($wiersz_wszyscy_userzy['status']) {
			case 'zlecono':  
				$status_wyplaty_kolorowy = '<p class="text-warning">zlecono</p>';
				break;
			case 'wykonana': 
				$status_wyplaty_kolorowy = '<p class="text-success">wykonana</p>';
				break;
			case 'odrzucona_bez_zwrotu': 
				$status_wyplaty_kolorowy =  '<p class="text-danger">odrzucona bez zwrotu salda</p>
											 <p class="text-primary">'.$wiersz_wszyscy_userzy['komentarz'].'</p>';
				break;
			case 'odrzucona_ze_zwrotem_salda': 
				$status_wyplaty_kolorowy = '<p class="text-danger">odrzucona ze zwrotem salda</p>';
				break;
			default:
				$status_wyplaty_kolorowy = '';
		}	

		$a_tag_sprawdz = '<a href="komentarz-wyplaty.php?id='.$wiersz_wszyscy_userzy['id'].'" class="badge badge-pill badge-info">Sprawdź</a>';

		$wiersz_wszyscy_userzy_html .= '
			<tr>
				<th scope="row">'.$wiersz_wszyscy_userzy['id'].'</th>
				<th scope="row">'.$wiersz_wszyscy_userzy['nick'].'</th>
				<th scope="row">'.$wiersz_wszyscy_userzy['kwota'].' zł</th>
				<th scope="row">'.$wiersz_wszyscy_userzy['data_zlecenia'].'</th>
				<th scope="row">'.$wiersz_wszyscy_userzy['data_aktualizacji'].'</th>
				<th scope="row">'.$wiersz_wszyscy_userzy['wyplata_na'].'</th>
				<th scope="row">'.$status_wyplaty_kolorowy.'</th>
				<th scope="row">'.$a_tag_sprawdz.'</th>
			</tr>'; 
	} 
?>
<table class="table">
    <thead>
		<tr>
			<th scope="col">ID operacji w systemie</th>
			<th scope="col">Login wypłacającego</th>
			<th scope="col">Kwota zlecona do wypłaty</th>
			<th scope="col">Data zlecenia wypłaty</th>
			<th scope="col">Data aktualizacji statusu</th>
			<th scope="col">Wypłata na</th>
			<th scope="col">Status wypłaty</th>
			<th scope="col">Komentarz</th>
		</tr>
    </thead>
    <tbody>
		<?php echo $wiersz_wszyscy_userzy_html; ?>
	</tbody>
</table>

 

Podobne pytania

0 głosów
1 odpowiedź 426 wizyt
pytanie zadane 6 lutego 2018 w PHP przez tatar Użytkownik (740 p.)
0 głosów
1 odpowiedź 1,471 wizyt
pytanie zadane 3 grudnia 2017 w PHP przez Mateusz Bogumił Obywatel (1,380 p.)
0 głosów
1 odpowiedź 1,401 wizyt

92,957 zapytań

141,915 odpowiedzi

321,147 komentarzy

62,286 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...