PHP- webová aplikace databáze s OOP přístupem – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

PHP- webová aplikace databáze s OOP přístupem – PHP – Fórum – Programujte.comPHP- webová aplikace databáze s OOP přístupem – PHP – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
micha4074740
Newbie
26. 5. 2016   #1
-
0
-

Ahoj snaží se vytvořit aplikaci pomocí PHP pro velice jednoduchou databázi knih.

Vesměs mi už všechno funguje, ale nemohu přijít na některé věci.

Hlavní problém co bych chtěl řešit je stále vyskakující chyba:

Undefined index: p in C:\xampp\htdocs\knihovna\index.php on line 20

Dále pak bych chtěl zamezit možnosti dát do databáze prázdné hodnoty.

A radám ohledně optimalizace se nebráním :)

databaze::prihlasit('knihovna', 'knihovna', '123456', 'localhost');?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Knihovna</title>
</head>
<body>
<h1>Knihovna</h1>
<?php
if(isset($_POST['Nazev'])) {
	if (databaze::dotaz("INSERT INTO knihy (Název, Autor, Žánr, RokVydání) VALUES ('" . $_POST['Nazev'] . "', '" . $_POST['Autor'] . "', '" . $_POST['Zanr'] . "', '" . $_POST['Rok'] . "')")) {
		echo'Přidáno. <a href="index.php">Zpět na přehled</a>';
                } 
}
else{

    if($_GET['p']=='novy') {
	echo '
					<h1>Přidání knížky</h1>
					<form action="index.php" method="POST">
					<p>Název: <input type="text" name="Nazev"<br>
					Autor:<input type="text" name="Autor" /><br>
					Žánr:<input type="text" name="Zanr" /><br>
					Rok vydání:<input type="text" name="Rok" /><br>
					<input type="submit" value="Přidat"></p>
					</form>
					'
					;
}
else {
$knihy = databaze::tabulka("SELECT * FROM knihy");
echo Tab::vytvorit($knihy);
echo'<p><a href="index.php?p=novy">Přidat další knížku</a></p>';
($_GET['p'] = '1');

}
}
?>
</body>
</html>
<?php
databaze::konec();
?>

stript

<?php
class Tab {
    private $data;
    public function __construct($data) {
        $this->data = $data;
    }
    public static function vytvorit ($data) {
        return new Tab ($data);
    }
    public function __toString() {
        $tab = '';
        foreach ($this->data as $radek) {
            $tab.='<tr>';
            foreach ($radek as $key => $val) {
                	$tab.='<td>' . $val . '</td>';
            }
            $tab.='</tr>';
        }
        return '<table>' . $tab . '</table>';
    }
}

class databaze {
    private static $link;
    public static function prihlasit($db, $user, $pass, $host) {
        self::$link = @mysqli_connect($host, $user, $pass, $db);
        self::dotaz("SET CHARACTER SET UTF8");
        self::dotaz('SET NAMES UTF8');
    } 
    public static function dotaz($dotaz) {
        return mysqli_query(self::$link, $dotaz);
    }
	 public static function konec() {
        mysqli_close(self::$link);
    }
    public static function tabulka($dotaz) {
        $tabulka = array();
        $vysledek = self::dotaz($dotaz);
        while ($radek = mysqli_fetch_array($vysledek, MYSQL_ASSOC)) {
            $tabulka[] = $radek;
        }
        return $tabulka;
    }
}

?>

Předem děkuji za vaše rady

Nahlásit jako SPAM
IP: 86.63.207.–
Kit+15
Guru
26. 5. 2016   #2
-
0
-

#1 micha407474
Pokud chceš programovat ve stylu OOP, tak se vyhýbej používání statických metod. Mají svůj význam, ale tady určitě ne.

Před zpracováním $_GET a $_POST nikdy nevypisuj žádné HTML. Zablokuješ si tím hromadu užitečných funkcí, např. header() nebo práci s cookies a sessions.

Pokud chceš programovat objektově, pro práci s databází místo procedurálních ovladačů používej PDO.

Nahlásit jako SPAM
IP: 194.228.13.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Řešení
micha4074740
Newbie
26. 5. 2016   #3
-
0
-
Vyřešeno Nejlepší odpověď

už jsem to vyřešil

Nahlásit jako SPAM
IP: 86.63.207.–
Kit+15
Guru
26. 5. 2016   #4
-
0
-

#3 micha407474
Už jsi přišel i na to, jak se programuje objektově?

Nahlásit jako SPAM
IP: 194.228.13.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 9 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý