Pereiti prie turinio

UTF-8 duomenų nuskaitymas iš mysql su php


Rekomenduojami pranešimai

Pasiėmiau raw script'ą, kuris rodytų paskutines 5 phpbb3 forumo temas.Apkarpiau tą scriptą savo kreivomis rankomis, kad tiktų mano poreikiams.Paskutinė problema - vietoje lietuviškų raidžių gaunu arba tarpus arba klaustukus.Žinau, kad problema su koduote, bet nežinau kaip padaryti, kad iš mysql normaliai nuskaitytų ir rodytų tekstą.

 

Dėkui už pagalbą, kodas apačioje :)

 

<?php
   // How Many Topics you want to display?
   $topicnumber = 5;
   // Change this to your phpBB path
   $urlPath = "./";

   // Database Configuration (Where your phpBB config.php file is located)
   include 'config.php';

   $table_topics = $table_prefix. "topics";
   $table_forums = $table_prefix. "forums";
   $table_posts = $table_prefix. "posts";
   $table_users = $table_prefix. "users";
   $link = mysql_connect("$dbhost", "$dbuser", "$dbpasswd") or die("Could not connect");
   mysql_select_db("$dbname") or die("Could not select database");

   $query = "SELECT t.topic_id, t.topic_title, t.topic_last_post_id, t.forum_id, p.post_id, p.poster_id, p.post_time, u.user_id, u.username
   FROM $table_topics t, $table_forums f, $table_posts p, $table_users u
   WHERE t.topic_id = p.topic_id AND
   f.forum_id = t.forum_id AND
   t.forum_id != 4 AND
   t.topic_status <> 2 AND
   p.post_id = t.topic_last_post_id AND
   p.poster_id = u.user_id
   ORDER BY p.post_id DESC LIMIT $topicnumber";
   $result = mysql_query($query) or die("Query failed");                                    

   print "<id=\"recent_topics\" height=\"170\">
   <table cellpadding='3' cellSpacing='2' width='150'>";
   while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {

   echo  "<tr valign='top'><td><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"1\"><font color=\"#FFCC00\"><b><a href=\"$urlPath/viewtopic.php?f=$row[forum_id]&t=$row[topic_id]&p=$row[post_id]#p$row[post_id]\" TARGET=\"_blank\">" .
   $row["topic_title"] .
   "</td></tr></font>";
   }
   print "</table></marquee>";
   mysql_free_result($result);
   mysql_close($link);
   ?>

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Iškart po prisijungimo prie duombazės pabandyk pridėti:

 

mysql_query("SET NAMES 'utf8'");

 

Jau buvau radęs tokį sprendimą anksčiau, pabandžiau dar sykį visgi rezultatų nematyti.

įdėjau:

   mysql_select_db("$dbname") or die("Could not select database");
   mysql_query("SET NAMES 'utf8'");

 

 

 

Dar patikrink savo php failiuko koduotę. Kadangi kaikada būna taip, kad pats failas užkoduotas Windows-1257 ar iso-8859-15 ir kai bando skaityti utf8 - win/iso char kodus supranta kaip savo koduotės, todėl ir rodo muses.

 

Hmz, nesu tikras kaip keisti tas php failiuko koduotes.Su notepad ++ pasirinkau Formatas > Koduoti UTF-8, tačiau vėlgi niekas nepasikeitė

Redagavo Rated
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Ar forumo duombazės koduotė - UTF-8 (o ne sena lietuviška)?

 

Dummas patarimas geras. Spausk "Save As..." ir apačioje (po bylos pavadinimu ir tipu) yra "Encoding:" - ar UTF-8?

Žinok noob'as aš kol kas mysql reikaluose tai nelabai ir žinau kur pažiūrėti.

post-17572-009189200 1286030433_thumb.png

Save as paspaudus nieko nėra su permission'ais

post-17572-072267700 1286030448_thumb.png

 

 

Encode in UTF-8 without BOM pabandyk.

Bandžiau ir bum ir ne bum, vis tiek neveikia ;D

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tai gal duomenu bazeje irasai surinkti naudojant windows-1257 koduote?pabandyk

header("Content-Type: text/html; charset=windows-1257",TRUE);

Jokių pokyčių

 

O duomenų bazėje žinutės rodomos su normaliomis raidėmis ar ne?

Taip, duomenų bazėje raidės normalios.

 

Mission impossible ;D

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Atsidarius puslapį su Firefox, paspausk ant "View -> Character Encoding". Ant kurios koduotės varnelė uždėta?

Dėkui chebra, pagaliau veikia.

 

Moralas toks,kad reikia dirbti šiek tiek plačiau atsimerkus :D

Redagavau tą failą kompe, ir peržiūrinėjau /forum/failas.php Nepamačiau, kad failą uploadinau ne į forum katalogą, o kažkur /forum/styles/... :D fail'as

 

Kai jau supratau kame esmė, panaudojau šitą

Iškart po prisijungimo prie duombazės pabandyk pridėti:

 

mysql_query("SET NAMES 'utf8'");

ir šitą

po <?php tego idek:

 

header("Content-Type: text/html; charset=utf-8",TRUE);

ir viskas ore.

 

Beje, gal žinot kaip man html faile atvaizduoti php failo turinį nenaudojant iframe ? Nes neveikia man ten php sidebar'e

Redagavo Rated
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Beje, gal žinot kaip man html faile atvaizduoti php failo turinį nenaudojant iframe ? Nes neveikia man ten php sidebar'e

 

Priklausomai nuo sistemos.

- Paprašiausiai įdėk šitą skriptą į tinklapio kodą.

- Sudėtingesnis įskiepio variantas.

 

Nuostabiai rekomenduoju antrą variantą.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Priklausomai nuo sistemos.

- Paprašiausiai įdėk šitą skriptą į tinklapio kodą.

- Sudėtingesnis įskiepio variantas.

 

Nuostabiai rekomenduoju antrą variantą.

Nėra ten jokio įskiepio, tiesiog sidebar.html

Neina kaip nors įkrauti pvz kaip iš html įkrauni css.Arba priskirti kažką panašaus kaip bb kodas

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...