PDO rozdzielenie akcji na metody

0

Witam,

Jak zrobić aby rozdzielić ten kod na mniejsze metody jak próbuje poniżej, tylko tak aby działało ? :)

Mówiąc bardziej dokładnie, chodzi mi o rozdzielnie, całego kolosa, bo oczywiście gdy wszystko jest razem, to działa, ale chciałby aby była oddzielna metoda na łączeniu się z bazą, oddzielna na akcje na sql i oddzielna na wyświetlanie wszystkiego foreach. Gdy próbuje jakiś z tych klocków odłączyć i wywołać this jak np. tutaj z $this->view_tav przestaje to działać. Jest na to jakieś rozwiązanie?

 class db {

        public function __construct() {

            $this->check_radio_is_clicked();
        }

        public function viev_tab() {
            echo '<table border=2> ';
            foreach ($zapytanie as $row) {
                echo "<tr><td>" . $row['Imie'] . "</td><td>" . $row['Nazwisko'] . "</td></tr>"; 
            }
            $zapytanie->closeCursor(); 
            echo '</tr></table>';
        }

        public function view_all() {
            try {
                $pdo = new PDO('mysql:host=127.0.0.1;dbname=mysql', 'root', '');
                $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); /
            } catch (PDOException $e) { //
                die('Baza danych nie dziala popawnie');
            }
            $zapytanie = $pdo->query('SELECT * FROM osoby'); // /
            $this->viev_tab();
        }

        public function sortowanie() {
            try {
                $pdo = new PDO('mysql:host=127.0.0.1;dbname=mysql', 'root', ''); /
                $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
            } catch (PDOException $e) { //
                die('Baza danych nie dziala popawnie');
            }
            $zapytanie = $pdo->query('SELECT * FROM `osoby` ORDER BY `Imie` ASC'); //
            $this->view_tab();
        }

        public function check_radio_is_clicked() {
            $sortuj = $_GET['sortuj'];
            if ($sortuj == 'sortuj') {
                $this->sortowanie();
            } else {
                $this->view_all();
            }
        }

    }
0

Po 1 to podaj błąd który ci się wyświetla najpierw.
Po 2

        public function viev_tab() {
            echo '<table border=2> ';
            foreach ($zapytanie as $row) {
                echo "<tr><td>" . $row['Imie'] . "</td><td>" . $row['Nazwisko'] . "</td></tr>"; 
            }
            $zapytanie->closeCursor(); 
            echo '</tr></table>';
        }

Do czego używasz tutaj zmiennej $zapytanie? :P

0

Masz rację z tą zmienną, ale to nie ma znaczenia, bo chodzi mi o to, jak rozdzielić to pdo. Bo mogę zrobić tak:

class db {
 
        public function __construct() {
 
            $this->check_radio_is_clicked();
        }
 
        public function view_tab() {
            try {
                $pdo = new PDO('mysql:host=127.0.0.1;dbname=mysql', 'root', '');
                $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                     $zapytanie = $pdo->query('SELECT * FROM osoby'); // /
                echo '<table border=2> ';
                foreach ($zapytanie as $row) {
                    echo "<tr><td>" . $row['Imie'] . "</td><td>" . $row['Nazwisko'] . "</td></tr>";
                }
               
                echo '</tr></table>';
                 $zapytanie->closeCursor();
            } catch (PDOException $e) { //
                die('Baza danych nie dziala popawnie');
            }
        }

        public function sortowanie() {
            try {
                $pdo = new PDO('mysql:host=127.0.0.1;dbname=mysql', 'root', '');
                $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $zapytanie = $pdo->query('SELECT * FROM `osoby` ORDER BY `Imie` ASC'); //
                echo '<table border=2> ';
                foreach ($zapytanie as $row) {
                    echo "<tr><td>" . $row['Imie'] . "</td><td>" . $row['Nazwisko'] . "</td></tr>";
                }
           
                echo '</tr></table>';
                     $zapytanie->closeCursor();
            } catch (PDOException $e) { //
                die('Baza danych nie dziala popawnie');
            }

        }
 
        public function check_radio_is_clicked() {
             $sortuj = $_GET['sortuj'];
            if ($sortuj == 'sortuj') {
                $this->sortowanie();
            } else {
                $this->view_tab();
            }
        }
 
    }

Ale jak to rozdzielić, żeby za każdym razem gdy dodaje nową funkcjonalność jak sortowanie, wyszukiwanie, czy cokolwiek, by nie powtarzać na nowo tego samego procesu, czyli głównie chodzi mi o łączenie z bazą. Niech się raz połączy a potem już sortuje będąc ciągle połączony z db.
W sumie podobnie z wyświetlaniem tab, zawsze po wykonaniu operacji wyświetla się tabelka i po co to powtarzać i niepotrzebnie ilość linijek..

2

To co stworzyłeś nie ma nic wspólnego z programowaniem obiektowym. Radzę najpierw poczytać trochę teorii, a dopiero potem brać się za pisanie czegokolwiek.
A tutaj podpowiedź jak to ma w miarę wyglądać: http://culttt.com/2012/10/01/roll-your-own-pdo-php-class/

1 użytkowników online, w tym zalogowanych: 0, gości: 1