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

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: 23.08.2025 - 17:15