Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]Problem z 'krzaczkami' po raz kolejny..., Przepraszam, ale musiałem założyć ten temat...
beka
post
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 2.08.2009

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


Witam, z góry przepraszam, że założyłem "kolejny temat o ..." ale próbowałem uzyskac pomoc w innym temacie dotyczącym tego problemu, jednakże go zamknięto (IMG:style_emoticons/default/blinksmiley.gif)
Niestety po wielu próbach NIE ZNALAZŁEM POMOCY NIGDZIE, mimo, że praktycznie każdy problem z tymi słynnymi krzaczkami jest taki sam (IMG:style_emoticons/default/smile.gif) Otóż najwidoczniej nie jest.
Próbowałem już wszelkie możliwe metody, kombinowałem, zarwałem dwie noce (bo mi nie dawało to spać już (IMG:style_emoticons/default/aaevil.gif) ), szukałem w googlach, na forach, tutaj, wszędzie i nic.
Wszelkie możliwe ustawienia w bazie danych i skrypcie już raczej wykorzystałem, a wszystko to jak krew w piach...

Problem polega na tym, że podczas dodawania PRZEZ SKRYPT danych do bazy zamiast polskich liter zapisywane zostają "krzaczki", które są również później wyświetlane na stronie.
Natomiast gdy dodaję wpis z pozycji phpMyAdmin - wszystko jest elegancko, w bazie są polskie znaki, na stronie także.
Nie mam już pomysłu co może być nie tak... serwer ma ustawienia utf8 (wszędzie, gdzie się dało), ale w sumie przy latin2 jest to samo.

[testowałem na localhoscie - problem identyczny]

skrypt dodawania :
  1. <?php
  2. function insert_db($title, $author, $edition, $format, $year){
  3. $sql = mysql_connect("---host---", "---user---", "---haslo---") or die('Nie mozna nawiazac polaczenia z baza danych.'.mysql_error());
  4. if (!mysql_query("set names utf8"))
  5. {
  6. echo "error";
  7. }
  8. mysql_select_db("---baza---") or die('Nie mozna wybrac bazy danych.'.mysql_error());
  9.  
  10. $title = stripslashes($title);
  11. $author = stripslashes($author);
  12. $edition = stripslashes($edition);
  13. $format = stripslashes($format);
  14. $year = stripslashes($year);
  15. }
  16.  
  17. $title = mysql_real_escape_string($title);
  18. $author = mysql_real_escape_string($author);
  19. $edition = mysql_real_escape_string($edition);
  20. $format = mysql_real_escape_string($format);
  21. $year = mysql_real_escape_string($year);
  22.  
  23. $query = "INSERT INTO `plyty` VALUES (NULL, '$title', '$author', '$edition', '$format', '$year')";
  24. $result = mysql_query($query) or die('Nie mozna wykonac zapytania.'.mysql_error());
  25. echo 'Dane zostały wstawione pomyślnie.<br />';
  26. $query = 'SELECT * FROM `plyty`';
  27. $result = mysql_query($query) or die('Nie mozna wykonac zapytania.'.mysql_error());
  28. echo 'Dane zostały pobrane pomyślnie.<br />';
  29. echo '<table border="1">';
  30. echo '<tr><th>Tytuł</th><th>Autor</th><th>Wydanie</th><th>Format</th><th>Rok</th></tr>';
  31. while ($result_row = mysql_fetch_array($result)) {
  32. echo '<tr><td>';
  33. echo $result_row['tytul'] .'</td><td>';
  34. echo $result_row['autor'] .'</td><td>';
  35. echo $result_row['wydanie'] .'</td><td>';
  36. echo $result_row['format'] .'</td><td>';
  37. echo $result_row['rok'] .'</td></tr>';
  38. }
  39. echo '</table>';
  40. }
  41. ?>
  42. <html>
  43. <head>
  44. <title>Wstawianie danych</title>
  45. </head>
  46. <body>
  47. <?php
  48. $title = htmlentities($_GET['tytul']);
  49. $author = htmlentities($_GET['autor']);
  50. $edition = htmlentities($_GET['wydanie']);
  51. $format = htmlentities($_GET['format']);
  52. $year = htmlentities($_GET['rok']);
  53. if (($title != NULL ) && ($author != NULL ) && ($edition != NULL ) && ($format != NULL ) && ($year != NULL)){
  54. insert_db($title,$author,$edition,$format,$year);
  55. }
  56. else {
  57. <h1>Wprowadź nową pozycję:</h1>
  58. <form action="'.$_SERVER['PHP_SELF'].'" method="GET">
  59. <table><tr>
  60. <td><label>Tytuł:<input type="text" name="tytul" id="tytul" /></label></td>
  61. <td><label>Autor:<input type="text" name="autor" id="autor" /></label></td>
  62. <td><label>Wydanie:<input type="text" name="wydanie" id="wydanie" /></label></td>
  63. <td><label>Format:<input type="text" name="format" id="format" /></label></td>
  64. <td><label>Rok:<input type="text" name="rok" id="rok" /></label></td><br />
  65. <input type="submit" value="Zatwierdź" />
  66. </tr></table>
  67. </form>';
  68. }
  69. ?>
  70. </body>
  71. </html>

