Mielőtt feltennéd a kérdésed, kérlek használd a Fórum keresőjét! Lehet, hogy a kérdés már szerepel a fórumban és meg is van válaszolva. Hozzászólásodban ne használd a <javascript></javascript> valamint <SCRIPT></SCRIPT> html tag-eket, módosítva használd pl.: <javas*cript>
Nem rég írtam egy blokkot, amelybe az adatbázisból hívnék le adatokat, általam készített táblákból. A gond ott kezdődik, hogy Latin2-es karakterkódolással találhatóak az adatok a mezőkben, viszont miután lekérem őket az oldalra az latin1-esben jelennek meg, így az ű és ő betűk is csak kérdőjeleket íratnak ki. Hogy tudnám elérni, hogy Latin2-es kódolás maradjon a lekérés után is?
A válaszokat előre köszönöm.
A kódom a következő:
Kód:
<?php
include "../config.php";
$kapcsolat = mysql_connect($dbhost, $dbuname, $dbpass);
mysql_select_db($dbname);
Rátaláltam erre a rövid párbeszédre és meg is örültem neki, kipróbáltam a javaslatot és működött is, de egyből jelentkezett egy másik probléma is:
a kódom (majd be is szúrok részleteket) az alábbiak szerint működik:
1) lekérdezem egy táblázatból egy termékkategória nevét.
//eddig itt volt a fenti hiba, miszerint az űő helyett ? jelent meg, amikor ezt kilistáztam. A két említett parancs ezt megoldotta. Ez után jött a gond.
2) a felhasználó 1 legördülő menüből kiválasztja a neki megfelelő kategóriát, majd egy gomb megnyomásával nyugtázza azt.
3) egy újabb lekérdezés segítségével megtudom a kategória leírását és azt is kiírom az oldalra.
//ezt a lekérdezést küldi el a mysql szervernek a php: SELECT leiras FROM `termek_kategoria` WHERE nev = "körfűrész".
4)És itt van a gond: nem jelez hibát a mysql, de nem is talál megfelelő sort, miközben, ha olyan értéket keresek, amiben nincsen űő, akkor semmi gond nincsen.
És akkor a kódrészletek, bár nem tudom, mennyire befolyásolják az érthetőséget:
$leiras = getRowMySQL('leiras','termek_kategoria','nev LIKE "%'.$_SESSION['newItemData']['category'].'%"','','','');
Így minden olyan kategóriát kifog dobni, ami hasonló azaz nem pont a megadott. Ha ez nem felel meg, akkor nézd meg adatbázisban a problémás karaktereket és hasonlítsd össze a POST-ban küldöttekkel (print_r($_POST) forrásban nézd), hogy nem e kalapos az egyik/másik és ezért nem stimmel. Ezeken kívül az is lehet még, hogy az említett karakterek HTML kódként vannak, de ezt kétlem, mert a függvényekben nem láttam átalakítást a db-ben meg nem jelezte volna ?-ként akkor.
Megnéztem, hogy a $_POST-ban milyen string tárolódik. Ott, ahol ű/ő betűnek kell lennie, az is van, még az ascii kódját is leellenőriztem, és az is rendben volt.
Ennek ellenére nem jó a lekérdezés még úgy sem, hogy = helyett a 'LIKE'-ot használom:
Kód:
SELECT leiras FROM `termek_kategoria` WHERE nev LIKE "%körfűrész (kézi)%"
Elvileg ezt a selectet küldi a php a mysql szervernek saját elmondása szerint ('echo' ezt írta ki )
Na most, ha ezt a MySQL-es QueryBrowserben alkalmazom, akkor meg is találja a megfelelő sort, ellenben a php-n keresztül már nem működik. A másik, amit néztem, hogy amennyiben a fűrészben az ű-t u-ra cserélem, akkor már nem dob ki eredményt a QueryBrowser sem.
Minden esetre úgy döntöttem, hogy kicsit módosítom a függvényeimet. Szóval most nem csak a kategória nevét kérdezem le, hanem annak sorszámát és leírását is egyben, szóval így nem kell plusz lekérdezést futtatnom (azt , amelyik a szóban forgó problémát okozta), meg a karakterek miatt aggódnom.
Sajnos mégis csak van egy kis gond az aktuális állapottal, amit az előző posztban írtam le.
Hogyha az oldalon megadott adatokat szeretném INSERT-tel felvinni az adatbázisba, akkor lényegében ugyan az a probléma jelentkezik, mint amit fent leírtam. Azaz az elvileg a mysql_query() fv-nek átadott sztring nem ugyan az, mint ami megjelenik a mysql-szerver oldalon.
Viszont az INSERT-nek köszönhetően már látom azt is, hogy ez miért van: ugyanis a beszúrt mezők, amelyek ő/ű-t tartalmaznak átalakulnak úgy, hogy az ő/ű helyére ? kerül. Tehát bár lekérdezésnél az adatbázisban szereplő ő/ű-k helyesen kerülnek továbbításra a PHP felé, viszont fordítva már nem oké a dolog.
A lényeg, hogy már mindent próbáltam többféle módon beállítani, de a helyzet nem javult.
-A mostani állás szerint a mysql táblák és sorok esetén is a charset: latin2 és a collation: latin2_hungarian_ci.
-Az a 2 parancs, amit a mysql_connect() után kell beszúrni, továbbra is ott van.
-phpMyAdminban a MySQL kapcsolat egyeztetés szintén latin2_hungarian_ci, de volt már utf8_hungarian_ci, utf8_general_ci is. Nem tudom, hogy ez mennyire befolyásolja a fenti problémát.
-A php és egyéb fájlok karakterkészlete is ISO-8859-2, html meta tag-ben a charset szintén ISO-8859-2.
Hirtelen ez jutott eszembe, ezeket gondoltam fontosnak, ha esetleg van még pár infó, ami fontos lehet, akkor szívesen megnézem és leírom.
Bővítsd, ha szükséges. Segítség hozzá ITT. A függvényt beteszed egy globális fájlba és használod azokra a változókra vagy $_POST, $_GET, $_SESSION dolgokra amire szükséges.
Természetesen adminban is használnod kell, azaz a már felvitt adatokat frissíted úgy, hogy ezzel kezeled. Innentől az adatbázisban HTML kódként lesznek az ékezetek és a különleges karakterek amiket a függvényben megadsz.
Képzeld megoldódott a dolog. Mondjuk már kezdtem megőrülni
Az volt a gond, hogy amit írtál, hogy azt a két sort be kell szúrni, azt én a mysql_connect() alá szúrtam be.
Most kipróbáltam úgy, hogy a mysql_select_db() után szúrtam be és egyből jó lett. Nem is értem, hogy ez miért nem jutott eszembe.
Csak ugye te is azt írtad, hogy a mysql_connect() alá menjen. Nekem meg eszembe sem jutott mindeddig, hogy az úgy nem teljesen jó.
Hát köszönöm a fáradozást, most már talán rendben lesz a dolog!
először is az adatbázis MySQL. A phpMyAdmin pedig csak egy egyszerű adminisztrálást biztosító panel, a portálhoz egyéb köze nincs.
Ha jól emlékszem a $cookie tömb tartalmazta az információkat, talán a $cookie[0] volt az uid, de lehet, hogy időközben ez megváltozott, érdemes a YourAccount modul fájljait böngészni. _________________ PHP-NUKE 7.7 HUN - saját szerver
http://www.nuker.hu/ftopict-1.html
NukeR.hu moderátor
Nem készíthetsz új témákat ebben a fórumban Nem válaszolhatsz egy témára ebben a fórumban Nem módosíthatod a hozzászólásidat a fórumban Nem törölheted a hozzászólásaidat a fórumban Nem szavazhatsz ebben fórumban