Diskuze: Správný způsob získání hodnot z databáze do formuláře

PHP PHP Správný způsob získání hodnot z databáze do formuláře American English version English version

Avatar
tomasf16
Redaktor
Avatar
tomasf16:

Ahoj, chtěl bych poprosit o radu. Ani ne tak s funkčností jako se správným objektovým zápisem, o co jde:
Jedná se o formulář, kterým aktualizuji již existující data v databázi.
O co mi jde konkrétně je to, jakým způsobem správně zobrazit existující data ve formulářových prvcích.
Postup je takovýto:

  1. Ve výpise dat z databáze (tabulkově) kliknu u nějakého záznamu na upravit -> odkaz s parametrem ?id=1 například, skriptem se přenese ono id záznamu.
  2. Zobrazí se formulář, kde se do políček přenesou hodnoty z databáze podle id, klasika.

Jak jsem psal na začátku, jde mi o použití správného postupu, zde ona část kódu:

class Config
{
   public $jmeno;

   public function __construct() {  //Připojení k databázi   }

   // Tohle je důležité
   public function getDataById($id)
   {
     $select = $this->pdo->prepare("SELECT * FROM tabulka WHERE id = $id");
     $select->execute();
     $row = $select->fetch(PDO::FETCH_ASSOC);

     $this->name = $row['name'];
   }
}

// Soubor s formulářem
$config = new Config;
$config->getDataById($_GET['id']);
..

// Zde je formulář
<input type="text" name="jmeno" value="<?= $config->name; ?>

Je to funkční řešení, ale podle mě je to děsně prasácký hlavně kvůli použití veřejné proměnné name a přímému odkazování na ní ve formu.
Jedná se zde jen o úryvek kódu.

Věděl by někdo alespon náznakem o elegantnějším řešení? Budu vděčný za každou radu

Napadlo mě ještě tohle:

  1. Každá hodnota z databáze co se vkládá do formu by měla vlastní metodu co jí vrací tzn něco jako:

public function getName()
{
return $this->name;
}
a pak
<input type="text" value="<?= $config->getName(); ?>">

  1. Celý formulář vypisovat pomocí php kódu přímo ve funkci

Všechna 3 řešení se mi zdají strašně těžkopádná, bohužel nám na škole tlučou do hlavy proceduální programování v PHP, takže přechod na OOP sebou nese tato úskalí

Takže děkuju za každou radu

Editováno 1.8.2013 18:07
 
Odpovědět 1.8.2013 18:05
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 1 zpráv z 1.