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

Mam problem z php. (podstrony)

42 Warsaw Coding Academy
0 głosów
341 wizyt
pytanie zadane 10 września 2022 w PHP przez MacieKap Bywalec (2,400 p.)

Witam,

mam problem z php, ponieważ wyrzuca mi błąd: Fatal error: Uncaught Error: Undefined constant "page1" in C:\xampp\htdocs\www\www\index.php:27 Stack trace: #0 {main} thrown in C:\xampp\htdocs\www\www\index.php on line 27

<?php
        $pagename = $_GET['action'] ?? null;
        var_dump($pagename);
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>test</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <header>
            <div class="logo">ArkaVlog<div>
    </header>
    <nav>
        <div class="menu">
            <a class="link"href="?action=page1"><div class="button"> podstrona1</div></a>
            <a class="link"href="?action=page2"><div class="button"> podstrona2</div></a>
            <a class="link"href="?action=page3"><div class="button"> podstrona3</div></a>
            <a class="link"href="?action=page4"><div class="button"> podstrona4</div></a>
        </div>
    </nav>
    <main>
        <div class="content">
            <?php if($pagename === page1): ?>
                Cześć, Gdy próbuję wysłać zapytanie do mysql pokazuje mi się taki błąd
            <?php elseif($pagename === page2): ?>
                Mój pomysł brzmi: Jeśli faktycznie tym razem będziemy mogli zaufać Raxonowi to powiedz mu o tych wizjach z tego wypadku, może rozwinąć się z tego fajny wątek
            <?php elseif($pagename === page3): ?>
                Bardzo dokładnie i z pełnym pietyzmem powoli i przede wszystkim dokładnie i że zrozumieniem dla odbiorców którzy znają HTML i CSS który można wdrożyć do PHP i uzyskać dostęp do nowych rozwiązań które nie są możliwe w czystym HTML i CSS.
                Według mojej oceny idealnie przeprowadzona lekcja
                Przecież na backendzie można pisać front end tak jak w przypadku
            <?php elseif($pagename === page4): ?>
                Noo nareszcie. Wszędzie tego szukałem!
            <php else: ?>
        HMS Abercrombie – brytyjski monitor z okresu I wojny światowej, jedna z czterech jednostek typu Abercrombie. Okręt miał wyporność 6150 ton i osiągał prędkość 6,5 węzła, a jego główne uzbrojenie stanowiły dwa działa kalibru 356 mm produkcji amerykańskiej, uzupełniane przez artylerię mniejszego kalibru. Zwodowany w kwietniu 1915 roku w stoczni Harland and Wolff w Belfaście, został wcielony do służby w Royal Navy w maju 1915 roku. Początkowo okręt miał otrzymać nazwę na cześć amerykańskiego admirała Davida Farraguta, jednak ostatecznie nazwano go na cześć XVIII-wiecznego brytyjskiego generała Ralpha Abercromby’ego. Okręt wziął czynny udział w działaniach wojennych na Morzu Śródziemnym, uczestnicząc m.in. w kampanii dardanelskiej. HMS „Abercrombie” został wycofany ze służby 9 maja 1919 roku, a w roku następnym rozbrojony. W 1927 roku monitor został sprzedany firmie T.W. Ward i trafił do stoczni złomowej w Inverkeithing, gdzie został rozebrany do końca 1927 roku. Czytaj więcej…
            <php endif; ?>
        </div>
    </main>
</body>
</html>
<?php endif; ?>
*{
    margin: 0;
    padding: 0;
    background-color: black;
    color: white;
}
.logo{
    background-color:  #1a1a1a;
    color: white;
    text-align: center;
}
.menu{
    display: flex;
}
.button{
    border: white 3px solid;
    width: 100%;
    text-align: center;
}
.link{
    text-decoration: none;
    color: white;
    width: 100%;
    display:flex;
}
.link:hover{
    cursor: pointer;
}

Z góry dziękuję za wszystkie odpowiedz

2 odpowiedzi

0 głosów
odpowiedź 10 września 2022 przez Igorek Mądrala (6,290 p.)

spróbuj tak (kod php)

