Autor Zpráva
*Marty*
Profil *
Tvořim jednoduchou administraci. Mám formulář s textarea, do kterého z databáze vypisuji obsah textu na stránce. Po odeslání formuláře s upraveným nebo neupraveným obsahem se stránka zpracuje na jiné stránce, která mě přesměruje na již aktualizovanou stránku. Při každém odeslání se mi na začátku textu v textarea vytvářejí mezery jako po stisknutí tabulátoru, které se neustále zvětšují. Pokud do výpisu přidám funkci nl2br, tak se mi začnou množit i tagy <br />. Nevím si s tím vůbec rady, poradí někdo ?

Kód:
biografie_admin.php

<?php
//pripojeni do databaze
include "../include/pripojit.php";
//nacteni textu z databaze
$dotaz = "SELECT obsah FROM biografie";
$vysledek = mysql_query($dotaz) or die (mysql_error());
$radek=mysql_fetch_array($vysledek);
//HTML kod
include "header.php";

?>

                <div id="obal">
                <form action="biografie_edit.php" method="post">
                    <label for="obsah"> Obsah: </label> <br />
                    <textarea id="obsah" name="obsah" cols="81" rows="20" tabindex="1">
                        <?php
                            echo $radek['obsah'];
                        ?>
                    </textarea> <br />
                    <input type="submit" class="uloz" value="Uložit" name="ulozit" id="ulozit" tabindex="2" />
                </form>
                </div>
//HTML paticka
<?php
    include "footer.php";
?>

a stránka co zpracovává formulář po odeslání:

<?php
include "../include/pripojit.php";

$date=date("Y"."-"."m"."-"."d");
//update dat v databázi
$update = "UPDATE biografie SET
             obsah='".$_POST['obsah']."',
             datum='".$date."'
           WHERE id=1";

$odeslat= mysql_query($update) or die(mysql_error());

?>
<html>
<meta http-equiv='refresh' content='0;url=biografie_admin.php'>
</head>
<body>
<center>
    <div> Pokud vás prohlížeč nepřesměruje, klikněte› na odkaz: <br /> <a href='biografie_admin.php'>Pokračuj</a></div>
</center>
</body>
</html>


Moderátor Alphard: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
Jan Tvrdík
Profil
Zkus nahradit:
                    <textarea id="obsah" name="obsah" cols="81" rows="20" tabindex="1">
                        <?php
                            echo $radek['obsah'];
                        ?>
                    </textarea>

za
                    <textarea id="obsah" name="obsah" cols="81" rows="20" tabindex="1"><?php echo $radek['obsah']; ?></textarea>
*Marty*
Profil *
Bezva, funguje... Díky moc, nenapadlo by mě, že to bude dělat zrovna tohle :) Ještě se zeptám, pokud bych v textarea chtěl na výpis obsahu použít funkci nl2br, abych mohl v textarea odřádkovávát enterem, tj.

 <textarea id="obsah" name="obsah" cols="81" rows="20" tabindex="1"><?php echo nl2br($radek['obsah']); ?></textarea>


jak zamezím tomu, aby se mi při opětovném uložení neduplikovaly tagy <br /> ? Takhle jak jsem to napsal se mi při každém uložení jeden vždy přídá.
Alphard
Profil
V závislosti na povaze textu buď strip_tags() nebo smazat jen <br />, třeba pomocí str_replace().
*Marty*
Profil *
Mno to jo, takhle ve výsledku akorát nebudu mít žádný tag <br />... Mně jde o to, abych když to odřádkuju dvakrát měl 2krát tag <br /> a ne po dalším uložení 3,4,5,... Pokud to nějak jde, funkce nl2br je velmi šikovná, akorát tohle chování se mi nelíbí :)
AM_
Profil
A k čemu je ti používat tu funkci tady? Text v textarea se zalamuje podle skutečných odřádkování (newline), nikoli podle <br>, takže protahovat text zobrazený v textaree přes nl2br mi nedává moc smysl.
*Marty*
Profil *
už vyřešeno.... na ukládání do databáze jsem použil funkci nl2br(), na výpis do textarea funkci strip_tags() a vše funguje podle představ :) Díky moc všem za rady a pomoc :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: