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

Mam problem z php. (podstrony)

VPS Starter Arubacloud
0 głosów
183 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 (251,210 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 292 wizyt
pytanie zadane 6 maja 2020 w PHP przez TomJar Nowicjusz (230 p.)
0 głosów
2 odpowiedzi 373 wizyt
pytanie zadane 11 lipca 2019 w PHP przez mateusz.zajac Obywatel (1,460 p.)
0 głosów
2 odpowiedzi 2,184 wizyt

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...