<?php
        $pagename = $_GET['action'] ?? null;
        var_dump($pagename);
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>test</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <header>
            <div class="logo">ArkaVlog<div>
    </header>
    <nav>
        <div class="menu">
            <a class="link"href="?action=page1"><div class="button"> podstrona1</div></a>
            <a class="link"href="?action=page2"><div class="button"> podstrona2</div></a>
            <a class="link"href="?action=page3"><div class="button"> podstrona3</div></a>
            <a class="link"href="?action=page4"><div class="button"> podstrona4</div></a>
        </div>
    </nav>
    <main>
        <div class="content">
            <?php if($pagename === "page1"): ?>
                Cześć, Gdy próbuję wysłać zapytanie do mysql pokazuje mi się taki błąd
            <?php elseif($pagename === "page2"): ?>
                Mój pomysł brzmi: Jeśli faktycznie tym razem będziemy mogli zaufać Raxonowi to powiedz mu o tych wizjach z tego wypadku, może rozwinąć się z tego fajny wątek
            <?php elseif($pagename === "page3"): ?>
                Bardzo dokładnie i z pełnym pietyzmem powoli i przede wszystkim dokładnie i że zrozumieniem dla odbiorców którzy znają HTML i CSS który można wdrożyć do PHP i uzyskać dostęp do nowych rozwiązań które nie są możliwe w czystym HTML i CSS.
                Według mojej oceny idealnie przeprowadzona lekcja
                Przecież na backendzie można pisać front end tak jak w przypadku
            <?php elseif($pagename === "page4"): ?>
                Noo nareszcie. Wszędzie tego szukałem!
            <php else: ?>
        HMS Abercrombie – brytyjski monitor z okresu I wojny światowej, jedna z czterech jednostek typu Abercrombie. Okręt miał wyporność 6150 ton i osiągał prędkość 6,5 węzła, a jego główne uzbrojenie stanowiły dwa działa kalibru 356 mm produkcji amerykańskiej, uzupełniane przez artylerię mniejszego kalibru. Zwodowany w kwietniu 1915 roku w stoczni Harland and Wolff w Belfaście, został wcielony do służby w Royal Navy w maju 1915 roku. Początkowo okręt miał otrzymać nazwę na cześć amerykańskiego admirała Davida Farraguta, jednak ostatecznie nazwano go na cześć XVIII-wiecznego brytyjskiego generała Ralpha Abercromby’ego. Okręt wziął czynny udział w działaniach wojennych na Morzu Śródziemnym, uczestnicząc m.in. w kampanii dardanelskiej. HMS „Abercrombie” został wycofany ze służby 9 maja 1919 roku, a w roku następnym rozbrojony. W 1927 roku monitor został sprzedany firmie T.W. Ward i trafił do stoczni złomowej w Inverkeithing, gdzie został rozebrany do końca 1927 roku. Czytaj więcej…
            <php endif; ?>
        </div>
    </main>
</body>
</html>
<?php endif; ?>

 

komentarz 10 września 2022 przez MacieKap Bywalec (2,400 p.)
Co zmieniłeś w kodzie?
komentarz 10 września 2022 przez Igorek Mądrala (6,290 p.)

<?php if($pagename === "page1"): ?>

                Cześć, Gdy próbuję wysłać zapytanie do mysql pokazuje mi się taki błąd

            <?php elseif($pagename === "page2"): ?>

                Mój pomysł brzmi: Jeśli faktycznie tym razem będziemy mogli zaufać Raxonowi to powiedz mu o tych wizjach z tego wypadku, może rozwinąć się z tego fajny wątek

            <?php elseif($pagename === "page3"): ?>

                Bardzo dokładnie i z pełnym pietyzmem powoli i przede wszystkim dokładnie i że zrozumieniem dla odbiorców którzy znają HTML i CSS który można wdrożyć do PHP i uzyskać dostęp do nowych rozwiązań które nie są możliwe w czystym HTML i CSS.

                Według mojej oceny idealnie przeprowadzona lekcja

                Przecież na backendzie można pisać front end tak jak w przypadku

            <?php elseif($pagename === "page4"): ?>

dodalem cudzysłowy

0 głosów
odpowiedź 10 września 2022 przez VBService Ekspert (256,600 p.)
edycja 10 września 2022 przez VBService

Masz w komunikacie błędu wskazówkę

Undefined constant "page1"

taki zapis

<?php if($pagename === page1) ?>

php "szuka" stałej o nazwie page1

tak jak już napisał Tobie @Igorek, pewnie chodziło tobie o tekst page1, więc musisz umieści go w 

  • apostrofach 'page1'
  • lub w cudzysłowach "page1"

jeżeli mimo wszystko chciałbyś zachować ten zapis

<?php if($pagename === page1) ?>