(oczywiscie host, user, haslo itd. jest dobrze - tu zakrylem, bo i po co sie chwalic, prawda - więc tym sie nie zajmujemy)
Samo dodawanie działa, ale polskie znaki nie (IMG:style_emoticons/default/smile.gif)

Odczyt z bazy danych :

  1. <?php
  2. include('db_login.php');
  3. $connection = mysql_connect($db_host, $db_username, $db_password);
  4. if (!$connection){
  5. die ('Nie mozna nawiazac polaczenia z baza danych: <br .>'. mysql_error());
  6. }
  7. if (!mysql_query("set names utf8"))
  8. {
  9. echo "error";
  10. }
  11. $db_select=mysql_select_db($db_database);
  12. if(!$db_select)
  13. {
  14. die ('Nie mozna nawiazac polaczenia z baza danych: <br .>'. mysql_error());
  15. }
  16. $query = 'SELECT * FROM plyty';
  17. $result = mysql_query($query);
  18. if(!$result){
  19. die ('Nie mozna wykonac zapytania do bazy danych: <br />'. mysql_error());
  20. }
  21. while ($result_row = mysql_fetch_row(($result))){
  22. echo 'Tytuł: '.$result_row[1] . '<br />';
  23. echo 'Autor: '.$result_row[2] . '<br />';
  24. echo 'Wydanie: '.$result_row[3] . '<br />';
  25. echo 'Format: '.$result_row[4] . '<br />';
  26. echo 'Rok: '.$result_row[5] . '<br /><br />';
  27. }
  28. mysql_close($connection);
  29. ?>


no i gwoli ścisłości plik db_login

  1. <?php
  2. $db_host='host';
  3. $db_database='baza';
  4. $db_username='user';
  5. $db_password='haslo';
  6. ?>

Sama strona, pod którą podpięte (include) są te pliki (index.php) oczywiście ma kodowanie utf-8.


Proszę o nie zamykanie tego tematu do rozwiązania mojego problemu - naprawdę bardzo mi na tym zależy, a już ręce mi opadają z bezsilności. Jak widać moja przygoda z php i mysql nie zaczyna się kolorowo...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
beka
post
Post #2





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 2.08.2009

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


Kodowanie przecież robię cały czas utf8
Set names jest w skrypcie dodawania (IMG:style_emoticons/default/smile.gif) 4 linijka.

