Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL]Problem z 'krzaczkami' po raz kolejny..., Przepraszam, ale musiałem założyć ten temat...
beka
post 11.08.2009, 08:36:07
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 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 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ż 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 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
ayeo
post 11.08.2009, 08:40:23
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

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


  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  5. </head>


Daj to w pliku z formularzem tongue.gif


--------------------
Go to the top of the page
+Quote Post
beka
post 11.08.2009, 08:42:44
Post #3





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

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


Próbowałem. Nie działa.
Go to the top of the page
+Quote Post
ayeo
post 11.08.2009, 08:49:29
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

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


Pokaż dumpa bazy winksmiley.jpg


--------------------
Go to the top of the page
+Quote Post
beka
post 11.08.2009, 08:53:24
Post #5





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

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


  1. -- MySQL dump 10.11
  2. --
  3. -- Host: localhost Database: winyle
  4. -- ------------------------------------------------------
  5. -- Server version 5.0.75-0ubuntu10.2
  6.  
  7. /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
  8. /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
  9. /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
  10. /*!40101 SET NAMES utf8 */;
  11. /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
  12. /*!40103 SET TIME_ZONE='+00:00' */;
  13. /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
  14. /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
  15. /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
  16. /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
  17.  
  18. --
  19. -- Table structure for table `plyty`
  20. --
  21.  
  22. DROP TABLE IF EXISTS `plyty`;
  23. SET @saved_cs_client = @@character_set_client;
  24. SET character_set_client = utf8;
  25. CREATE TABLE `plyty` (
  26. `tytul_id` int(11) NOT NULL AUTO_INCREMENT,
  27. `tytul` varchar(150) DEFAULT NULL,
  28. `autor` varchar(120) DEFAULT NULL,
  29. `wydanie` varchar(120) DEFAULT NULL,
  30. `format` varchar(10) DEFAULT NULL,
  31. `rok` int(11) DEFAULT NULL,
  32. PRIMARY KEY (`tytul_id`)
  33. ) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
  34. SET character_set_client = @saved_cs_client;
  35.  
  36. --
  37. -- Dumping data for table `plyty`
  38. --
  39.  
  40. LOCK TABLES `plyty` WRITE;
  41. /*!40000 ALTER TABLE `plyty` DISABLE KEYS */;
  42. INSERT INTO `plyty` VALUES (1,'Siedem','O.S.T.R','Asfalt Records','2LP',2006),(2,'Season One','The Jonesz','Asfalt Records','2LP',2008),(3,'Koniec ??art??w','??ona','Asfalt Records','1LP',2002),(4,'Out Of The Blue','Electric Light Orchestra','Jet Records','2LP',1977);
  43. /*!40000 ALTER TABLE `plyty` ENABLE KEYS */;
  44. UNLOCK TABLES;
  45. /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
  46.  
  47. /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
  48. /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
  49. /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
  50. /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
  51. /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
  52. /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
  53. /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
  54.  
  55. -- Dump completed on 2009-08-02 16:49:07


Jeśli dobrze zrozumiałem... worriedsmiley.gif

edit. na serwerze w sieci niewiele się to różni (zamiast localhost jest byethost bla bla, no i pełno wpisów typu śśśśś, ćććć, śśś)

Ten post edytował beka 11.08.2009, 08:55:09
Go to the top of the page
+Quote Post
ayeo
post 11.08.2009, 08:54:54
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

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


W linii 33 masz LATIN1


--------------------
Go to the top of the page
+Quote Post
beka
post 11.08.2009, 08:58:06
Post #7





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

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


Po poprawieniu nadal to samo (przy utf i latin2)
Go to the top of the page
+Quote Post
Chrom
post 11.08.2009, 09:06:00
Post #8





Grupa: Zarejestrowani
Postów: 240
Pomógł: 17
Dołączył: 28.12.2005
Skąd: Warszawa

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


a dlaczego nie UTF-8 ?
+
mysql_query("SET NAMES 'utf8'");

Ten post edytował Chrom 11.08.2009, 09:07:12
Go to the top of the page
+Quote Post
erix
post 11.08.2009, 09:11:37
Post #9





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Bo trzeba jeszcze prawidłowo zakodować znaki w pliku i zaimportować jeszcze raz.

Poza tym, gdzie masz set names?


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
beka
post 21.08.2009, 05:55:52
Post #10





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 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?questionmark.gif?', 'dffd', 'fddfs', 'ds', 12),
  65. (31, 'Ä?Ä?Ä?Ä?Ä?Ä?Ä?Ä?', 'Ä?Ä?Ä?', 'sadsa', 'lkjhjhg', 1),
  66. (32, 'co??tam?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
erix
post 21.08.2009, 11:49:57
Post #11





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Ale przecież i tu masz znaki zapytania...


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
beka
post 21.08.2009, 15:27:20
Post #12





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

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


Przecież pisałem już wcześniej, że znaki zapytania i krzaki są tu PRZEZ DODANIE SKRYPTEM. Polskie znaki występują we wpisach dodanych przez phpMyAdmin/terminal.
Go to the top of the page
+Quote Post
PawelC
post 21.08.2009, 15:30:47
Post #13





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

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


Zamiast set names utf8, daj set names utf-8 bo u mnie jest różnica przy ich stosowaniu smile.gif
Go to the top of the page
+Quote Post
beka
post 21.08.2009, 16:18:59
Post #14





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

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


Niestety nadal to samo.
Go to the top of the page
+Quote Post
Rymar
post 21.08.2009, 22:41:29
Post #15





Grupa: Zarejestrowani
Postów: 33
Pomógł: 2
Dołączył: 18.09.2008

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


A jakiego edytora używasz do pisania kodu?Może masz ustawione w opcjach zachodnioeuropejski (iso-8859-1) bądź środkowoeuropejski (iso-8859-2) bądź jeszcze jakiś inny a nie UTF-8, czasem tak mam gdy przestawię kodowanie i potem krzaki lecą.
Go to the top of the page
+Quote Post
beka
post 24.08.2009, 22:09:36
Post #16





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

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


Bluefish na linuxie, mam ustawione kodowanie utf-8.
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: 6.07.2025 - 02:10