Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Podstawy obiektowości, na przykładzie bloga
kamil_lk
post
Post #1





Grupa: Zarejestrowani
Postów: 325
Pomógł: 33
Dołączył: 31.05.2008

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


Witam.
W ramach nauki obiektówki postanowiłem wykonać jakiś mały projekt, aby załapać podstawy. Po krótkim namyśle stwierdziłem, że napiszę sobie bloga.
I teraz mam do was, bardziej doświadczonych, pytanie. Czy idę w dobrą stronę podczas skrobania tego projektu? Co robię źle, a co dobrze (o ile coś (IMG:style_emoticons/default/tongue.gif) ). Może polecacie jakieś przystępne tutoriale (zadania), które odnoszą się do rzeczy praktycznych, zamiast do kwadratów, czy trójkątów?

Poniżej przedstawiam to co napisałem do tej pory. Co prawda nie ma tego wiele. Głównie chodzi mi tutaj o klasę content.php oraz wpisy.php.

index.php
  1. <?php
  2.  
  3. include_once('class/class.db.php');
  4. include_once('header.php');
  5. include_once('content.php');
  6. include_once('footer.php');
  7.  
  8. $db = new db("mysql:host=localhost;dbname=blog;", "root", "");
  9. $db->query('SET NAMES utf8');
  10.  
  11. $head = new Header('Kamil');
  12. echo $head->getHeader();
  13.  
  14. $content = new Content($db);
  15. $content->getSection();
  16.  
  17. $footer = new Footer;
  18. echo $footer->getFooter();
  19.  
  20. ?>


header.php
  1. <?php
  2.  
  3. class Header{
  4.  
  5. public function __construct($tytul){
  6. $this->tytul = $tytul;
  7. }
  8.  
  9. public function getHeader(){
  10. return '
  11. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  12. <html xmlns="http://www.w3.org/1999/xhtml">
  13. <head>
  14. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  15. <link rel="stylesheet" type="text/css" href="css/style.css" />
  16. <link rel="stylesheet" type="text/css" href="css/popup.css" />
  17. <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
  18. <script src="js/jquery-impromptu.js"></script>
  19. <title>'.$this->tytul.'</title>
  20.  
  21. <script type="text/javascript">
  22. function popup(zmienna){
  23. $.prompt(zmienna,{ overlayspeed: 2, buttons: {}});
  24. }
  25. </script>
  26.  
  27. </head>
  28. <body>
  29. ';
  30. }
  31.  
  32. }
  33.  
  34. ?>


footer.php
  1. <?php
  2.  
  3. class Footer{
  4.  
  5. public function getFooter(){
  6.  
  7. return '
  8. <div id="footer">
  9. <span class="footer">Created by Kamil</span>
  10. </div>
  11. </body>
  12. </html>';
  13.  
  14. }
  15.  
  16. }
  17.  
  18. ?>


content.php
  1. <?php
  2.  
  3. include_once('class/wpisy.php');
  4.  
  5. class Content{
  6.  
  7. public $cont;
  8. private $db;
  9.  
  10. public function __construct($db){
  11. $this->db = $db;
  12. }
  13.  
  14. public function getSection(){
  15. echo '<div id="content">';
  16. if( isset($_GET['section']) ) {
  17. switch($_GET['section']) {
  18.  
  19. case 'show' : $this->cont = new Wpisy($this->db); $this->cont->show(); break;
  20.  
  21. default: $this->cont = new Wpisy($this->db); $this->cont->error404();
  22. }
  23.  
  24. if( isset($_GET['action']) )
  25. switch($_GET['action']) {
  26.  
  27. case 'add' : $this->cont = new Wpisy($this->db); $this->cont->addComent($_POST); break;
  28.  
  29. }
  30.  
  31. } else {
  32.  
  33. $this->cont = new Wpisy($this->db); $this->cont->show();
  34.  
  35. }
  36. echo '</div>';
  37.  
  38. }
  39.  
  40. }
  41. ?>