Obecna "baza" danych (byle co, byle by sprawdzić poprawność... czyli jak mówiłem wcześniej jakieś tam ąąęęłłłćć itd.) :
Serwer w sieci.
  1.  
  2. -- phpMyAdmin SQL Dump
  3. -- version 3.1.1
  4. --
  5. -- Host: sql205.byethost5.com
  6. -- Czas wygenerowania: 11 Sie 2009, 06:33
  7. -- Wersja serwera: 5.0.84
  8. -- Wersja PHP: 5.2.6-1+lenny2
  9.  
  10. SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
  11.  
  12. --
  13. -- Baza danych: `b5_2111021_winyle`
  14. --
  15.  
  16. -- --------------------------------------------------------
  17.  
  18. --
  19. -- Struktura tabeli dla `plyty`
  20. --
  21.  
  22. CREATE TABLE IF NOT EXISTS `plyty` (
  23. `tytul_id` int(11) NOT NULL AUTO_INCREMENT,
  24. `tytul` varchar(150) character SET utf8 collate utf8_polish_ci DEFAULT NULL,
  25. `autor` varchar(120) character SET utf8 collate utf8_polish_ci DEFAULT NULL,
  26. `wydanie` varchar(120) character SET utf8 collate utf8_polish_ci DEFAULT NULL,
  27. `format` varchar(10) character SET utf8 collate utf8_polish_ci DEFAULT NULL,
  28. `rok` int(11) DEFAULT NULL,
  29. PRIMARY KEY (`tytul_id`)
  30. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC AUTO_INCREMENT=100 ;
  31.  
  32. --
  33. -- Zrzut danych tabeli `plyty`
  34. --
  35.  
  36. INSERT INTO `plyty` (`tytul_id`, `tytul`, `autor`, `wydanie`, `format`, `rok`) VALUES
  37. (1, 'co?', 'ktokolwiek', 'co?', 'jaki&Aring', 1948),
  38. (2, 'co??tam jaki?? tytu??', 'ktokolwiek m??g??by', 'dsa', 'dsasdsa', 1978),
  39. (3, 'co??tam jaki?? tytu??', 'cascd', 'asdasd', 'asdas421', 3242343),
  40. (4, 'co??tam jaki?? tytu??', 'dsadas', 'sadd', 'sasd', 2311),
  41. (5, 'co?', 'sad', 'dasdsa', 'dasads', 2312),
  42. (6, 'co??tam jaki?? tytu??', 'sadasads', 'ddaa', 'dsadsd', 1221),
  43. (7, 'co??tam jaki?? tytu??', 'saddas', 'daddasads', 'ssadda', 5478941),
  44. (8, 'co??tam jaki?? tytu??', 'fdsfds', 'fdsdsfd', 'fdsfsdfd', 33333333),
  45. (10, 'cośtam bląbląblą', 'oczywiśćie, że ja ', 'kjljl', 'dsa', 3656),
  46. (11, 'co??tam jaki?? tytu??', 'fdsfds', 'fdsdsfd', 'fdsfsdfd', 33333333),
  47. (12, 'co?', 'fd', 'fd', 'fd', 3421),
  48. (13, 'cośtam bląbląblą', 'fds', 'sfddddddd', 'dddddddddd', 2321),
  49. (14, 'co??tam jaki?? tytu??', 'fds', 'sdf', 'fr3', 3333),
  50. (15, 'co??tam jaki?? tytu??', 'fds', 'sdf', 'fr3', 3333),
  51. (16, 'co??tam jaki?? tytu??', 'fdsdfs', 'dfssd', 'fds', 2312),
  52. (18, 'cośtam bląbląblą', 'e', 'e', 'e', 2311),
  53. (19, 'co??tam jaki?? tytu??', 'aaaaaaaaaaaaaa', 'avvvvvvvvvvv', 'ddddddd', 12321),
  54. (20, 'co?', 'asssssssssss', 'sddddddddd', 'dddddddddd', 1232),
  55. (21, 'co??tam jaki?? tytu??', 'ddddddddd', 'ddddddddddddddddddd', 'dddddddddd', 11111),
  56. (22, 'co??tam jaki?? tytu??', 'cccccccccc', 'ccvvvvvvvv', 'vvvvvvvvvv', 2311),
  57. (23, 'co??tam jaki?? tytu??', 'aaaaaa', 'aaaa', 'aaaaa', 2321),
  58. (24, 'co??tam jaki?? tytu??', 'aaaaaaaa', 'aaaaaaaaaa', 'ssssssssss', 22222),
  59. (25, 'co??tam jaki?? tytu??', 'aaaaa', 'aaaaa', 'aaaaaa', 0),
  60. (26, 'cośtam bląbląblą', 'dddddd', 'ddddd', 'dddddddddd', 3333),
  61. (27, 'co?', 'ssdas', 'dasdasd', 'sadas', 2222),
  62. (28, 'co?', '?', '?', '?', 1244454),
  63. (29, 'co?tam??', 'sadsa', 'dsadsada', 'ads', 1),
  64. (30, 'co??tam?(IMG:style_emoticons/default/questionmark.gif) ?', 'dffd', 'fddfs', 'ds', 12),
  65. (31, 'Ä?Ä?Ä?Ä?Ä?Ä?Ä?Ä?', 'Ä?Ä?Ä?', 'sadsa', 'lkjhjhg', 1),
  66. (32, 'co??tam?(IMG:style_emoticons/default/questionmark.gif) ?', 'sada', 'sdda', 'dsas', 9999),
  67. (99, 'śłcłśłóóałał', 'łl', 'lł', 'l', 909),
  68. (98, 'śśśśśś', 'łłłłłłłł', 'ąaąąąąąąąą', 'ććććććć', 1231);


Wpisy, w których poprawnie są polskie znaki zapisane to są te dodane przez phpMyAdmin. Reszta przez skrypt

Podbijam temat

Ten post edytował beka 11.08.2009, 20:54:40
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 3.10.2025 - 14:43