Hei,
Kun aloittelin MySQL:n opettelemista, niin tein tuollaista verkkokauppaa.
Nyt tein eilen 20 minuutissa saman, mitä joskus tuhersin 2 päivää enkä silti saanut valmiiksi, mutta silloin oli yksi hyvä puoli: Pystyin ajamaan ääkköset kantaan sellaisinaan, mutta nyt se ei onnistu. Pitää käyttää näitä ä jne. merkintöjä ääkkösiin, kun lisään "kauppa" -osioon tavaraa. Kun kauppaan myy tavaraa, niin ääkköset saa ajettua sellaisenaan kantaan, ja ne toimivat! Sivut ovat koodattu UTF-8:ksi, mutta kannasta en tiedä mitä se on. Huomasin, että muutkin sivut vaativat nuo erikoismerkinnät ääkkösille koodatessani kahdella koneella. Nämä koneet kyllä kirjoittavat ihan samalla charesetillä, UTF-8 without BOM:lla. Osaisikos joku kertoa miten saisin ääkköset kantaan, ja myös sivuille oikein?
MySQL:llään kun tunnen heikosti, mutta eikös siellä ole omat funktiot noiden skandien käsittelyyn?
Jos koodaat php:llä, niin lähtisin hakemaan php:stä: htmlspecialchars ja htmlentities funktioilla.
B_R_H kirjoitti:
Jos koodaat php:llä, niin lähtisin hakemaan php:stä: htmlspecialchars ja htmlentities funktioilla.
Miten nämä liittyvät tähän? Jos en täysin väärin ole käsittänyt, niin näillä estetään HTML merkkaus.
Yeps lienet oikeassa. Taisin kokemattomuuttani sekeittaa pari asiaa - sorry!
Toinenkin ongelma ilmeni, että kun tavaroita koittaa ostaa, niin tavaran nimi lähetetään osoitteen mukana, jossa ääkköset ovat selkokielenä. Kun tätä ja kannassa olevaa verrataan, niin kysely palauttaa falsen. Eli, miten saisin kannassa ääkköset kuntoon?
Tulikin ratkaistua erään vanhan aiheen perusteella.
EDIT: Sellainen juttu vielä, että jos ei ole tarpeeksi rahaa tuotteeseen, niin tuote on vedetty yli. Miten saan ainoastaan viivan värin muutettua? 'color: red' toimii linjan väriksi, mutta se muuttaa myös tekstin värin :(
Onko php-sovellus?
Tässä on pari tapaa asettaa mysql-merkistö php:lla. Olisko apua. Itselleni ei. Vaikka saan tällaisen tulostuksen:
SHOW VARIABLES LIKE 'character\_set_%'
Tulostaa näin
Variable_name Value character_set_client latin1 character_set_connection latin1 character_set_database latin1 character_set_filesystem binary character_set_results latin1 character_set_server latin1 character_set_system utf8 character_sets_dir /usr/share/mysql/charsets/
<?php $$link = mysql_connect($server, $username, $password); //alla kokeiluja mysql-merkistön kanssa kokeilu 1 kerrallaan mysql_set_charset('latin1',$$link); mysql_query("SET CHARACTER SET latin1"); $charset = mysql_client_encoding($$link); mysql_query("SET NAMES 'latin1'"); echo "The current character set is: $charset\n"; ?>
Itselläni on sellainen vaiva, että ääkköset näkyy kyllä sovelluksessa oikein, mutta ei kantaa katsellessa phpmyadminilla tai päätteessä.
lrp kirjoitti:
Itselläni on sellainen vaiva, että ääkköset näkyy kyllä sovelluksessa oikein, mutta ei kantaa katsellessa phpmyadminilla tai päätteessä.
Oletko kokeillut antaa päätteessä charsettiä yhteyttä varten? Esim.
$ mysql --default-character-set=latin1 -u kayttaja -p kanta
En. enkä onnistu ton rivin kanssa...
$ $ mysql --default-character-set=latin1 -u root -p
bash: $: command not found
Toi show variables näyttää kuitenkin character_set_client latin1
Kun katselee phpmyadminilla dumppia niin siellä komeilee hienot ääkköset. Ja joka taulun DEFAULT CHARSET=latin1
Siis ei sitä $:ää pidä kirjoittaa, se oli vain tarkoitettu näyttämään että kirjoitat komentokehotteeseen.
hups...
Nyt näkyy phpmyadminissa äät ja ööt.
Päätteessä edelleen kysymysmerkkiä salmiakkipohjalla.
lrp kirjoitti:
Päätteessä edelleen kysymysmerkkiä salmiakkipohjalla.
Toisin sanoen päätteesi käyttää UTF-8:a mutta MySQL latin1:tä. Käske siis MySQL:n tuossa tilanteessa kommunikoida UTF-8:lla.
Noniin, yksi kysymys. Onko olemassa joku INT tyypin kaltainen numeroille tarkoitettu tyyppi, joka olisi pituusarvoiltaan suurempi?
Parikin, nimittäin BIGINT, joka on 64-bittinen, ja DECIMAL, johon voi tallentaa myös kokonaislukuja ja joka manuaalin mukaan pystyy 65 numeroon.
Kiitos.
Itse olen tehnyt ääkkös jutun näin:
Tallennan kantaan UTF-8 muodossa.
Kun sieltä tulostetaan, muutetaan se tarpeen mukaan eri muotoon, esim. lomakkeen textareaan tulostan kannassa olevat normaalina ääkkösinä ja tallentaessa vaihdan ne UTF-8:aan.
Aihe on jo aika vanha, joten et voi enää vastata siihen.