Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Pouze tento týden sleva až 80 % na e-learning týkající se Swiftu. Zároveň využij výhodnou slevovou akci až 30 % zdarma při nákupu e-learningu - více informací.
swift week + discount 30
Avatar
Radek Morris Sedláček:21.12.2020 20:46

Nejsem programátor a nemám to do školy!
Snažím se z načtených dat z DB poslat data do html. Jedná se o náhodně načtený citát i s autorem.
Současně bych rád požádal někoho šikovného o úpravu třídy tak aby při načtení HTML entit byly správně změněny na znaky a bylo to bezpečné. Na stránky se nevytváří žádné administrátorské prostředí ani logování. Nejde mi jen o html značky ale i o matematické symboly včetně jazyka MathML

příklad:

// mezery jsou úmyslně kvůli čitelnosti zde

< H1 > Nadpis > ⁄ H1 >
< P > TEXT > ⁄ P >

Výsledek:

<H1>NADPIS</H1>
<P>TEXT</P>

Hlavní cíl je zachovat čistotu obou kódů.
Předem děkuji za Váš čas a ochotu.
Radek

Zkusil jsem: Vytvořil jsem tuto třídu Database (PDO) a Citat
Níže uvedený kód je funkční, ale neplní to co požaduji. Nechci do PHP psát HTML pro správné zobrazení.
database.clas­s.php

<?php

class Database {
    private $servername;
    private $username;
    private $password;
    private $dbname;
    private $charset;

    public function connect() {
        $this->servername = "localhost";
        $this->username = "root";
        $this->password = "";
        $this->dbname = "grizzly";
        $this->charset = "utf8mb4";

        try {
            $dsn = "mysql:host=".$this->servername.";dbname=".$this->dbname.";charset=".$this->charset;
            $pdo = new PDO($dsn, $this->username, $this->password);
            $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
            $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            return $pdo;
        } catch (PDOException $e) {
            echo "Connection failed: ".$e->getMessage();
        }
    }
}

citat.class.php

<?php

class Citat extends Database {

    public function getCitat() {

        // sloupce v DB jsou ID_citat, citat_autor, citat
        $sql = "SELECT citat, citat_autor FROM citaty ORDER BY Rand() LIMIT 1";
        $stmt = $this->connect()->query($sql);
        while($row = $stmt->fetch()) {
            echo $row['citat'] . '<br>' . $row['citat_autor']; //funguje načte a zobrazí citát i autora
        }
    }
}

index.php

<?php
    include 'includes/autoloader.inc.php';
?>

<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>

<?php
    $citatObj = new Citat();
    $citatObj->getCitat(); //vypíše citát a funguje
?>

</body>
</html>

Chci docílit: Načítání dat do HTML jako jednotlivé položky.

<?php

class Citat extends Database {

    public function getCitat() {

        // sloupce v DB jsou ID_citat, citat_autor, citat
        $sql = "SELECT citat, citat_autor FROM citaty ORDER BY Rand() LIMIT 1";
        $stmt = $this->connect()->query($sql);
        while($row = $stmt->fetch()) {
            $citat = $row['citat'];
            $citat_autor = $row['citat_autor'];
            return $citat;
            return $citat_autor;
        }
    }
}

HTML

<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>

            <div class="cite">
                <div class="mount-cite">
                    <h2>Citát dne</h2>
                    <p>&bdquo;<?php $citatObj = new Citat(); $citatObj->getCitat('citat');?>&ldquo;</p>
                    <p class="right-cite"><cite><strong>&mdash;&nbsp;<?php $citatObj = new Citat(); $citatObj->getCitat('citat_autor');?></cite></strong></p>
                </div>
            </div>

NEBO

            <div class="cite">
                <div class="mount-cite">
                    <h2>Citát dne</h2>
                    <p>&bdquo;<?= $row['citat'] ?>&ldquo;</p>
                    <p class="right-cite"><cite><strong>&mdash;&nbsp;<?= $row['citat_autor']; ?></cite></strong></p>
                </div>
            </div>


</body>
</html>

Všechny pokusy končí chybou, pokud to napíšu jen procedurálně OK ale s třídou a metodami mam problém nevím jak proměnou vydolovat dle mých představ. Nechci do PHP psát HTML kód ani obráceně.

Editováno 21.12.2020 20:49
Odpovědět
21.12.2020 20:46
Při dotazování se povzneste nad pocit, že můžete působit dojmem nejhloupějšího člověka v místnosti. [Jack Welch]
Avatar
Radek Morris Sedláček:21.12.2020 21:18

Omlouvám se za prohozené tagy správně je to zde.

<p class="right-cite"><cite><strong>&mdash;&nbsp;<?= $row['citat_autor']; ?></strong></cite></p>

Také se chci zeptat zda správně ukončuji spojení s DB

<?php

class Citat extends Database {

    public function getCitat() {

        // sloupce v DB jsou ID_citat, citat_autor, citat
        $sql = "SELECT citat, citat_autor FROM citaty ORDER BY Rand() LIMIT 1";
        $stmt = $this->connect()->query($sql);
        while($row = $stmt->fetch()) {
            echo $row['citat'] . '<br>' . $row['citat_autor']; //funguje načte a zobrazí citát i autora
        }

        $this->connect = null;
    }
}
Nahoru Odpovědět
21.12.2020 21:18
Při dotazování se povzneste nad pocit, že můžete působit dojmem nejhloupějšího člověka v místnosti. [Jack Welch]
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:21.12.2020 22:28
google = php encode html entities
google = php decode html entities

php.net/htmlentities
htmlentities
htmlspecialchars
htmlspecialchars_decode
html_entity_decode

google = php encode html mathml
https://annevankesteren.nl/…r-references

 
Nahoru Odpovědět
21.12.2020 22:28
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 3 zpráv z 3.