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


  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... (IMG:style_emoticons/default/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

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: 5.10.2025 - 08:59