Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zamiana enter na <br>
Forum PHP.pl > Forum > Przedszkole
robertinho
Na wstępie powiem: wiem, że był już taki temat i wiem, że istnieje coś takiego jak nl2br(), ale o co innego mi chodzi.

Faktycznie po zastosowaniu nl2br zamienia entery na znaczniki <br />, ale chciałbym wiedzieć jak zrobić, by podczas edycji konkretnego wpisu, w polu tekstowym nie wyświetlały się owe <br />

Na tę chwilę, podczas edycji, wpis w polu tekstowym wygląda tak:
  1. Linia 1<br /><br />Linia2<br /><br />Linia 3<br /><br />

(Jednocześnie podczas kolejnego zapisywania edytowanego tekstu znaczniki się dublują)

A chciałbym, żeby wyglądało tak:
  1. Linia 1
  2.  
  3. Linia 2
  4.  
  5. Linia 3
nospor
nl2br() uzywaj przy wyswietlaniu danych, a nie przy zapisywaniu do bazy
robertinho
Zrobiłem tak jak mówisz, ale nie pomogło. Może robię coś źle.

  1. <?
  2. if (isset($_POST['tresc']))
  3.    {
  4.        $tytul = $_POST['tytul'];
  5.        $tresc = $_POST['tresc'];
  6.        
  7.        $sql = "UPDATE news SET
  8.        tytul = '$tytul',
  9.        tresc = '$tresc'";
  10.  
  11.            
  12.            if (@mysql_query($sql))
  13.                {
  14.                    echo 'Główna strona została zmodyfikowana pomyślnie!<br>
  15.                    <a href="../admin/news_admin.php">admin</a>';
  16.                } else
  17.                {
  18.                    echo '<p>Wystąpił błąd' . mysql_error() . '</p>';
  19.                }
  20.  
  21.    } else
  22.    {
  23.        $sql = @mysql_query('SELECT tytul, tresc FROM news');
  24.            
  25.            while ($wyswietl = mysql_fetch_array($sql)) {
  26.                $tytul = $wyswietl['tytul'];
  27.                $tresc = $wyswietl['tresc']; //Poprzednio tutaj dawałem nl2br
  28.            }
  29. ?>
  30.  
  31. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
  32. <label>Tytuł:<br>
  33. <textarea name="tytul" rows="1" cols="40"><? echo $tytul; ?>
  34. </textarea>
  35. </label><br>
  36. <label>Treść:<br>
  37. <textarea name="tresc" rows="20" cols="40"><? echo nl2br($tresc); ?>
  38. </textarea>
  39. </label><br>
  40. <input type="submit" value="Zapisz" />
  41. </form>
  42.  
  43. <?
  44.  
  45. ;}
  46.  
  47. ?>
Lejto
w linii 46 po co ; przed }?
potem na początku w ifie wywołujesz zapytanie query?
ziqzaq
Skoro w formularzu dajesz nl2br() to jest chyba oczywiste że wszystkie nowe linie (\n) zostaną skonwertowane do <br/>, tak?
nospor miał na myśli to, żebyś zapisywał do bazy bez konwersji i:
1) Przy edycji _nie konwertujesz_ nowych linii na <br/> i wyświetlasz to w formularzu,
2) Na stronce gdzie ma się pojawić tekst _konwertujesz_ nowe linie na <br/>.

Edit:
@Lejto To chyba zamknięcie instr. else jeśli się nie mylę. <== tfu nie skumałem, my bad winksmiley.jpg
robertinho
Cytat(ziqzaq @ 22.12.2008, 10:28:07 ) *
1) Przy edycji _nie konwertujesz_ nowych linii na <br/> i wyświetlasz to w formularzu,


Mój błąd bo nie sprecyzowałem do końca chyba.

Mi właśnie chodzi o to, żeby w formularzu też tego nie wyświetlać, bo ma się nim posługiwać osoba nie znająca żadnych podstaw html, więc chciałbym ograniczyć ich użycie.
ziqzaq
Nie zrozumiałeś.
Spróbuję jeszcze raz.
Twój kod:
  1. <textarea name="tresc" rows="20" cols="40"><? echo nl2br($tresc); ?></textarea>

W tym momencie zamieniasz (konwertujesz) nowe linie na <br/>, a masz tego nie robić bo z tego co piszesz to tego nie chcesz.
Przypatrz się swojemu kodowi i pomyśl chwilę.

Edit:
Żeby była jasność to rozumiem twój problem tak:
Chcesz żeby w formularzu (textarea) nie było htmla (a sam go tam wsadzasz), natomiast na stronie chcesz mieć już html (aby móc wyświetlać nowe linie).
Jeśli się mylę to sorki. winksmiley.jpg
DawPi
Witaj,
wg mnie najlepszym sposobem będzie użycie tutaj np. TinyMCE - popularny edytor BBCode - w pełni konfigurowalny. Dodajesz mały kod .js gdzie deklarujesz jakie buttony mają się wyświetlać etc., które pola formularza ma objąć edytor ( domyślnie textarea ) i gotowe. Nie martwisz się o zamianę kodu html na 'widzialny' i odwrotnie.

Polecam.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.