Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MYSQL]Dziwny problem z mysql
Forum PHP.pl > Forum > Przedszkole
Watt
Witam,

Mam dziwny problem z mysql. Mam tagi u siebie na forum i chciałem zamienić znaki z pytajnika na pauze itd.
Napisałem sobie funkcję z update funkcja niby działa, ale zmienia polskie lierty na pytajniki, więc zrobiłem test:
Kod
ęąćżźółćńłśę

zamieniło na
Kod
questionmark.gifquestionmark.gif?ó?questionmark.gifquestionmark.gif?


Próbowałem zmieniać kodowanie (w phpmyadmin) z utf_general na utf_polish, ale nie działa. CO powiniem zrobić?

Kod:
  1. <?php
  2.  
  3. $link = mysql_connect('host', 'user', 'pass');
  4. mysql_select_db("tablica",$link);
  5.  
  6. $query10 = mysql_query("SELECT tid, subject FROM `mybb_threads` WHERE tags!=''") or die('Blad polacznia');
  7.  
  8. while($fetch = mysql_fetch_array($query10))
  9. {
  10.       $tagi = $fetch['subject'];
  11.       echo $tagi."</br>";
  12.        
  13.       $tagi = str_replace('"', "", $tagi);
  14.       $tagi = str_replace("?", "-", $tagi);
  15.       $tagi = str_replace("&", "-", $tagi);        
  16.       $tagi = str_replace(".", "", $tagi);    
  17.       $tagi = str_replace(".", "", $tagi);    
  18.       $tagi = str_replace("(", "", $tagi);  
  19.       $tagi = str_replace(")", "", $tagi);  
  20.  
  21.       //$edit = "UPDATE `mybb_threads` SET tags = '' WHERE tid = '".$fetch['tid']."'";
  22.      $edit = "UPDATE `mybb_threads` SET tags = '".$tagi."' WHERE tid = '".$fetch['tid']."'";
  23.  
  24.      mysql_query($edit);
  25. }
  26. ?>
Darti
a set names utf8 nie dziala ?
Watt
Cytat(Darti @ 18.05.2009, 00:39:13 ) *
a set names utf8 nie dziala ?

Nie za bardzo wiem co to jest. Cała baza jst kodowana w UTF_general_ci.

Próbowałem dodać coś takiego:
  1. <?php
  2. $tagi = utf8_encode($tagi);
  3. ?>

zamieniło mi
Kod
questionmark.gifquestionmark.gif?Ăłquestionmark.gifquestionmark.gifquestionmark.gif
AngelusPL
Musisz sobie ustawić "stronę kodową" dla połączenia do bazy mysql.

Dla ISO-8859-2:
mysql_query('SET CHARACTER SET latin2; SET NAMES latin2');
Dla UTF-8:
mysql_query('SET CHARACTER SET utf8;SET NAMES utf8;');

Powinno pomóc
Watt
Chwilkeszkę, jestem początkujący - to mam dać przed wysłaniem zapytania czy po?
  1. <?php
  2.  
  3. $link = mysql_connect('host', 'user', 'pass');
  4. mysql_select_db("tablica",$link);
  5.  
  6. mysql_query('SET CHARACTER SET utf8;SET NAMES utf8;');
  7.  
  8. $query10 = mysql_query("SELECT tid, subject FROM `mybb_threads` WHERE tags!=''") or die('Blad polacznia');
  9.  
  10. while($fetch = mysql_fetch_array($query10))
  11. {
  12.      $tagi = $fetch['subject'];
  13.      echo $tagi."</br>";
  14.      
  15.      $tagi = str_replace('"', "", $tagi);
  16.      $tagi = str_replace("?", "-", $tagi);
  17.      $tagi = str_replace("&", "-", $tagi);        
  18.      $tagi = str_replace(".", "", $tagi);    
  19.      $tagi = str_replace(".", "", $tagi);    
  20.      $tagi = str_replace("(", "", $tagi);  
  21.      $tagi = str_replace(")", "", $tagi);  
  22.  
  23.      //$edit = "UPDATE `mybb_threads` SET tags = '' WHERE tid = '".$fetch['tid']."'";
  24.     $edit = "UPDATE `mybb_threads` SET tags = '".$tagi."' WHERE tid = '".$fetch['tid']."'";
  25.  
  26.     mysql_query($edit);
  27. }
  28. ?>

tak?

@Edit: Zrobiłem tak i pokazało się:
Kod
questionmark.gifquestionmark.gif?Ăł?questionmark.gifquestionmark.gif?
AngelusPL
Witam

Tak jak masz teraz.
Widzę, że wcześniej napisałeś że masz bazę kodowaną w UTF-8 to zostaw linię z UTF-8 a tą z latin2 wyrzuć.
slawny
Po połączeniu a przed selectami daj
  1. <?php
  2. mysql_query ("SET NAMES utf8");
  3. mysql_query (" SET collation_connection = utf8_general_ci");
  4. ?>
Watt
Teraz to w ogóle zwrócił mi cuda:
z:
Kod
ęąćżźółćńłśę, teeeeeeeeeeeeeeeeeeeeeeest


zrobiło


Kod
�������Ÿ�º�³������������
slawny
A jak masz kodowany plik?
Watt
bez kodowania, po prostu 'echuje' wiersze.
sowiq
Było setki razy - jest nawet przypięty temat. Wystarczyło się wysilić i poszukać.
slawny
Cytat(Watt @ 18.05.2009, 10:47:57 ) *
bez kodowania, po prostu 'echuje' wiersze.


No jak to bez, musi być jakoś kodowany.
Czy to utf-8, utf-15, iso czy jakiś inny...
Może faktycznie poczytaj temat, który @sowiq podał.
Generalnie zasada jest prosta:
albo plik w kodowaniu bazy, albo baza w kodowaniu pliku, no i do tego set names
Watt
Po użyciu metody usera swoiq

Kod
Ä(tm)ąćżźółćńłśÄ(tm)
slawny
Dam sobie rękę uciąć, że to kodowanie pliku. Ściągnij sobie edytor np: ked i otworz w nim ten plik. Po otwarciu będziesz miał napisane w nawiasach jakie kodowanie ma plik, bo pewnie pobierasz bazy utf-8 a plik jest iso i wszystko sie.......
Watt
Ja używam notepad++, zaraz pobiorę twój program.

Działa (chyba)! dziekuję!
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.