Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PDO pobieranie danych
Forum PHP.pl > Forum > PHP > Object-oriented programming
drax
Zaczynam swoją przygodę z OOP i natknąłem się na problem podczas pobierania danych z bazy danych:

Kod
<?php

class admin
{
  private $host = 'mysql:host=localhost;dbname=db501865';
  private $username = 'root';
  private $password = 'root';
  private $conn;
  
  public function connect() {
      try {
          $conn = new PDO($this->host, $this->username, $this->password);
          $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
      } catch ( PDOException $e ) {
          die( 'Connection failed: ' . $e->getMessage() );
      }
      return $conn;
  }
      
  public function disconnect( $conn ) {
      $conn = '';
  }

    
  public function listReal()
    {
        $this ->connect();
        $real = $conn->query('SELECT * FROM `real`');
        echo '<ul>';
        foreach ($real as $row)
        {
            echo'<li><img src="'.$row['image'].'"></li>';
        }
        $real -> closeCursor();
        echo'</ul>';
    }

}
?>


Przy próbie wykonania kodu

Kod
<?php

$db = new admin;
$db ->listReal();

?>

mam błąd internal server error.


Popełniłem pewnie jakiś bardzo podstawowy błąd, ale sam do tego nie mogę dojść więc liczę na waszą pomoc:)
markonix
Używaj odpowiednich tagów.

Klasa jest zupełnie niepoprawna.
Co ma obiekt admina do bazy danych?

A sam błąd raczej nie ma nic wspólnego z bazą danych, dotyczy raczej ustawień serwera, htaccess, chmody itp.
rzymek01
nie odwołujesz się do składowych klsay poprzez $this.

daj na początku (zaraz za <?php) error_reporting(E_ALL);
ale 500-kę wywala raczej z innego powodu ...
drax
Już poprawiłem kod i zadziałało:)
Cała klasa ma być klasą do obsługi panelu administratora. Nie wiem czy dobrze to zaczynam, ale tak sobie to wyobraziłem i tak to robię. Nie wiem czy dobrze tak jest?

Wszystko uruchamiam na serwerze z mojego komputera.
rzymek01
nie wiem czy myslałeś nad nazewnictwem, zastosowaniem jakiegoś wzorca czy po prostu rozrysowałeś sobie diagram klas,
ale po krótce:
- ta klasa, którą masz, powinna się nazywać coś a'la db
- metoda listReal powinna należeć do innej klasy
- klasa Admin niczego nie mówi, spodziewałbym się po niej dziedziczenia po jakimś User z rozszerzeniem pól charakterystycznych dla admina wink.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.