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

Czy powinno się drukować kod html w php ?

Object Storage Arubacloud
+1 głos
202 wizyt
pytanie zadane 16 lutego 2021 w PHP przez mat19 Obywatel (1,580 p.)

Chcę zrobić profil głowny użytkownika na portalu i mam problem. Otóż głowna jest podzielona na trzy kolumny, a  w każdej kolumnie znajdują się trzy informacje o użytkowniku. Zrobiłem tą tablicę w php drukując kod html. I tutaj mam pytanie czy takie podejście jest poprawne, a jeżeli nie to jak mógłbym wyświetlic te informacje z bazy i nie drukowac kodu html. Z góry dzięki.

class profil 
{
  private $database;
    
  public function __construct($database)
  {
   $this->database = $database;
  }
    public function display()
    {
    $id = $_GET['id'];
    $sql = $this->database->connect()->prepare("SELECT id, first_name, last_name, age, avatar, birth_date, gender FROM users where id = :id");
     $sql->bindParam(':id',$id, PDO::PARAM_INT);
            $sql->execute();

          if($sql->rowCount())
          {
         while ($row = $sql->fetch())
         {
                    echo "<div class='bg-dark col-xl-4'>";
                        echo "<div class='row'>";
                            echo "<div>";
                                echo "<div class='mb-4'>Country:"."</div>";
                            echo "</div>";
                        echo "</div>";
                        echo "<div class='row'>";
                            echo "<div>";
                                echo "<div class='mb-4'>City:"."</div>";
                            echo "</div>";
                        echo "</div>";
                        echo "<div class='row'>";
                            echo "<div>";
                                echo "<div class='mb-4'>Age: ".$row['age']. "</div>";
                            echo "</div>";
                        echo "</div>";
                    echo "</div>";
                    echo "<div class='bg-info col-xl-4'>";
                        echo "<div class='row'>";
                            echo "<div>";
                                echo "<div><img src=".$row['avatar']." height='250px'  class='img-thumbnail' width='200px'></div>";
                            echo "</div>";
                        echo "</div>";
                        echo "<div class='row'>";
                            echo "<div>";
                                echo "<div class='gp' id='name'>".$row['first_name']. " " .$row['last_name']."</div>";
                            echo "</div>";
                        echo "</div>";
                    echo "</div>";
                    echo "<div class='bg-danger col-xl-4'>";
                        echo "<div class='row'>";
                            echo "<div>";
                                echo "<div class='mb-4'Birth-date: ".$row['birth_date']. "</div>";
                            echo "</div>";
                        echo "</div>";
                        echo "<div class='row'>";
                            echo "<div>";
                                echo "<div class='mb-4'>Marital status: "."</div>";
                            echo "</div>";
                        echo "</div>";
                        echo "<div class='row'>";
                            echo "<div>";
                                if($row['gender']=='M')
                                {
                                    echo "<div class='mb-4'>Gender: Male</div>";
                                }else
                                {
                                    echo "<div class='mb-4'>Gender: Female</div>";
                                }
                            echo "</div>";
                        echo "</div>";
                    echo "</div>";
             }
      }
    }
 }
<header>
<div class=" container-fluid">
    <div class=" row">
    <?php
$profil = new profil();
$show = $profil->display();

?>
  
  </div>
  </div>
</header>

 

2 odpowiedzi

+3 głosów
odpowiedź 16 lutego 2021 przez CSSoup Mądrala (6,460 p.)
edycja 16 lutego 2021 przez CSSoup

Ogólnie należy oddzielać widok strony od jej logiki. Można to robić na kilka sposobów, ale jeżeli jesteś na początku zabawy z PHP, możesz do tego zrobić oddzielną klasę, która renderuje jakiś szablon.

Przykładowa klasa:

class View
{
  public function render(array $params): void
  {
    // Główna templatka twojej strony
    require_once("templates/layout.php");
  }
}

W $params przekazujesz dane, która mają zostać wyświetlone na twojej stronie. W pliku, który w moim przypadku nazywa się layout.php, mogę wyświetlić te dane, załóżmy że wywołałem w jakimś miejscu metodę render, $view->render(['message' => 'Hello World!']), aby to wrzucić do templatki należy w niej zrobić coś takiego:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <p><?php echo $params['message'] ?></p>
  // ALBO
  <p><?= $params['message'] ?></p>
</body>
</html>

Możesz tutaj dorzucać różne zagnieżdżenia plików, poprzez require/include, ale na przyszłość jeżeli chcesz iść w tym kierunku poczytaj sobie o MVC i o silnikach szablonów. Sam PHP może być też używany do wyświetlania danych w strukturze HTML, ale nie jest to najlepsza opcja.

0 głosów
odpowiedź 16 lutego 2021 przez VBService Ekspert (253,340 p.)
edycja 16 lutego 2021 przez VBService

How to make a simple HTML template engine in PHP -  Smarty

A template engine is used to separate the presentation from the business logic. A good developer knows this is very important - not only it allows for delegating responsibilities (the designer works on the presentation layer while the programmer works on the business logic), but it also provides a more easier maintenance.

 

There are a lot (and I mean A LOT) of template engines for PHP. A very popular example is Smarty. Most of these template engines have a lot of advanced options and require the user to learn a new syntax for building the template files.

  • TwigThe flexible, fast, and secure template engine for PHP )
  • Latte ( Latte is a template engine for PHP which eases your work and ensures the output is protected against vulnerabilities, such as XSS. )
  • Mustache

Podobne pytania

0 głosów
4 odpowiedzi 302 wizyt
+1 głos
3 odpowiedzi 627 wizyt
pytanie zadane 23 czerwca 2018 w Sprzęt komputerowy przez Ichilnia Początkujący (260 p.)
0 głosów
2 odpowiedzi 160 wizyt
pytanie zadane 15 grudnia 2019 w PHP przez borygooo Początkujący (320 p.)

92,572 zapytań

141,422 odpowiedzi

319,644 komentarzy

61,959 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...