Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Program do właściwego kodowania
Forum PHP.pl > Forum > Bazy danych > MySQL
exit
Witam

Od jakiegoś czasu zmagam si ę z ogonkami w bazie danych MySQL. Jak wydaję polecenia z konsoli to wszystko działa bardzo dobrze, natomiast jak wydaję polecenia zpoziomu php to są krzaczki zamiast polskich literek.

Po przeglądnięciu kilku postół stwierdziłem, że próbowałem prawie wszyskiego z wyjątkiem najprostszej spawy - mianowicie nie zmieniałem edytora w którym piszę kod php, a jak wyczytałem on jest często przyczyną kłopotów mad.gif .

Obecnie piszę w ezHTML, czy może mi ktoś powiedzieć czy ten program się do tego nadaje, a jeśli macie jakieś inne, sprawdzone programy to proszę podpowiedzcie w czym pisać, żeby się nie kopało. (Chodzi oczywiście o programy freeware snitch.gif )

Pozdrawiam
DawidF
Ja używam phpEclipse i bardzo go sobie chwalę.

Próbowałem już kilku innych, ale ten jest najlepszy (przynajmniej jak na moje potrzeby).

Co do Twojego pytania, to może podałbyś kawałek kodu (np. zapis / odczyt do bazy MySQL-owej), bo tak trudno cokolwiek powiedzieć...
Zajec
Częsty błąd z jakiego rozwiązywaniem się spotykam to nie wysyłanie
  1. SET NAMES utf8
dla obsługi kodowania utf-8.

Problematyczne gdy przygotujemy sobie bazę przez np. phpMyAdmin które wyśle takie zapytanie, a potem obsługujemy bazę z poziomu własnych skryptów php, gdzie ww. zapytanie pomijamy.
exit
Dzięki za odpowiedź o programie:)

Co do mojego kodu - to jest on mało ambitny - ale proszę bardzo oto on:)


Plik formularza
  1. <META HTTP-EQUIV="Content-type" CONTENT="text/html"; charset="ISO-8859-2">
  2. <title>Wyszukiwanie</title>
  3. </head>
  4. <form action="rezultaty.php" method="post">
  5. Wybież metodę wyszukiwania:<br>
  6. <select name="metoda_szukania">
  7. <option value="nazwa">Nazwa
  8. <option value="miasto">Miasto
  9. <option value="branza">Branża
  10. <br>
  11.  
  12. Wprowadz poszukiwane wyrażenie:<br>
  13. <input name="wyrazenie" type=text>
  14. <br>
  15. <input type=submit value="Szukaj">
  16. </form>
  17. </body>
  18. </html>


No i pliczek w php
  1. <HTML>
  2. <HEAD>
  3. <META HTTP-EQUIV="Content-type" CONTENT="text/html"; charset="ISO-8859-2">
  4. <TITLE>Rezultaty wyszukiwania</TITLE>
  5. </HEAD>
  6. <BODY>
  7. <h1>wyniki</h1>
  8. <?
  9. if (!$metoda_szukania || !$wyrazenie)
  10. { echo "Brak parametrów wyszukiwania, wróć do poprzedniej strony i spróbuj ponownie
    ."
    ;
  11. }
  12. $metoda_szukania=addslashes($metoda_szukania);
  13. $wyrazenie=addslashes($wyrazenie);
  14. @ $db=mysql_pconnect('localhost', 'root', '1234');
  15. if (!$db) 
  16. {echo "Nie można połączyć się z bazą danych";
  17. mysql_select_db("firmy");
  18. $zapytanie="select * from dane where ".$metoda_szukania." like '%".$wyrazenie."%'";
  19. echo "<br>" .$zapytanie ."<br>";
  20.  
  21. $wynik=mysql_query($zapytanie);
  22. echo "to jest wynik ". $wynik."<br>";
  23.  
  24. $ile_znalezionych=mysql_num_rows($wynik);
  25. echo "znaleziono" .$ile_znalezionych ."pozycji";
  26.  
  27.  
  28. echo "<p> Totalna Ilość znalezionych pozycji: ".$ile_znalezionych."</p>";
  29. for ($i=0; $i<$ile_znalezionych; $i++)
  30. {
  31. $wiersz=mysql_fetch_array($wynik);
  32.  
  33. echo "<p>" .($i+1). " . Nazwa: ";
  34. echo stripslashes($wiersz["nazwa"]);
  35. echo "<p> Miasto: ";
  36. echo stripslashes($wiersz["miasto"]);
  37. }
  38. ?>
  39.  
  40.  
  41.  
  42. </BODY>
  43. </HTML>
DawidF
Sam styl programowania (chyba wszyscy się ze mną zgodzą) wydaje się OK.

Deklarujesz tutaj, że dokument będzie używał ISO-8859-2. Z doświadczenia wiem, że częstym błędem jest w takim przypadku zapisywanie plików w innym formacie, np. UTF-8, czy Cp-1250. Jeśli kodowanie zadeklarowane w nagłówku HTML-owym, oraz format zapisu pliku są niezgodne - też można otrzymać "krzaczki".
matlas
ustaw sobie kodowanie w bazie na iso czyli tam to sie latin2 nazywa

a dokladniej daj tak:

dla calej bazy:

  1. CREATE DATABASE `nazwa_bazy` DEFAULT CHARACTER SET latin2 COLLATE latin2_general_ci;


lub

  1. ALTER DATABASE `fnazwa bazy` DEFAULT CHARACTER SET latin2 COLLATE


na tabelach tez ustaw dla pewnosci:

  1. CREATE TABLE `zgloszenie` ( blabla
  2. ...
  3.  
  4. )
  5. CHARACTER SET latin2 COLLATE latin2_general_ci;


a polaczeniu z baza danych dawaj zawsze:

  1. <?php
  2. mysql_query("set names latin2")
  3. ?>



i na 99% powinien ci problem z polskimi literkami zniknac
exit
Znalazłem coś nowego.

Zainstalowałem phpMyAdmina2.9.1.1 i oto co mi pokazał:
System porównań dla połączeń latin2_general_ci
System kodowania znaków dla MySQL: UTF-8 Unicode (utf8)

Może ktoś wie jak to zmienić, żeby było:
System kodowania znaków dla MySQL:latin2_general_ci

Dodam, że:
1. Jak w konsoli MySQL wydam polecenie:
  1. SHOW VARIABLES lika "character_set%";


to otrzymuję:
Cytat
character_set_client latin2
character_set_connection latin2
character_set_database latin2
character_set_filesystem binary
character_set_results latin2
character_set_server latin2
character_set_system latin2
character_set_dir C:\Program Files\MySQL Server 5.0\share\charsets


a jak wydam polecenie

  1. STATUS;


to otrzymuję

Cytat
Server characterset: latin2
Db characterset: latin2
Client characterset: latin2
Conn. characterset: latin2

Więc nie wiem gdzie ustawić to żeby
System kodowania znaków dla MySQL był latin2_general_ci zamiast UTF-8 Unicode (utf8)

Pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.