po prostu utwórz stałą o tej nazwie, czyli np.

  • define(...)
    define('page1', 'page1');
    define('page2', 'page2');
    define('page3', 'page3');
    define('page4', 'page4');
    
  • const
    const page1 = 'page1';
    const page2 = 'page2';
    const page3 = 'page3';
    const page4 = 'page4';
    

     

całość

<?php
        $pagename = $_GET['action'] ?? null;
        var_dump($pagename);

        define('page1', 'page1');
        define('page2', 'page2');
        define('page3', 'page3');
        define('page4', 'page4');
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>test</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <header>
            <div class="logo">ArkaVlog<div>
    </header>
    <nav>
        <div class="menu">
            <a class="link"href="?action=page1"><div class="button"> podstrona1</div></a>
            <a class="link"href="?action=page2"><div class="button"> podstrona2</div></a>
            <a class="link"href="?action=page3"><div class="button"> podstrona3</div></a>
            <a class="link"href="?action=page4"><div class="button"> podstrona4</div></a>
        </div>
    </nav>
    <main>
        <div class="content">
            <?php if($pagename === page1): ?>
                Cześć, Gdy próbuję wysłać zapytanie do mysql pokazuje mi się taki błąd
            <?php elseif($pagename === page2): ?>
                Mój pomysł brzmi: Jeśli faktycznie tym razem będziemy mogli zaufać Raxonowi to powiedz mu o tych wizjach z tego wypadku, może rozwinąć się z tego fajny wątek
            <?php elseif($pagename === page3): ?>
                Bardzo dokładnie i z pełnym pietyzmem powoli i przede wszystkim dokładnie i że zrozumieniem dla odbiorców którzy znają HTML i CSS który można wdrożyć do PHP i uzyskać dostęp do nowych rozwiązań które nie są możliwe w czystym HTML i CSS.
                Według mojej oceny idealnie przeprowadzona lekcja
                Przecież na backendzie można pisać front end tak jak w przypadku
            <?php elseif($pagename === page4): ?>
                Noo nareszcie. Wszędzie tego szukałem!
            <php else: ?>
        HMS Abercrombie – brytyjski monitor z okresu I wojny światowej, jedna z czterech jednostek typu Abercrombie. Okręt miał wyporność 6150 ton i osiągał prędkość 6,5 węzła, a jego główne uzbrojenie stanowiły dwa działa kalibru 356 mm produkcji amerykańskiej, uzupełniane przez artylerię mniejszego kalibru. Zwodowany w kwietniu 1915 roku w stoczni Harland and Wolff w Belfaście, został wcielony do służby w Royal Navy w maju 1915 roku. Początkowo okręt miał otrzymać nazwę na cześć amerykańskiego admirała Davida Farraguta, jednak ostatecznie nazwano go na cześć XVIII-wiecznego brytyjskiego generała Ralpha Abercromby’ego. Okręt wziął czynny udział w działaniach wojennych na Morzu Śródziemnym, uczestnicząc m.in. w kampanii dardanelskiej. HMS „Abercrombie” został wycofany ze służby 9 maja 1919 roku, a w roku następnym rozbrojony. W 1927 roku monitor został sprzedany firmie T.W. Ward i trafił do stoczni złomowej w Inverkeithing, gdzie został rozebrany do końca 1927 roku. Czytaj więcej…
            <php endif; ?>
        </div>
    </main>
</body>
</html>
<?php endif; ?>

 

Masz jeszcze błąd w liniach 37 i 39 brakuje znaku ?

            <php else: ?>
        HMS Abercrombie –  ...
            <php endif; ?>

na

            <?php else: ?>
        HMS Abercrombie –  ...
            <?php endif; ?>

 

 

P.S. spróbuj użyć include

index.php

<?php
        $pagename = $_GET['action'] ?? null;
        var_dump($pagename);

        define('page1', 'page1');
        define('page2', 'page2');
        define('page3', 'page3');
        define('page4', 'page4');
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>test</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <header>
            <div class="logo">ArkaVlog<div>
    </header>
    <nav>
        <div class="menu">
            <a class="link"href="?action=page1"><div class="button"> podstrona1</div></a>
            <a class="link"href="?action=page2"><div class="button"> podstrona2</div></a>
            <a class="link"href="?action=page3"><div class="button"> podstrona3</div></a>
            <a class="link"href="?action=page4"><div class="button"> podstrona4</div></a>
        </div>
    </nav>
    <main>
        <div class="content">
            <?php 
                 if ($pagename === page1)
                   include 'page1.html';
                 elseif ($pagename === page2)
                   include 'page2.html';
                 elseif ($pagename === page3)
                   include 'page3.html';               
                 elseif ($pagename === page4)
                   include 'page4.html';
                 else
                   include 'page_default.html'; // lub wygenerować error 404
            ?>
        </div>
    </main>
