Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP]Jak uwzględnić entery w formularzu w polu textarea
Forum PHP.pl > Forum > Przedszkole
XxmanxX
Witam, jak w temacie:

  1. <?php
  2. if(empty($_POST['nazwa_pola'])){
  3. ?>
  4. <form action="test_mail.php" method="POST">
  5. <p>Pole typu textarea
  6. <textarea name="nazwa_pola"></textarea></p>
  7. <input type="submit" value="Send">
  8. </form>
  9. <?php
  10. }else{
  11. $to ="email";
  12. $subject ="temat";
  13. $message ="<STYLE type='text/css'>/*<![CDATA[*/ style_css /* ]]> */</STYLE>";
  14. $message .="<p>".$_POST['nazwa_pola']."</p>";
  15. $headers ="MIME-Version: 1.0"."\n";
  16. $headers .="Content-type: text/html; charset=iso-8859-2"."\n";
  17. $headers .="Content-Transfer-Encoding: 8bit"."\n";
  18. $headers .="From: ALERTS@mailer.gro.pl.corp"."\n";
  19. $mailsent = mail($to,$subject,$message,$headers);}
  20. ?>


Jeśli user wpisze w pole nazwa_pola tekst i będą wiersze oddzielone enterami to chciałbym żeby po wysłaniu wartości tego pola w emailu także były entery, ale wszystko jest w jednej linii. Jakieś podpowiedzi jak sobie z tym radzic?smile.gif
Pozdrawiam
nospor
skoro maila wysylasz jako html to html nie uznaje enterow. html uznaje BR

uzyj wiec nl2br()
XxmanxX
podziękował, pozdro;)

W praniu wyszła kolejna kwestia smile.gif
To co pobieram z formularza napisanego w HTML wysyłam funkcją mail(), żeby wyświetlał entery w emailu doałem nl2br() i śmiga, ale te same dane z formularza dodaje do bazy. Następnie mam możliwość edycji tych danych z bazy w identycznym formularzu ale zaciągam do odpowiednich pól domyślnie wartości z bazy. I tu pytanie co zrobić, żeby dane który zaciągne z bazy do formularza edycyjnego zawierały entery a nie były w jednej linii. Nie chce żeby user musiał ponownie klikać enter żeby wysłać modyfikację formularza mailem z enterami. Przy wysyłaniu danych z pierwszego formularza do bazy dałem funkcję nl2br() ale później w formularzu edycyjnym pojawiają mi się '<br />' w polach gdzie były entery postawione. Można to jakoś przeskoczyć? Jeśli źle to opisałem to napisze przykładowy kod jak to u mnie wygląda:P
nospor
nl2br masz uzyc tylko w momencie wysylania maila. Do bazy masz wkladac bez tego
XxmanxX
OK, ale jak zrobić żeby dane zawierające entery, które poszły do bazy, po wyciągnięciu z niej do formularza edycyjnego zawierały dalej te entery a nie wyrazy między którmi był dany enter są połączone?

W pole w formularzu (<textarea name="problem_description"></textarea>) wpisałem:
test
test
test
Wrzuciłem do bazy zmienną $_POST[problem_description]
  1. $query=mysql_query("INSERT INTO alerts (add_date,add_time,problem_description) values(curdate(),curtime(),'$_POST[problem_description]')");