wpisy.php
  1. <?php
  2.  
  3. class Wpisy{
  4.  
  5. private $db;
  6.  
  7. public function __construct($db){
  8. $this->db = $db;
  9. }
  10.  
  11. public function show(){
  12. if(!isset($_GET['param'])){
  13. $result = $this->db->select('wpisy', '1=1 ORDER BY data_dodania desc', '', 'id, temat, tresc, DATE_FORMAT(data_dodania, \'%d.%m.%Y\') AS data_dodania');
  14. foreach($result as $record){
  15. echo '
  16. <div class="wpis">
  17.  
  18. <h6>'.$record['temat'].'</h6>
  19. <span class="data">'.$record['data_dodania'].' &raquo; Kamil</span>
  20. <div class="tresc">'.$record['tresc'].'</div>
  21. <div class="wiecej">
  22. <a href="index.php?section=show&param='.$record['id'].'" class="wiecej clear">Czytaj całość</a>
  23. </div>
  24.  
  25. </div>
  26. ';
  27. }
  28. } else {
  29. $result = $this->db->select('wpisy', 'id='.$_GET['param'], '', 'id, temat, tresc, DATE_FORMAT(data_dodania, \'%d.%m.%Y\') AS data_dodania');
  30. foreach($result as $record){
  31. echo '
  32. <div class="wpis">
  33.  
  34. <h6>'.$record['temat'].'</h6>
  35. <span class="data">'.$record['data_dodania'].' &raquo; Kamil</span>
  36. <div class="tresc">'.$record['tresc'].'</div>
  37. <div class="wiecej">
  38. <a href="index.php?section=show" class="wiecej clear">Wróć</a>
  39. </div>
  40.  
  41. </div>
  42. ';
  43. }
  44.  
  45. $result = $this->db->select('komentarze k, wpisy w', 'id_wpisu='.$_GET['param'].' and w.id=k.id_wpisu', '', 'k.id kid, nick, k.tresc ktresc, k.temat ktemat, DATE_FORMAT(k.data_dodania, \'%d.%m.%Y %h:%i:%s\') AS kdata_dodania');
  46. foreach($result as $record2){
  47. echo $record2['kid'].' - '.$record2['nick'].' - '.$record2['ktemat'].' - '.$record2['ktresc'].' - '.$record2['kdata_dodania'].'<br /><br />';
  48. }
  49.  
  50. echo '
  51. <form action="index.php?section=show&action=add&param='.$_GET['param'].'" method="post">
  52. <fieldset class="komentarze">
  53. <label for="nick">Nick<br /><input type="text" name="nick" id="nick" value="" /></label>
  54. <label for="temat">Temat <span class="wymagane">*</span><br /><input type="text" name="temat" id="temat" value="Re: '.$record['temat'].'" /></label>
  55. <label for="tresc">Treść <span class="wymagane">*</span><br /><textarea name="tresc" id="tresc"></textarea></label>
  56. <label for="dodaj"><input type="submit" name="dodaj" id="dodaj" value="Dodaj komentarz" /></label>
  57. </fieldset>
  58. </form>
  59. ';
  60. }
  61. }
  62.  
  63. public function addComent($array){
  64.  
  65. if(isset($array['dodaj'])){
  66. if( isset($array['temat']) && isset($array['tresc']) && $array['temat'] != '' & $array['tresc'] != ''){
  67. $array['id_wpisu'] = $_GET['param'];
  68. $array['data_dodania'] = date('Y-m-d h:i:s');
  69. if(empty($array['nick']) || $array['nick'] == "") $array['nick'] = 'anonim';
  70. $result = $this->db->insert('komentarze', $array);
  71.  
  72. if($result){
  73. echo '<script type="text/javascript">popup("Dodano!")</script>';
  74. } else {
  75. echo '<script type="text/javascript">popup("Nie dodano!")</script>';
  76. }
  77. } else echo '<script type="text/javascript">popup("Brak danych!")</script>';
  78.  
  79. }
  80. }
  81.  
  82. public function error404(){
  83. header('Location: 404.html');
  84. }
  85. }
  86.  
  87. ?>


Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
krzysiekk
post
Post #2





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 13.03.2006
Skąd: Jaworze

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


  1.  
  2.  
  3.  
  4. if(isset($_GET['id']))
  5. {
  6. $stmt = $pdo -> prepare('SELECT `nazwa`, `opis`, `ilosc`, `cena`, `jakosc` FROM `produkty` WHERE `id` = :id');
  7. $stmt -> bindValue(':id', $_GET['id'], PDO::PARAM_INT);
  8. $stmt -> execute();
  9.  
  10. if($details = $stmt -> fetch())
  11. {
  12. echo '<hr/>
  13. <p><b>Nazwa:</b> '.$details['nazwa'].'</p>
  14. <p><b>Opis:</b> '.$details['opis'].'</p>
  15. <p><b>Ilosc:</b> '.$details['ilosc'].'</p>
  16. <p><b>Cena:</b> '.$details['cena'].'</p>
  17. <p><b>Jakosc:</b> '.$details['jakosc'].'</p>';
  18. }
  19. else
  20. {
  21. echo '<hr/><p>Przepraszamy, podany rekord nie istnieje!</p>';
  22. }
  23. $stmt -> closeCursor();



Opis:
Oczywiście wyświetlanie szczegółów przeprowadzamy tylko, jeśli podaliśmy ID.
Przygotowujemy szkielet zapytania SELECT.
Wykonujemy zapytanie metodą execute(). Zauważmy, że obiektem $stmt dysponujemy już od momentu wywołania metody prepare(), dlatego execute() nam już nic tu nie zwraca.
Dalej postępujemy już tradycyjnie, po prostu pobierając kolejne rekordy (w tym wypadku tylko jeden) i zamykając kursor.


mam nadzeije ze oe to Cu chodzi ? to przyklad wyciety z tego 1 linku

jasli chodzi o ksiazke ktora podales to nei czytalem moze buć Ok jak wszystkie jego ksiażki ale moge sie mylić.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 9.10.2025 - 18:01