Problemy z programem w PHP.

0

Mam taki błąd.
Parse error: syntax error, unexpected end of file in /koszyk.php on line 132

**

W poniższym programie. Dlaczego i jak go zlikwidować ? Numeru takiej linii nie ma. ******** Dziękuję za pomoc. **

  1. <html>
  2. <body>
  3. <?php
  4. session_start();

  5. ?>

  6. <?php '<?xml version="1.0" encoding="utf-8"?>';?>
  7. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
  8. "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

  9. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl"><head>
  10. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2" />
  11. <title>tytuł strony</title></head><body>
  12. Koszyk / wróć do towarów/ dane

  13. <?
  14. $sql_serwer = "";

  15. $sql_login = "";

  16. $sql_haslo = "";

  17. $sql_baza = "";

  18. $sql_tabela = "produkty";

  19. function odbierz($txt) {

  20. if (get_magic_quotes_gpc()) $txt = stripslashes($txt);

  21. return str_replace(array('\',"'"), array('\\',"'"), trim($txt));

  22. }

  23. $id = odbierz($_REQUEST["id"]);

  24. $sz = isset($_REQUEST["sz"])?number_format($_REQUEST["sz"],0,".",""):"";

  25. if ($id<>"") {

  26. $link = mysqli_connect("serwer.home.pl","pierwsza",konny", "pierwsza");

  27. if (mysqli_connect("serwer.home.pl","pierwsza","konny", "pierwsza"));

  28. mysqli_select_db($link, "pierwsza");

  29. $wynik = mysqli_query($link, "SELECT * FROM Zamowienia");

  30. mysqli_close($link);

  31. if (!$wynik)

  32. {

  33. echo 'Błąd: : Połączenie z bazą danych nie powiodło się. Spróbuj jeszcze raz później.';

  34. exit;

  35. }

  36. mysql_close();

  37. if ($wynik and mysql_num_rows($wynik)==1) {

  38. $dane = mysql_fetch_array($wynik);

  39. $_SESSION["koszyk"]["$id"]["towar"]=$dane["towar"];

  40. $_SESSION["koszyk"]["$id"]["cena"]=$dane["cena"];

  41. $_SESSION["koszyk"]["$id"]["rozmiar"]=$_GET["rozmiar"];

  42. if ($sz=="") $_SESSION["koszyk"]["$id"]["ile"]++;

  43. else if ($sz>=1) $_SESSION["koszyk"]["$id"]["ile"]=$sz;

  44. else if ($sz<=0) unset($_SESSION["koszyk"]["$id"]);

  45. }

  46. if (count($_SESSION["koszyk"])>0) {

  47. echo "<table border="1">

  48. <colgroup>
  49. <col />
  50. <col align="\&quot;right\&quot;" />
  51. <col align="\&quot;center\&quot;" />
  52. <col align="\&quot;right\&quot;" />
  53. </colgroup>
  54. towar</th>cena</th>sztuk</th>łącznie</th></tr>";
  55. foreach($_SESSION["koszyk"] as $indeks=>$kosz) {

  56. $laczniesztuk +=$kosz["ile"];

  57. $cena = $kosz["cena"];

  58. $towar .= $kosz["towar"];

  59. $towar .= "
    Rozmiar: ";

  60. $towar .= $kosz["rozmiar"];

  61. echo "";

  62. echo "$towar</td>";

  63. echo "$cena zł</td>";

  64. echo "

  65. <form action="\&quot;koszyk.php\&quot;" method="\&quot;get\&quot;" style="\&quot;display:inline;\&quot;">
  66. <input type="hidden" name="id" value="$indeks" />

  67. <input type="text" name="sz" value="{$kosz["ile"]}"

  68. style="width:25px;" />

  69. <input type="submit" value="zmień" style="width:45px;" />

  70. </div></form>
  71. <form action="\&quot;koszyk.php\&quot;" method="\&quot;get\&quot;" style="\&quot;display:inline;\&quot;">
  72. <input type="hidden" name="id" value="$indeks;" />

  73. <input type="hidden" name="sz" value="0"

  74. style="width:25px;" />

  75. <input type="submit" value="usuń" style="width:45px;" />

  76. </div></form>
  77. </td>";
  78. echo "".number_format($cena*$kosz["ile"],2,".","");

  79. echo " zł</td>";

  80. echo "</tr>";

  81. $lacznie +=$cena*$kosz["ile"];

  82. $laczniesztuk +=$kosz["ile"];

  83. echo "<td colspan="3" align="right">

  84. w sumie: </td>";

  85. echo number_format($lacznie,2,".","")." zł</td></tr>";

  86. echo "</table>";

  87. echo "

    Koszyk jest pusty...

    ";</p>
  88. ?>

  89. </body>
  90. </html</li>
4

Wklej to jako kod przy użyciu tagów czy tam belki. Tak to się czytać tego nie da.
Błąd masz w 132 linijce, gdzie ona jest?
Wyjaśnił się chyba błąd z headers already sent z którym walczysz od pół roku. Jak prosimy grzecznie wklejał cały kod to czemu nie wklejałeś, że przed <php? masz jeszcze tagi HTML? Przecież to leci do przeglądarki.
A teraz popraw wklejenie tego kodu i sam się zastanów gdzie masz linię 132.

0
<html>
<body>
<?php

session_start();

?>

<?php '<?xml version="1.0" encoding="utf-8"?>';?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"

"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"&gt;

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl"><head>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-2" />
<title>tytuł strony</title></head><body>
Koszyk / wróć do towarów/ dane

<?

$sql_serwer = "";

$sql_login = "";

$sql_haslo = "";

$sql_baza = "";

$sql_tabela = "produkty";

function odbierz($txt) {

if (get_magic_quotes_gpc()) $txt = stripslashes($txt);

return str_replace(array('\',"'"), array('\\',"\'"), trim($txt));

}

$id = odbierz($_REQUEST["id"]);

$sz = isset($_REQUEST["sz"])?number_format($_REQUEST["sz"],0,".",""):"";

if ($id<>"") {

$link = mysqli_connect("serwer.home.pl","pierwsza",konny", "pierwsza");

if (mysqli_connect("serwer.home.pl","pierwsza","konny", "pierwsza"));

mysqli_select_db($link, "pierwsza");

$wynik = mysqli_query($link, "SELECT * FROM Zamowienia");

mysqli_close($link);

if (!$wynik)

{

echo 'Błąd: : Połączenie z bazą danych nie powiodło się. Spróbuj jeszcze raz później.';

exit;

}

mysql_close();

if ($wynik and mysql_num_rows($wynik)==1) {

$dane = mysql_fetch_array($wynik);

$_SESSION["koszyk"]["$id"]["towar"]=$dane["towar"];

$_SESSION["koszyk"]["$id"]["cena"]=$dane["cena"];

$_SESSION["koszyk"]["$id"]["rozmiar"]=$_GET["rozmiar"];

if ($sz=="") $_SESSION["koszyk"]["$id"]["ile"]++;

else if ($sz>=1) $_SESSION["koszyk"]["$id"]["ile"]=$sz;

else if ($sz<=0) unset($_SESSION["koszyk"]["$id"]);

}

if (count($_SESSION["koszyk"])>0) {

echo "<table border=\"1\">

<colgroup>
<col />
<col align=\"right\" />

<col align=\"center\" />

<col align=\"right\" />

</colgroup>

towar</th>cena</th>sztuk</th>łącznie</th></tr>";
foreach($_SESSION["koszyk"] as $indeks=>$kosz) {

$laczniesztuk +=$kosz["ile"];

$cena = $kosz["cena"];

$towar .= $kosz["towar"];

$towar .= "
Rozmiar: ";

$towar .= $kosz["rozmiar"];

echo "";

echo "$towar</td>";

echo "$cena zł</td>";

echo "

<form action=\"koszyk.php\" method=\"get\" style=\"display:inline;\">

<div style=\"display:inline;\">

<input type=\"hidden\" name=\"id\" value=\"$indeks\" />

<input type=\"text\" name=\"sz\" value=\"{$kosz["ile"]}\"

style=\"width:25px;\" />

<input type=\"submit\" value=\"zmień\" style=\"width:45px;\" />

</div></form>

<form action=\"koszyk.php\" method=\"get\" style=\"display:inline;\">

<div style=\"display:inline;\">

<input type=\"hidden\" name=\"id\" value=\"$indeks;\" />

<input type=\"hidden\" name=\"sz\" value=\"0\"

style=\"width:25px;\" />

<input type=\"submit\" value=\"usuń\" style=\"width:45px;\" />

</div></form>

</td>";

echo "".number_format($cena*$kosz["ile"],2,".","");

echo " zł</td>";

echo "</tr>";

$lacznie +=$cena*$kosz["ile"];

$laczniesztuk +=$kosz["ile"];

echo "<td colspan=\"3\" align=\"right\">

w sumie: </td>";

echo number_format($lacznie,2,".","")." zł</td></tr>";

echo "</table>";

echo "

Koszyk jest pusty...

";</p>
?>

</body>

</html
4

Nie masz zamkniętego końcowego znacznika HTML
</html powinno być </html>
Co robi zamknięcie paragrafu za echo?

echo "

Koszyk jest pusty...

";</p>
?>

</p> jest HTMLem PHPowy parser go nie odczyta. Wrzuć to w echo lub zmień miejsce zamykania PHP przy użyciu tagu kończącego skrypt.
Np.

echo "

Koszyk jest pusty...

";
echo '</p>';
?>

Najlepiej byłoby jakoś pozbyć się tego HTMLa i nie mieszać tego z logiką.

Edit. Wrzuciłem to w IDE. Działać to to na bank nie będzie, ale chociaż nie masz już błędów składni.
Zainstaluj sobie jakieś VSCode czy Sublime i korzystaj z jakiegoś IDE.

<?php
session_start();// session start zawsze na początku pliku!
?>
<html>
<body>

<!--Po prostu poniższy początek strony HTML wywal i zastąp prawidłowym-->
<?php '<?xml version="1.0" encoding="utf-8"?>'; ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
<!--Po co to &gt?-->
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"&gt;

<!--Ponizej masz zle napisany znacznik html, masz go tez wczesniej-->
<!--<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl">-->
<head>
    <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2"/>
    <title>tytuł strony</title>
</head>
<body>
Koszyk / wróć do towarów/ dane

<?

$sql_serwer = "";

$sql_login = "";

$sql_haslo = "";

$sql_baza = "";

$sql_tabela = "produkty";

function odbierz($txt)
{

    if (get_magic_quotes_gpc()) $txt = stripslashes($txt);

    return str_replace(array('\'', "'"), array('\\', "\'"), trim($txt));//brak cudzyslowu ('\' ->'<-

}

$id = odbierz($_REQUEST["id"]);

$sz = isset($_REQUEST["sz"]) ? number_format($_REQUEST["sz"], 0, ".", "") : "";

if ($id <> "") {

    $link = mysqli_connect("serwer.home.pl", "pierwsza", "konny", "pierwsza"); // brak cudzysłowu "konny

    if (mysqli_connect("serwer.home.pl", "pierwsza", "konny", "pierwsza")) ;

    mysqli_select_db($link, "pierwsza");

    $wynik = mysqli_query($link, "SELECT * FROM Zamowienia");

    mysqli_close($link);

    if (!$wynik) {

        echo 'Błąd: : Połączenie z bazą danych nie powiodło się. Spróbuj jeszcze raz później.';

        exit;

    }

    mysql_close();

    if ($wynik and mysql_num_rows($wynik) == 1) {

        $dane = mysql_fetch_array($wynik);

        $_SESSION["koszyk"]["$id"]["towar"] = $dane["towar"];

        $_SESSION["koszyk"]["$id"]["cena"] = $dane["cena"];

        $_SESSION["koszyk"]["$id"]["rozmiar"] = $_GET["rozmiar"];

        if ($sz == "") $_SESSION["koszyk"]["$id"]["ile"]++;

        else if ($sz >= 1) $_SESSION["koszyk"]["$id"]["ile"] = $sz;

        else if ($sz <= 0) unset($_SESSION["koszyk"]["$id"]);

    }

    if (count($_SESSION["koszyk"]) > 0) {

        echo "<table border=\"1\">

<colgroup>
<col />
<col align=\"right\" />

<col align=\"center\" />

<col align=\"right\" />

</colgroup>

towar</th>cena</th>sztuk</th>łącznie</th></tr>";
        foreach ($_SESSION["koszyk"] as $indeks => $kosz) {

            $laczniesztuk += $kosz["ile"];

            $cena = $kosz["cena"];

            $towar = ''; // Jak deklarujesz zmienną to z jakas wartoscia - dodane
            $towar .= $kosz["towar"];

            $towar .= "
Rozmiar: ";

            $towar .= $kosz["rozmiar"];

            echo "";

            echo "$towar</td>";

            echo "$cena zł</td>";

            echo "

<form action=\"koszyk.php\" method=\"get\" style=\"display:inline;\">

<div style=\"display:inline;\">

<input type=\"hidden\" name=\"id\" value=\"$indeks\" />

<input type=\"text\" name=\"sz\" value=\"{$kosz["ile"]}\"

style=\"width:25px;\" />

<input type=\"submit\" value=\"zmień\" style=\"width:45px;\" />

</div></form>

<form action=\"koszyk.php\" method=\"get\" style=\"display:inline;\">

<div style=\"display:inline;\">

<input type=\"hidden\" name=\"id\" value=\"$indeks;\" />

<input type=\"hidden\" name=\"sz\" value=\"0\"

style=\"width:25px;\" />

<input type=\"submit\" value=\"usuń\" style=\"width:45px;\" />

</div></form>

</td>";

            echo "" . number_format($cena * $kosz["ile"], 2, ".", "");

            echo " zł</td>";

            echo "</tr>";

            $lacznie = 0;// podobnie jak wczesciej robisz += na niezainicjowanej zmiennej
            $lacznie += $cena * $kosz["ile"];

            $laczniesztuk += $kosz["ile"];

            echo "<td colspan=\"3\" align=\"right\">

w sumie: </td>";

            echo number_format($lacznie, 2, ".", "") . " zł</td></tr>";

            echo "</table>";

            echo "

Koszyk jest pusty...

";
            echo '</p>';
        }// do tego miałeś nie zamkniętą pętle foreach
    }// do tego miałeś nie zamkniętego ifa
}// i jeszcze jeden brak nawiasu
?>

</body>

</html>
0

Teraz to katastrofa:

Warning: PHP Startup: Cannot start session when headers already sent in /koszyk.php on line 2
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> Koszyk / wróć do towarów/ dane
Warning: PHP Startup: php_network_getaddresses: getaddrinfo failed: Name or service not known in /koszyk.php on line 50

Warning: PHP Startup: (HY000/2002): php_network_getaddresses: getaddrinfo failed: Name or service not known in /koszyk.php on line 50

Warning: PHP Startup: php_network_getaddresses: getaddrinfo failed: Name or service not known in /koszyk.php on line 52

Warning: PHP Startup: (HY000/2002): php_network_getaddresses: getaddrinfo failed: Name or service not known in /koszyk.php on line 52

Warning: mysqli_select_db() expects parameter 1 to be mysqli, boolean given in /koszyk.php on line 54

Warning: mysqli_query() expects parameter 1 to be mysqli, boolean given in /koszyk.php on line 56

Warning: mysqli_close() expects parameter 1 to be mysqli, boolean given in /koszyk.php on line 58
Błąd: : Połączenie z bazą danych nie powiodło się. Spróbuj jeszcze raz później.

3
adamon napisał(a):

Teraz to katastrofa:

Warning: PHP Startup: Cannot start session when headers already sent in /koszyk.php on line 2

Jak chcesz naprawić te błędy, skoro - pomimo wielokrotnych tłumaczeń - nie pojmujesz nawet tak elementarnej kwestii, jak konieczność otwarcia sesji, przed wysłaniem jakichkolwiek danych do przeglądarki?

1

Czy to nie wystarczy ?

<?php session_start();// session start zawsze na początku pliku! ?>
3

Ostatni raz...
W 50 linijce masz połączenie do bazy.

 $link = mysqli_connect("serwer.home.pl", "pierwsza", "konny", "pierwsza"); // brak cudzysłowu "konny

    if (mysqli_connect("serwer.home.pl", "pierwsza", "konny", "pierwsza")) ;

Spróbuj wpisać poprawny adres serwera. Masz informacje, że adres nie może być znaleziony.
Zrób tu porządek. Po co Ci 2 takie same linijki kodu? Wiesz co tu się dzieje? Spróbuj się zastanowić. Czytaj i wrzucaj błędy w Google i translator jeśli nie dajesz rady po angielsku.
Wcześniej masz jakieś zmienne, których nazwa sugeruje użycie do połączenia do bazy danych, po co?
Zainstalowałeś VScode z dodatkiem do obsługi PHP? Jeśli nie to zrób to. Jak nie to tu na forum masz przecież numerowanie linii. Pusta linia to też linia.

1 użytkowników online, w tym zalogowanych: 0, gości: 1