Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][PHP]Jak uwzględnić entery w formularzu w polu textarea
XxmanxX
post 24.09.2009, 09:22:23
Post #1





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 22.07.2009

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
nospor
post 24.09.2009, 09:23:35
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




skoro maila wysylasz jako html to html nie uznaje enterow. html uznaje BR

uzyj wiec nl2br()


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
XxmanxX
post 24.09.2009, 11:34:29
Post #3





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 22.07.2009

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
nospor
post 24.09.2009, 11:37:33
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




nl2br masz uzyc tylko w momencie wysylania maila. Do bazy masz wkladac bez tego


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
XxmanxX
post 24.09.2009, 11:42:33
Post #5





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 22.07.2009

Ostrzeżenie: (0%)
-----


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:)

Ten post edytował XxmanxX 24.09.2009, 12:01:00
Go to the top of the page
+Quote Post
wiewiorek
post 24.09.2009, 12:06:47
Post #6





Grupa: Zarejestrowani
Postów: 247
Pomógł: 11
Dołączył: 5.09.2009

Ostrzeżenie: (0%)
-----


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.

Ten post edytował wiewiorek 24.09.2009, 12:08:16
Go to the top of the page
+Quote Post
XxmanxX
post 24.09.2009, 12:19:26
Post #7





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 22.07.2009

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
nospor
post 24.09.2009, 12:23:07
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
XxmanxX
post 24.09.2009, 12:51:19
Post #9





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 22.07.2009

Ostrzeżenie: (0%)
-----


No i wszystko gra, dzięki za porządną lekcje:D
Go to the top of the page
+Quote Post
Fazzzzi
post 7.08.2010, 11:03:35
Post #10





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 11.11.2009

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
Webmasterr
post 7.08.2010, 16:23:50
Post #11





Grupa: Zarejestrowani
Postów: 71
Pomógł: 5
Dołączył: 7.08.2010

Ostrzeżenie: (0%)
-----


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?


--------------------

Darmowe e-booki (kliknij tutaj)
------------------------------------------------------------
Zapunktuj (kliknij tutaj) <--- Zarejestruj się i zobacz!
Darmowe doładowania telefonu, Eurogąbki itp.
------------------------------------------------------------
PHP 5, CSS 2.1, xHTML 1.1, JavaScript 1.7
Go to the top of the page
+Quote Post
Fazzzzi
post 13.08.2010, 20:45:23
Post #12





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 11.11.2009

Ostrzeżenie: (0%)
-----


Webmasterr - dzięki za naprowadzenie na właściwe tory smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 12.06.2025 - 10:52