</body>
</html>

lub

<?php
        $pagename = $_GET['action'] ?? null;
        var_dump($pagename);

        define('page1', 'page1');
        define('page2', 'page2');
        define('page3', 'page3');
        define('page4', 'page4');
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>test</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <header>
            <div class="logo">ArkaVlog<div>
    </header>
    <nav>
        <div class="menu">
            <a class="link"href="?action=page1"><div class="button"> podstrona1</div></a>
            <a class="link"href="?action=page2"><div class="button"> podstrona2</div></a>
            <a class="link"href="?action=page3"><div class="button"> podstrona3</div></a>
            <a class="link"href="?action=page4"><div class="button"> podstrona4</div></a>
        </div>
    </nav>
    <main>
        <div class="content">
            <?php 
                 switch ($pagename) {
                     case page1: include 'page1.html'; break;
                     case page2: include 'page2.html'; break;
                     case page3: include 'page3.html'; break;
                     case page4: include 'page4.html'; break;
                     default:
                         include 'page_default.html'; // lub wygenerować error 404
                 }                   
            ?>
        </div>
    </main>
</body>
</html>

lub

<?php
        $pagename = $_GET['action'] ?? null;
        //var_dump($pagename);
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>test</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <header>
            <div class="logo">ArkaVlog<div>
    </header>
    <nav>
        <div class="menu">
            <a class="link"href="?action=page1"><div class="button"> podstrona1</div></a>
            <a class="link"href="?action=page2"><div class="button"> podstrona2</div></a>
            <a class="link"href="?action=page3"><div class="button"> podstrona3</div></a>
            <a class="link"href="?action=page4"><div class="button"> podstrona4</div></a>
        </div>
    </nav>
    <main>
        <div class="content">
            <?php
                 $page = $pagename . '.html';
                 if (file_exists($page))
                     include $page;
                 else
                     include 'page_default.html'; // lub wygenerować error 404                   
            ?>
        </div>
    </main>
</body>
</html>

 

przykładowy page1.html (czy page1.php)

<p>Cześć, Gdy próbuję wysłać zapytanie do mysql pokazuje mi się taki błąd</p>

przykładowy page_default.html

<h3>HMS Abercrombie</h3>
<p>
    HMS Abercrombie – brytyjski monitor z okresu I wojny światowej, jedna z czterech jednostek typu Abercrombie. Okręt miał wyporność 6150 ton i osiągał prędkość 6,5 węzła, a jego główne uzbrojenie stanowiły dwa działa kalibru 356 mm produkcji amerykańskiej, uzupełniane przez artylerię mniejszego kalibru. Zwodowany w kwietniu 1915 roku w stoczni Harland and Wolff w Belfaście, został wcielony do służby w Royal Navy w maju 1915 roku. Początkowo okręt miał otrzymać nazwę na cześć amerykańskiego admirała Davida Farraguta, jednak ostatecznie nazwano go na cześć XVIII-wiecznego brytyjskiego generała Ralpha Abercromby’ego. Okręt wziął czynny udział w działaniach wojennych na Morzu Śródziemnym, uczestnicząc m.in. w kampanii dardanelskiej. HMS „Abercrombie” został wycofany ze służby 9 maja 1919 roku, a w roku następnym rozbrojony. W 1927 roku monitor został sprzedany firmie T.W. Ward i trafił do stoczni złomowej w Inverkeithing, gdzie został rozebrany do końca 1927 roku. Czytaj więcej…
</p>

 

struktura plików dla powyższego przykładu

Podobne pytania

+1 głos
3 odpowiedzi 369 wizyt
pytanie zadane 6 maja 2020 w PHP przez TomJar Nowicjusz (230 p.)
0 głosów
2 odpowiedzi 461 wizyt
pytanie zadane 11 lipca 2019 w PHP przez mateusz.zajac Obywatel (1,460 p.)
0 głosów
2 odpowiedzi 2,306 wizyt

93,377 zapytań

142,380 odpowiedzi

322,532 komentarzy

62,727 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...