Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Cudzysłów
nexosg
post 4.02.2008, 14:19:19
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 4.02.2008

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


Witam
Mam problem z cudzy słowami
Zrobiłem stronkę która łączy się z mysql-em i umożliwia update rekordów tabeli
do formularza w którym są wpisywane dane wysyłam rekord w ten sposób:

echo "<td><a href=\"edit.php?id={$r['id']}&id={$r['tekst']}

jednak gdy w tekst pojawi się cudzysłów to w polu odpowiadającym widzę tylko ; podczas gdy w bazie jest dłuższy tekst.
Gdy robię updte tekstu z cudzysłowem jest wszysko ok.

Co zrobić aby cudzysłów w polu teskt był widzoczny normalnie?

Pozdrawiam
Go to the top of the page
+Quote Post
nowotny
post 4.02.2008, 14:46:08
Post #2





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

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


Nie qmam... podaj jakiś konkretny przykład... i naucz się stosować urlencode" title="Zobacz w manualu PHP" target="_manual...
Go to the top of the page
+Quote Post
em1X
post 4.02.2008, 15:07:25
Post #3





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

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


Użyj htmlspecialchars" title="Zobacz w manualu PHP" target="_manual wobec danych wyświetlanych z bazy.


--------------------
eh, co polska wódka to polska wódka
Go to the top of the page
+Quote Post
nexosg
post 4.02.2008, 15:25:38
Post #4





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 4.02.2008

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


Przykład"
rekord przed update: Ala ma kota.
pekord po update: Ala ma "kota.
I przy ponownym update wszystko mi się wywala bo widze albo ;, albo Ala ma...

Jak użyć htmlspecialchar w tej funkcji?


function konwertuj($tekst) {
$win = array("ą","ć","ę","ł","ń","ó","ś","ź","ż", "Ą","Ć","Ę","Ł","Ń","Ó","Ś","Ź","Ż","Ä™", "Ĺş", "\"");
$uni = array("ą","ć","ę","ł","ń","ó",
"ś","ź","ż","Ą","Ć","Ę",
"Ł","Ń","Ó","Ś","Ź","Ż","ę","ź", "&quot;");
for ( $i=0; $i < count($win);$i++) $win[$i]="/".$win[$i]."/";
$tekst = preg_replace($win, $uni, $tekst);
return($tekst);
}

Bo po update mnożą mi się \



----

Może trochę inaczej.

Macie może jakiś manual gdzie jest opisane wszystko jak zrobić stronkę w php/mysql (insert/update/delete) żeby się poprawnie wyświetlały znaki polskie. Bo po insertach i update w różnych prezeglądarkach różnie wyglądają.

Ten post edytował nexosg 4.02.2008, 15:30:32
Go to the top of the page
+Quote Post
em1X
post 4.02.2008, 15:35:38
Post #5





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

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


Cytat(nexosg @ 4.02.2008, 15:25:38 ) *
Macie może jakiś manual gdzie jest opisane wszystko jak zrobić stronkę w php/mysql (insert/update/delete) żeby się poprawnie wyświetlały znaki polskie. Bo po insertach i update w różnych prezeglądarkach różnie wyglądają.


ehhh.. to jest po prostu Twoja niewiedza. Jeżeli kodowanie na stronie, z której dane są wysyłane do bazy, ustawisz na UTF-8, bazie danych każesz się łączyć z kodowaniem UTF-8 i zapisywać w niej dane również w UTF-8 to przy wyświetlaniu danych na stronie z tym kodowaniem polskie znaki będą zachowane.

Twoje krzaki wynikają z różnic kodowania:
1) formularz -> baza, lub,
2) baza -> strona www

Nie ma potrzeby używania jakichkolwiek śmiesznych funkcji typu konwertuj jeżeli kodowanie na każdej linii będzie zachowane takie samo.

Co do [manual\]htmlspecialchars\[/manual\]. Naturalnie, że jeżeli tekst w bazie będzie posiadał " to przeglądarka uzna to jako koniec pola, które ma zawierać treść.
Załóżmy, że w bazie masz:
Kod
Ala" ma kota


Jeżeli wstawimy to do pola tekstowego, wyjdzie nam z tego taki kod:
  1. <input type="text" name="pole" value="Ala" ma kota />


czyli " ma kota" ginie bo jest poza value="".

W PHP więc powinno wyświetlanie wyglądać tak:
  1. <?php
  2. print '<input type="text" name="pole" value="'.htmlSpecialChars($dane_z_bazy).'" />';
  3. ?>


Ten post edytował em1X 4.02.2008, 15:46:07


--------------------
eh, co polska wódka to polska wódka
Go to the top of the page
+Quote Post
nowotny
post 4.02.2008, 15:37:56
Post #6





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

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


Cytat(nexosg @ 4.02.2008, 15:25:38 ) *
Przykład"
rekord przed update: Ala ma kota.
pekord po update: Ala ma "kota.
I przy ponownym update wszystko mi się wywala bo widze albo ;, albo Ala ma...

Ja jakoś dalej tego nie widze... :/


Cytat(nexosg @ 4.02.2008, 15:25:38 ) *
Macie może jakiś manual gdzie jest opisane wszystko jak zrobić stronkę w php/mysql (insert/update/delete) żeby się poprawnie wyświetlały znaki polskie. Bo po insertach i update w różnych prezeglądarkach różnie wyglądają.

Robi się normalnie... trzeba tylko uważać żeby kodowanie strony, pliku i bazy się zgadzało... a jak chcesz przesyłać tekst ze specjanlymi znakami poprzez URL to używaj funkcji urlencode" title="Zobacz w manualu PHP" target="_manual, chociaż to w ogóle poroniony pomysł jest IMHO...
Go to the top of the page
+Quote Post
dziurson
post 4.02.2008, 15:38:05
Post #7





Grupa: Zarejestrowani
Postów: 145
Pomógł: 16
Dołączył: 19.07.2007
Skąd: Elbląg

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


Nalepiej wsawić po połączeniu taką linię:

  1. <?php
  2. mysql_query("SET NAMES latin1");
  3. ?>


za latin1 wstaw kodowanie twojej tabeli


--------------------
Go to the top of the page
+Quote Post
nexosg
post 4.02.2008, 15:40:45
Post #8





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 4.02.2008

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


1. Wiem że moja nie wiedza. Nigdy nie pisałem w php. Robię to pierwszy raz i nawet nigdy mnie do tego języka nie ciągnęło. Ale muszę.

2. Wiem że kodowanie. Z tym że nie wiem jak to poustawiać.

Potrzebuję jakiś sensowny opis jak to zrobić
Go to the top of the page
+Quote Post
em1X
post 4.02.2008, 15:41:38
Post #9





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

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


Cytat(dziurson @ 4.02.2008, 15:38:05 ) *
Nalepiej wsawić po połączeniu taką linię:

  1. <?php
  2. mysql_query(&#092;"SET NAMES latin1\");
  3. ?>


za latin1 wstaw kodowanie twojej tabeli


Standardem jest UTF8. Trzymajmy się standardów:

  1. <?php
  2. mysql_query('SET CHARACTER SET utf8');
  3. mysql_query('SET NAMES utf8');
  4. ?>


Napisałem dokładnie jak to zrobić. Przeczytaj ponownie.


--------------------
eh, co polska wódka to polska wódka
Go to the top of the page
+Quote Post
nexosg
post 4.02.2008, 15:42:40
Post #10





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 4.02.2008

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


Ojej właśnie o coś takiego mi chodziło. Dzięki.

Pozdrawiam
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: 19.07.2025 - 05:30