ďťż
Podstrony
|
telcocafeJak w temacie brak polskich znaków. Czytałem probowałem zmienić ale nie działa oto plik php<?php header("Content-type: iso-8859-2"); $uchwyt=mysql_connect('localhost','nazwa','*****') or die('Nieudane połączenie z bazą danych...'); mysql_select_db('nazwa') or die('Nie udało się wybrać bazy danych...'); $link=mysql_query("SELECT * FROM news ORDER BY id desc"); while($wiersz=mysql_fetch_array($link)) { echo '<b>'; echo $wiersz['tytul']; echo '</b> ('; echo $wiersz['data']; echo ')'; echo "<br>\n"; echo $wiersz['tesc']; echo "<br>\n"; echo "<br>\n"; } mysql_close($uchwyt); ?> System kodowania znaków dla MySQL: UTF-8 Unicode (utf8) System porównań dla połączenia MySQL:utf8_polish_ci Wersja klienta MySQL: 5.0.32 <a href="http://mmkomp.ovh.org/pliki/mysql.jpg" target="_blank"> zrzut z phpmyadmin </a> Użytkownik nikos edytował ten post 24 grudzień 2007, 18:00 troche pomyślenia.. skoro masz header("Content-type: iso-8859-2"); A pobierasz utf8? to jak chcesz zeby dobrze chodziło? zamien ten header na utf-8 I kodowania pól tabeli i samej tabeli zamień na ut8 a nie na latin Użytkownik polasek edytował ten post 22 grudzień 2007, 16:28 troche pomyślenia.. skoro masz header("Content-type: iso-8859-2"); A pobierasz utf8? to jak chcesz zeby dobrze chodziło? zamien ten header na utf-8 I kodowania pól tabeli i samej tabeli zamień na ut8 a nie na latin Zmieniłem na utf-8_polish_ci w pliku jaki i w tabeli i pół tabeli, jest lepiej ale np ś nie wyświetla dalej wyskakują pytajniki :( Po połączeniu z bazą dawaj zapytanie: SET CHARSET utf8; albo SET NAMES utf8; To też jak kolega wyżej powiedział. Przy konwersji pól sprawdź czy polskie znaki jakośc inaczej się nei poprzestawiały. Czyli sprawdź czy ś jest ś a nie inaczej. Mój kod w pliku news.php <?php header('Content-type: text/html; charset=utf-8'); $uchwyt=mysql_connect('localhost','nazwa','*******') or die('Nieudane połączenie z bazą danych...'); mysql_select_db('nazwa') or die('Nie udało się wybrać bazy danych...'); $link=mysql_query("SELECT * FROM news ORDER BY id desc"); while($wiersz=mysql_fetch_array($link)) { echo '<b>'; echo $wiersz['tytul']; echo '</b> ('; echo $wiersz['data']; echo ')'; echo "<br>\n"; echo $wiersz['tesc']; echo "<br>\n"; echo "<br>\n"; } mysql_close($uchwyt); ?> w którym miejscu wpisać zapytanie ? i jak go wpisać bo jeśli kopiuję i wyklejam to wychodzą błędy. Dzięki za pomoc pozdrawiam Wesołych Świąt Bezpośrednio po mysql_select_db('nazwa') or die('Nie udało się wybrać bazy danych...'); wstaw w takiej postaci: mysql_query('SET NAMES utf8'); Bezpośrednio po mysql_select_db('nazwa') or die('Nie udało się wybrać bazy danych...'); wstaw w takiej postaci: mysql_query('SET NAMES utf8'); Zrobilem jak radziłeś niestety po wpisaniu takiego newsa: Pomyślnie dodałem newsa o tytule: sprawdzenie i o treści: no to literki kuźwa, ćma, ąęńłó wyświetla mi sprawdzenie (25.12.2007, 11:22) no to literki kuŸwa, æma, ¹êñ³ó No, to teraz pozostało przekonwertować teksty z bazy na kodowanie UTF-8. Tzn jak to sie robi? Możesz jaśniej?? mysql jest na ovh.org Ściągnij bazę/tabelę, przejedź Gżegżółką XP (żeby teksty miały kodowanie UTF-8), zapisz do bazy. Ściągnij bazę/tabelę, przejedź Gżegżółką XP (żeby teksty miały kodowanie UTF-8), zapisz do bazy. Przypuszczam że to spowoduje że teksty zawarte w bazie będą miały polskie znaki. Pytanie czy jeśli wpiszę nowy tekst (nowy news) to on będzie miał już polskie znaki? Czy też należy zrobić jak radziłeś żeby w ogóle zadziałało. Zapewne wpisujesz tekst nie z phpmyadmina tylko przez panel. Ale tam też musisz zrobić konwersje na utf-8 w połączeniu. Najlepiej do połączenia użyj funkcji ktora połaczy z baza za pomoca mysql_pconnect(); W tej funkcji daj tez wywołanie "set names" i używaj tej funkcji do wszystkich polaczen mysql. nastepnie WSZYSTKIE strony koduj w utf-8 nawet te strony od panelu. A co do kodowania bazy. Najleopiej zrób tak jak kolega wyżej poradził ale nastepnie wrzuc zawartość pliku w zakładce "sql" i po klopocie. Proszę o sprawdzenie obu plików news wyglada tak <?php $uchwyt=mysql_connect('localhost','nazwabazy','*****') or die('Nieudane połączenie z bazą danych...'); mysql_select_db('nazwabazy') or die('Nie udało się wybrać bazy danych...'); mysql_query('SET CHARSET utf8'); mysql_query('SET NAMES utf8'); $link=mysql_query("SELECT * FROM news ORDER BY id desc"); while($wiersz=mysql_fetch_array($link)) { echo '<b>'; echo $wiersz['tytul']; echo '</b> ('; echo $wiersz['data']; echo ')'; echo "<br>\n"; echo $wiersz['tesc']; echo "<br>\n"; echo "<br>\n"; } mysql_close($uchwyt); ?> nastepnie panel admina wygląda tak <? session_start(); ?> <html> <meta name="generator" content="WebSite PRO 4.3" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>NEWSY - panel administratora</title> </head> <body> <? if(isset($_POST['pass'])) { if($_POST['pass']=='*****') { $_SESSION['admin']='ok'; } } if((!isset($_SESSION['admin']) || $_SESSION['admin']!='ok') && $_GET['admin']!='wyloguj') { echo '<form method="POST" action="admin.php"> <p align="center"> Niestety nie jesteś zalogowany.<br> Proszę podać hasło:<br> <input type="password" name="pass" size="20"><br> <input type="submit" value="OK"></p> </form>'; } if(isset($_GET['admin']) && $_GET['admin']=='wyloguj') { $_SESSION['admin']=''; echo 'Nastąpiło wylogowanie<br> Przejdź do <a href="admin.php">strony głównej</a>...'; } if($_SESSION['admin']=='ok') { $uchwyt=mysql_connect('localhost','nazwabazy','******') or die('Nieudane połączenie z bazą danych...'); mysql_select_db('nazwabazy') or die('Nie udało się wybrać bazy danych...'); ?> <table border="1" width="600" align="center"> <tr> <td align="center"><b>PANEL ADMINISTRATORA - NEWSY</b></td> </tr> <tr> <td align="center"> <a href="admin.php">Strona główna</a> | <a href="admin.php?newsy=pokaz">PokaÄąź newsy</a> | <a href="admin.php?newsy=dodaj">Dodaj newsa</a></td> </tr> <tr> <td align="center"> <? if(isset($_GET['newsy']) && $_GET['newsy']=='pokaz') { echo '<b>NEWSY W TWOIM SERWISIE:</b><br>'; $link=mysql_query('SELECT * FROM news ORDER BY id desc'); while($wiersz=mysql_fetch_array($link)) { echo '<b>'.$wiersz['tytul'].'</b>'; echo ' - '; echo $wiersz['data']; echo ' - '; echo '<a href="admin.php?newsy=edytuj&id='.$wiersz['id'].'">Edytuj< /a>'; echo ' - '; echo '<a href="admin.php?newsy=usun&id='.$wiersz['id'].'">Usuń< /a>'; echo "<br>\n"; } } elseif(isset($_GET['newsy']) && $_GET['newsy']=='dodaj') { echo '<b>DODAJ NOWEGO NEWSA</b><br>'; echo '<form method="POST" action="admin.php?newsy=dopisz"> <table border="0" width="100%"> <tr> <td>Tytuł:</td> <td><input type="text" name="tytul" size="64"></td> </tr> <tr> <td>Treść: </td> <td><textarea rows="5" name="tresc" cols="42"></textarea></td> </tr> <tr> <td> </td> <td><input type="submit" value="DODAJ"></td> </tr> </table> </form>'; } elseif(isset($_GET['newsy']) && $_GET['newsy']=='edytuj' && isset($_GET['id'])) { $id=$_GET['id']; $link=mysql_query("SELECT * FROM news WHERE id='$id'"); $wiersz=mysql_fetch_array($link); echo '<b>EDYTUJ NEWSA</b><br>'; echo '<form method="POST" action="admin.php?newsy=wyedytuj&id='.$wiersz['id'].'"> <table border="0" width="100%"> <tr> <td>Tytuł:</td> <td><input type="text" name="tytul" size="64" value="'.$wiersz['tytul'].'"></td> </tr> <tr> <td>Treść: </td> <td><textarea rows="5" name="tresc" cols="42">'.$wiersz['tresc'].'</textarea></td> </tr> <tr> <td> </td> <td><input type="submit" value="EDYTUJ"></td> </tr> </table> </form>'; } elseif(isset($_GET['newsy']) && $_GET['newsy']=='dopisz') { $tytul=$_POST['tytul']; $tresc=$_POST['tresc']; $data=date('d.m.Y, H:i'); mysql_query("INSERT INTO news VALUES(0,'$tytul','$tresc','$data')"); echo 'Pomyślnie dodałem newsa o tytule: <b>'.$tytul.'</b> i o treści: <b>'.$tresc.'</b>'; } elseif(isset($_GET['newsy']) && $_GET['newsy']=='wyedytuj' && isset($_GET['id'])) { $tytul=$_POST['tytul']; $tresc=$_POST['tresc']; $id=$_GET['id']; mysql_query("UPDATE news SET tytul='$tytul' tersc='$tresc' WHERE id='$id'"); echo 'Pomyślnie wyedytowałem newsa! <br> Jego nowy tytuł to: <b>'.$tytul.'</b>, a treść: <b>'.$tresc.'</b>'; } elseif(isset($_GET['newsy']) && $_GET['newsy']=='usun' && isset($_GET['id'])) { $id=$_GET['id']; mysql_query("DELETE FROM news WHERE id='$id'"); echo 'Pomyślnie usunąłem newsa numer '.$id.'!'; } else echo 'Witaj w panelu administracyjnym newsami...<br> W górnej części znajduje się menu, które pozwoji ci zarządzać newsami w twoim serwise.<br> <br>Korzystanie z tego systemu newsów jest całkowicie darmowe, nie wymagam takÄąźe umieszczania mnie w stopce, ale jeśli chcesz to moÄąźesz to uczynić - nie obraÄąźę się...<br> <a href="mailto:wormsikk@poczta.fm">WORMS</a>'; ?> </td> </tr> <tr> <td align="right"><a href="admin.php?admin=wyloguj">WYLOGUJ >></a></td> </tr> </table> <? mysql_close($uchwyt); } ?> </body> </html> wczesniej w pliku admin.php mialem ustawione <meta http-equiv="Content-Type" content="text/html; charset=windows-1250"> i jeśli klinkałem na pokaż newsy to wyświetlało nazwy tych newsów które wpisałem poprawinie. Jeśli ktoś może proszę sprawdzić czy te pliki są poprawne. dzieki! sprawa rozwiązana do obu plikow dolozylem i dobrze wyświetla <? session_start(); ?> <html> <meta name="generator" content="WebSite PRO 4.3" /> <meta http-equiv="Content-Type" content="text/html; charset=windows-1250"> <title></title> </head> <body> z pierwszego usunolem: mysql_query('SET CHARSET utf8'); mysql_query('SET NAMES utf8'); Użytkownik sauron edytował ten post 30 grudzień 2007, 23:28 Powód edycji: dodanie [codebox] po I - dlaczego nie korzystasz ze standardu iso-8859-2? ja mam bazy na ovh i nie daję żadnego headrea tylko w meta daję znacznik strony iso-8859-2 potem jak dane pobieram z pola tekstowego i wrzucam do bazy, a potem wyświetlam to nie mam żadnych problemów... możliwe, że wpisy dodajesz do bazy przy innym kodowaniu, a odczytujesz przy innym... Ja bym to po prostu zrobił tak: a)Wpisywanie: <html><head><meta ...iso-8859-2></head><body><? $link=mysql_connect('host.pl','user','pass'); mysql_query("INSERT INTO 'baza_danych' VALUES $kod, $tresc, $data"); ?> ... b)odczyt <html><head><meta ...iso-8859-2></head><body><? $link=mysql_connect('host.pl','user','pass'); $wpisy=mysql_query("SELECT * FROM 'baza_danych'); //wyświetlanie danych poprzez mysql_fetch_array($wpisy); ?> ... po I - dlaczego nie korzystasz ze standardu iso-8859-2? Jeżeli następnym razem będziesz miał zamiar coś pisać to przeczytaj sobie jeszcze raz co inni napisali. Czytanie i ROZUMIENIE nie boli. Utf-8 jest lepsze i bardziej uniwersalne. Niestetyo twórca tematu nie umiał najlepiej wykorzystać tego kodowania dlatego są takie problemy. Prawdopodobnie musiał nadal nie zmienić kodowania pól w bazie jak mu radziliśmy. Swoją drogą na necie widziałem sporo tutoriali które trafnie pokazują jak rozwiązać sprawę z błędnym kodowaniem i wyświetlaniem znaków. |
|||
Sitedesign by AltusUmbrae. |