w bazie jest widoczna jako: test test test
a jak wyciągam z bazy
  1. $query=mysql_query("SELECT * FROM alerts ORDER BY id_alert ASC");
  2. while($row=mysql_fetch_array($query)){
  3. extract($row);
  4. <a target=page href='edit_alert_operation.php?action=edit&operation_description=$operation_description'><img border=0 src=edit.png></a>

i wrzucam do formularza edycyjnego
  1. <textarea name="problem_description"><?php echo $_GET['problem_description']; ?></textarea>

to w formularzu wygląda to tak:
testtesttest


I co zrobić żeby po wyciągnięciu z bazy i wrzuceniu do formularza wyglądało to tak:
test
test
test


Pozdro:)
wiewiorek
Nie rozumiem - skoro pobierasz z bazy to dlaczego do wyświetlenia tekstu z bazy używasz $_GET. $_GET jest używany do pobrania wartości zmiennej z url. Nie bardzo rozumiem co się u Ciebie dzieje - i twój kod jest podatny na sql injection.
XxmanxX
To jest nie pełny kod.
  1. $query=mysql_query("SELECT * FROM alerts ORDER BY id_alert ASC");
  2. while($row=mysql_fetch_array($query)){
  3. extract($row);
  4. <a target=page href='edit_alert_operation.php?action=edit&operation_description=$operation_description'><img border=0 src=edit.png></a>

Tworzy mi dużą tabele a przy każdej z pozycji jest ikonka delete i edit, przy kliknięciu edit podaje mi w linku wartości z danego rekodu do następnej strony i tam wczytuje w formularz te wartości z linku. Tak to rozwiązałem, jestem początkujący.
Z sql injection zdaje sobie sprawe, kod będzie załatany.
nospor
Cytat
przy kliknięciu edit podaje mi w linku wartości z danego rekodu do następnej strony i tam wczytuje w formularz te wartości z linku.
ałć...
raz ze to kosmos
dwa ze wlasnie dlatego ci nie dziala.

Do edycji masz przekazac tylko ID rekordu. A w edycji wczytujesz dane tego rekordu i te dane wkladasz do textarea. wowczas bedzie smigac az milo
XxmanxX
No i wszystko gra, dzięki za porządną lekcje:D
Fazzzzi
wysyłam tekst:
Cytat
text1
text2

text3


text4
i sprawdzam za pomocą:
  1. echo strlen($_POST['tresc'])."<br />".$_POST['tresc']."<br />";

dostaje wynik
Cytat
32
text1 text2 text3 text4

Rozumiem, że do bazy idzie z "enterami" bo ilość znaków na to wskazuje i faktycznie tak jest, bo phpMyAdmin pokazuje zawartość pola "tresc" wraz z "enterami".
O ile mi wiadomo Enter = \r\n stąd dodatkowe dwa znaki na każdy "enter".

Wyciągam z bazy i sprawdzam zawartośc:
  1. $polecenie="SELECT wiadomosci.nadawca, uzytkownicy.nick, wiadomosci.data_post, wiadomosci.temat, wiadomosci.tresc, wiadomosci.typ
  2. FROM wiadomosci, uzytkownicy
  3. WHERE wiadomosci.id = '".$_POST['czytajID']."'
  4. AND uzytkownicy.id = wiadomosci.nadawca;";
  5. $wykonaj=mysql_query($polecenie);
  6. $wynik=mysql_fetch_array($wykonaj);
  7. print strlen($wynik['tresc'])."<br />".$wynik['tresc']."<br />";

i miestety rozczarowanie:
Cytat
32
text1 text2 text3 text4

Czyli problem z czytaniem zawartośći przez funkcje "echo" i "print".

Czym to wyświetlać, żeby "entery" były właściwie wypisane?
Webmasterr
Nie tak:

  1. $polecenie="SELECT wiadomosci.nadawca, uzytkownicy.nick, wiadomosci.data_post, wiadomosci.temat, wiadomosci.tresc, wiadomosci.typ
  2. FROM wiadomosci, uzytkownicy
  3. WHERE wiadomosci.id = '".$_POST['czytajID']."'
  4. AND uzytkownicy.id = wiadomosci.nadawca;";
  5. $wykonaj=mysql_query($polecenie);
  6. $wynik=mysql_fetch_array($wykonaj);
  7. print strlen($wynik['tresc'])."<br />".$wynik['tresc']."<br />";



A tak:

  1. $polecenie="SELECT wiadomosci.nadawca, uzytkownicy.nick, wiadomosci.data_post, wiadomosci.temat, wiadomosci.tresc, wiadomosci.typ
  2. FROM wiadomosci, uzytkownicy
  3. WHERE wiadomosci.id = '".$_POST['czytajID']."'
  4. AND uzytkownicy.id = wiadomosci.nadawca;";
  5. $wykonaj=mysql_query($polecenie);
  6. $wynik=mysql_fetch_array($wykonaj);
  7.  
  8. $wynik['tresc'] = nl2br($wynik['tresc']);
  9.  
  10. print strlen($wynik['tresc'])."<br />".$wynik['tresc']."<br />";


Działa?
Fazzzzi
Webmasterr - dzięki za naprowadzenie na właściwe tory smile.gif
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.