Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> PHP/PDO - Połączenie z bazą danych wyświetlenie listy prodyktów, prosba o propozycje ulepszenia, poprawienia kodu
wluczykuj
post 30.08.2020, 12:16:34
Post #1





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 13.12.2016

Ostrzeżenie: (0%)
-----


Cześć,

poniżej wklejam kody index.php i dbcontroller.php, prosiłbym o propozycje / wskazanie / podpowiedź co należałoby poprawić, zmienić, ulepszyć tak by było to jak najbardziej zbliżone do obecnych standardów, lepszych praktyk?

struktura plików w tym przypadku jest bardzo prosta:


index.php
  1. <?php
  2. include_once('dbcontroller.php');
  3.  
  4. ?>
  5. <html>
  6. <head>
  7. <title>Lista produktów z bazy danych</title>
  8. <link href="style.css" type="text/css" rel="stylesheet" />
  9. </head>
  10. <body>
  11.  
  12. <div class="product-grid">
  13. <div class="txt-heading">Products</div>
  14.  
  15.  
  16. <?php
  17. $product_array = $pdo->query("SELECT * FROM tblproduct ORDER BY id ASC");
  18. $result = $product_array->fetchAll();
  19.  
  20. if(!empty($result)){
  21. foreach($result as $key => $value){
  22. ?>
  23. <div class="product-item">
  24. <div class="product-image">
  25. <img src="<?php echo $result[$key]["image"];?>">
  26. </div>
  27. <div class="product-tile-footer">
  28. <div class="product-title">
  29. <?php echo $result[$key]["name"];?>
  30. </div>
  31. <div class="product-price">
  32. <?php echo $result[$key]["price"]." PLN";?>
  33. </div>
  34. </div>
  35. </div>
  36.  
  37. <?php
  38. }
  39. }
  40. else{
  41. echo "blad";
  42. }
  43. ?>
  44.  
  45. </div>
  46.  
  47. </body>
  48. </html>
  49.  


dbcontroller.php
  1. <?php
  2. $host = "localhost";
  3. $username = "root";
  4. $password = "";
  5.  
  6. try {
  7. $pdo = new PDO("mysql:host=$host;dbname=db_shop", $username, $password);
  8. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  9. echo "Connected successfully";
  10. } catch(PDOException $e) {
  11. echo "Connection failed: " . $e->getMessage();
  12. }
  13. ?>
Go to the top of the page
+Quote Post
viking
post 30.08.2020, 15:01:24
Post #2





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Tylko co tu oceniać? Parę linijek kodu. Nie stosujesz composer co tu nie ma znaczenia ale w większym projekcie już robi różnicę. Nazewnictwo plików, mieszanie kodu php z html, jakieś zbędne zmienne z danymi połączenia, brak sprawdzania co zwróciło query, brak deklaracji doctype, prawie same divy w kodzie.


--------------------
Go to the top of the page
+Quote Post
wluczykuj
post 30.08.2020, 15:41:48
Post #3





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 13.12.2016

Ostrzeżenie: (0%)
-----


Dziękuję za odpowiedź.

Uczę się. Nie znam się na tym. Próbuję. Wydaje mi się zatem, że najlepiej zacząć od czegoś prostego. Z pewnością ten przykład, który podałem, dla wyjadacza jest absurdalnie prosty.. Może nawet śmieszny. Ale na 100% jest tu wiele elementów które trzeba zrobić lepiej i dlatego prosiłem o parę wskazówek co poprawić. A nie gotowca na zasadzie: "Zróbcie za mnie, zapisze se na dysku. Zapomnę."

Więc, chce drążyć temat dalej:

1. "Nazewnictwo plików" - Co z nazewnictwem jest nie tak?

2. "mieszanie kodu php z html" -jak więc to ogarnąć najlepiej?"

3 ."jakieś zbędne zmienne z danymi połączenia" - masz tu na myśli:

  1. $product_array = $pdo->query("SELECT * FROM tblproduct ORDER BY id ASC");
  2. $result = $product_array->fetchAll();


Co tu można zaradzić?

4. brak sprawdzania co zwróciło query - o co tu chodzi?

5. brak deklaracji doctype - to rozumiem, dzieki.

6. prawie same divy w kodzie. - ok rozumiem, bardziej chciałem skupić się na nauce z php, ale dziekuje za zwrócenie uwagi.


I jeszcze moje pytania:
Ten kod w pliku dbcontroller.php jest ok, czy zupełnie nie tak się to powinno robić?

Pozdrawiam
Go to the top of the page
+Quote Post
viking
post 30.08.2020, 15:58:01
Post #4





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Poczytaj o standardach nazewnictwa zaczynając od PSR-1. Przejrzyj najlepiej wszystkie ogólnie żeby mieć jako takie pojęcie za co odpowiadają. Możesz sobie użyć w edytorze/konsoli narzędzi typu https://github.com/FriendsOfPHP/PHP-CS-Fixer. Dane połączenia miałem na myśli host, user, pass. Kompletnie tu zbędne a odpowiedź sobie na pytanie co by się stało gdybyś ten kod miał udostępnić wszystkim na githubie. Query może zwrócić false i dochodzisz do sytuacji false->fetchAll. W tym kodzie jest wszystko razem: nawiązanie połączenia, sesja, zapytania, błędy.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.04.2024 - 16:30