Diskuze: Vypsání textu z db do textarea/input - vkládá nezobrazené znaky
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 9 zpráv z 9.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
Jistě, přikládám.
Zde je PHP blok:
if($_POST){
Db::query('
UPDATE stranky
SET name=?, menu=?, obsah=?, zobrazeni=?
WHERE name=?
', $_POST['name'], $_POST['menu'], $_POST['obsah'], $_POST['zobrazeni'], $_GET['edit'] );
header('Location: texty.php');
exit();
}
else if (isset($_GET['edit']))
{
$nactenaStranka = Db::queryOne('
SELECT *
FROM stranky
WHERE name=?
', $_GET['edit']);
$nactenaStranka = $stranka
$_GET['edit']) mám určené v URL.
A zde je HTML:
<form method="post" style="display: block;">
<p>
URL
<br>
<textarea cols="100" rows="2" name="name">
<?php echo htmlspecialchars($stranka['name']) ?>
</textarea>
<p>
Položka v menu
<br>
<textarea cols="100" rows="2" name="menu">
<?php echo htmlspecialchars($stranka['menu']) ?>
</textarea>
<p>
Text stránky
<br>
<textarea cols="100" rows="20" name="obsah">
<?php echo htmlspecialchars($stranka['obsah']) ?>
</textarea>
<p>
Zobrazení stránky
<br>
<input type="text" cols="100" rows="2" name="zobrazeni">
<?php echo htmlspecialchars($stranka['zobrazeni']) ?>
</textarea>
<p>
<button type="submit">Edituj!</button>
</form>
Bylo tam pár věcí, které by byly úplně vytržené z kontextu, snažil jsem se je smazat.
Předem díky
Aha s php nerobím vôbec tak si budeš musieť počkať na iných Ale lajckým okom sa mi tam
nezdá možno tento riadok $nactenaStranka = $stranka , že si síce niečo
selektneš z DB ale hneď potom do nactenaStranka priradíš niečo iné.
Nope, tím to není. Zkoušel jsem to.
Ach, už jsem na to přišel. Tak to byla opravdu hloupá chyba. Bylo to v tom HTML bloku, (nejspíše) nelze zapsat:
<textarea type="text" cols="100" rows="2" name="zobrazeni">
<?php echo htmlspecialchars($stranka['zobrazeni']) ?>
</textarea>
Je potřeba toto:
<textarea type="text" cols="100" rows="2" name="zobrazeni"><?php echo htmlspecialchars($stranka['zobrazeni']) ?></textarea>
Takže děkuji za snahu.
V čem je to řešení rozdílné? Jestli to napíšu do jednoho řádku nebo do tří musí být přeci jedno, ne? Formátování html textu v kódu nemůže mít vliv na zobrazení stránky...
Domnívám se, že problém byl buďto v enteru nebo tabulátoru, kterým jsem měl kód zarovnaný. Ale jen si to myslím, nejsem profesionál, abych to dokázal říct, ale několikrát jsem to zkoušel, jestli je to tím, a opravdu vždy se mi to potvrdilo.
To je určitě tím.
Prostě do databáze ukládáš všechno, co je mezi značkami <textarea></textarea>, včetně whitespaceů (tj. jak konce řádků, tak tabulátory).
Alternativní řešení je, že to otrimuješ (=odstranění bílých znaků z konce a začátku) při ukládádní.
To můžeš udělat už na straně php,
nebo na straně databáze.
Na straně DB (MySQL) by ten update vypadal nějak takhle:
UPDATE stranky
SET name=trim(?), menu=trim(?), obsah=trim(?), zobrazeni=trim(?)
WHERE name=trim(?)
Zobrazeno 9 zpráv z 9.