Válí se ti projekty v šuplíku? Dostaň je mezi lidi a získej cool tričko a body na profi IT kurzy v soutěži ITnetwork summer 2017!
Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)
Avatar
purity00
Člen
Avatar
purity00:18.11.2014 23:59

Už to tu bolo riešené milión krát. Skúsil som všetko. Preto sa obraciam na jedného ochotného človeka ktorý mi poradí/vytovrí:

  • čo použiť (XAMPP, UwAMP, EasyPHP, Usbwebserver V8 alebo iný...)
  • vytvoriť databázu + tabuľku s 2-3 stlpcami a pár riadkov. (SQL kód ktorý vytvorý tabuľku)
  • php kód s pripojením na databázu, vloženie riadku, vypísanie riadku

Už som skúšal:
SET NAMES 'utf-8'
mysql_query("SET CHARACTER SET utf8");
SET character_set_cli­ent = cp1250;
SET character_set_con­nection = utf8;
SET character_set_re­sults = latin2;
a podobné...

Prikladám screen plochy.
Vyriešme to už raz a navždy :D

 
Odpovědět 18.11.2014 23:59
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Odpovídá na purity00
Matúš Petrofčík:19.11.2014 1:33

Mám taký pocit že v phpMyAdmin sa ti znaky budú takto zobrazovať vždy, aj keď máš nastavené na UTF-8. Mne to tak robí tiež ;) hlavné je aby to na webe neblbo, čož mne neblbne.

Nahoru Odpovědět  +6 19.11.2014 1:33
obsah kocky = r^2 ... a preto vlak drnká
Avatar
IT Man
Redaktor
Avatar
Odpovídá na purity00
IT Man:19.11.2014 6:36

Přesně jak říká Matúš. A pokud ti to blbne i na webu, nevkládej tam ty informace přímo, ale přes nějaký skript. :)

Nahoru Odpovědět  +1 19.11.2014 6:36
Cokoliv a kdokoliv může jednou uspět.
Avatar
Odpovídá na purity00
Michal Štěpánek:19.11.2014 8:09

Webová aplikace nestojí na tom, jak se data někomu zobrazují v phpMyAdmin, ale na tom, jak se zobrazují v prohlížeči.
A jak píše IT Man Když budeš mít problém se zobrazením i na webu, bude to pravděpodobně tím, že jsou data do DB vložena přes phpMyAdmin (tam se pak překvapivě zobrazují normálně)...
Když data do DB uložíš přes skript, budou se na webu zobrazovat hezky česky... :O

Nahoru Odpovědět  +2 19.11.2014 8:09
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
purity00
Člen
Avatar
Odpovídá na Michal Štěpánek
purity00:19.11.2014 8:21

Na webe sa mi to zobrazuje správne. Ale chcel by som to vyexportovať z mysql. A to už je problém. Potreboval by som aby to bolo dobré v tatabáze.
Neaké tipy?

 
Nahoru Odpovědět 19.11.2014 8:21
Avatar
Odpovídá na purity00
Michal Štěpánek:19.11.2014 8:22

Do jakého formátu?
V jakém kódování máš nastavenou DB v tom phpMyAdmin, potažmo celého phpMyAdmina?

Editováno 19.11.2014 8:24
Nahoru Odpovědět 19.11.2014 8:22
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Odpovídá na purity00
Michal Štěpánek:19.11.2014 8:27

Zkus se mrknout na MySQL Workbench, třeba ti to s exportem pomůže...

Nahoru Odpovědět 19.11.2014 8:27
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
purity00
Člen
Avatar
Odpovídá na Michal Štěpánek
purity00:19.11.2014 8:36

Všetko kódujem do UTF-8. Možná je probém riešený tu:
https://wiki.phpmyadmin.net/…Garbled_data
Ale moc som tomu článku nepochopil ;(

 
Nahoru Odpovědět 19.11.2014 8:36
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na purity00
Daniel Vítek:19.11.2014 8:54

Na co to chceš exportovat ? Abys to použil v jiné databázi ? Tak to bude stejné jako teď - v pma se to bude ukazovat takto, na webu správně.

Pokud to chceš použít jinak, můžeš si napsat vlastní script který ti to bude exportovat.

 
Nahoru Odpovědět 19.11.2014 8:54
Avatar
purity00
Člen
Avatar
Odpovídá na Daniel Vítek
purity00:19.11.2014 9:02

Napríklad do databázy MS Access alebo PostgreSQL.

 
Nahoru Odpovědět 19.11.2014 9:02
Avatar
Jiří Gracík
Redaktor
Avatar
Jiří Gracík:19.11.2014 9:40

V životě jsem s PhpMyAdminem neměl problém :D

Nahoru Odpovědět  +1 19.11.2014 9:40
Creating websites is awesome till you see the result in another browser ...
Avatar
David Čápka
Tým ITnetwork
Avatar
David Čápka:19.11.2014 17:04

PHPMyAdmin to zobrazuje vždy správně. Pokud je to zobrazené špatně, tak je špatně ta DB. Aplikace to tam vkládala pod špatným kódováním a teď je to rozhozené. Proto se ti to nedaří nijak spravit, není co.

Nahoru Odpovědět  +1 19.11.2014 17:04
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Odpovídá na David Čápka
Matúš Petrofčík:19.11.2014 17:13

Píšeš o tom exporte alebo o zobrazení v phpmyadmin?

Nahoru Odpovědět 19.11.2014 17:13
obsah kocky = r^2 ... a preto vlak drnká
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Matúš Petrofčík
David Čápka:19.11.2014 17:14

O zobrazení. Tvůj web ti může teoreticky fungovat správně, protože data špatná ukládá a pak je špatně načítá. Každopádně to asi není tak, jak by to mělo být.

Nahoru Odpovědět  +3 19.11.2014 17:14
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Odpovídá na David Čápka
Matúš Petrofčík:19.11.2014 17:31

Tak to sa na to budem musiet pozriet :) dik

Nahoru Odpovědět 19.11.2014 17:31
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Nahoru Odpovědět 12.7.2015 23:19
obsah kocky = r^2 ... a preto vlak drnká
Avatar
patulka.k
Člen
Avatar
patulka.k:18.9.2015 9:16

Vyřešilo se to teda nějak? Já to mám taky tak, že se mi data do DB ukládají jako kliky háky, ale když to vypíšu zpět do webu tak se mi to zobrazí normálně.

když jsem vytvářel DB, tak jsem jí nastavil character set ut8 i collate utf8_czech_ci, set names utf8 jsem zkusil a přesto mi to tam nezapisuje tak jak bych chtěl.

Tak bych se teda chtěl zeptat, jestli se to vyřešilo nějak?

Díky

 
Nahoru Odpovědět 18.9.2015 9:16
Avatar
Richard
Člen
Avatar
Odpovídá na patulka.k
Richard:18.9.2015 10:05

Ono není co řešit, phpmyadmin samozřejmě funguje správně, chyba je někde v postupu.
Databáze musí mít nastavenou utf8 (90% pravděpodobnost chyby, jelikož to často není default), řádek musí mít nastaveno utf8, soubory musí být v utf8 a spojení musí být v utf8.

Editováno 18.9.2015 10:05
Nahoru Odpovědět 18.9.2015 10:05
$action = $_GET['Life']; | Když dáš mínus, napiš proč!
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Odpovídá na patulka.k
Matúš Petrofčík:18.9.2015 10:31

U mna to nakoniec bola chyba v kóde PHP, kedy som pri pripojení na databázu nedal vedieť že chcem používať UTF-8 a namiesto stringu "UTF-8" som posielal NULL

Btw hned druhý komentár čo som napísal je hlúuuuposť!!! sry za to

Nahoru Odpovědět 18.9.2015 10:31
obsah kocky = r^2 ... a preto vlak drnká
Avatar
katrincsak
Člen
Avatar
Odpovídá na purity00
katrincsak:18.9.2015 10:37

Je velice dobré mít nastavený i samotný soubor na UTF-8, ale ne jenom pro html výstup, ale i samotný soubor pro script, který se s tím pak musí poprat.

  1. Mít všechny soubory nastavené na kódování UTF-8
  2. Mít v hlavičce html souboru nastavené UTF-8, aby se vědělo v čem to má "server" interpretovat.
  3. Mít mysql/databázi/ta­bulky nastavené na UTF-8..

Na ty soubory používám ale kódování UTF-8 bez BOM a formát Dos/Windows.

Dříve jsem se s tím pral podobně, ale jakmile mám vše opravdu na UTF-8, tak je skoro nemožné, aby se něco vypisovalo jinak.

Nemám ale zkušenost s nastavováním vlastního serveru a nevím co lze vše ovlivnit ;-)

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 18.9.2015 10:37
Avatar
patulka.k
Člen
Avatar
patulka.k:18.9.2015 13:17

já už jsem zkusil snad všechno tak pošlu screen kodu a vypisu v phpmyadmin a jak se to zobrazuje na webu. doufám, že neporušuju nějaká pravidla když vložim odkaz, chtěl jsem obrázek, ale to asi nejde.

http://www.imgup.cz/…kod_utf8.png

http://www.imgup.cz/…is_phpmy.png

 
Nahoru Odpovědět 18.9.2015 13:17
Avatar
patulka.k
Člen
Avatar
patulka.k:18.9.2015 16:33

bohužel nejde ani edit tak musím dát další příspěvek...

už jsem na to přišel, kde byl problém.

Když jsem vytvářel DB a tabulky tak jsem jim nastavil utf-8 to je sice v pořádku, ale ještě to chtělo před příkazem INSERT_INTO ( např v jiném souboru) dát před tímto příkazem:

mysqli_query($spo­jeni,"SET NAMES 'utf8'");

takže nakonec to byla chyba v tom kodování, ale kdo to moh vědět :) tak sry za spam klidně smažte ...

každopádně díky za rady

 
Nahoru Odpovědět 18.9.2015 16:33
Avatar
Martin Bubník:16. července 20:13

Mám problém s ukládáním diakritiky do databáze a výpis diakritiky z ní..
Všechny sloupce v tabulce mám nastavené porovnávání na

utf8_czech_ci

a tabulku samotnou taky.
V mém případě mám u formuláře login a registration nastavené na začátku kódu

<meta charset="utf-8">

.. Nevím co dál.. Přiložím zde zdrojáky, které s tím souvisí a kdyby vám zdrojáky přišli divný že tam chybí hodně věcí, tak mám udělané stránkování, takže to je ten důvod..

registrace:

<?php
include "./db.php";
?>

<?php

if (isset($_GET["failed"])) {
        $msg = "";
        switch ($_GET["failed"]) {
                case "1":
                        $msg = "Uživatelské jméno musí obsahovat alespoň 3 znaky.";
                        break;
                case "2":
                        $msg = "Jméno musí obsahovat alespoň 3 znaky.";
                        break;
                case "3":
                        $msg = "Příjmení musí obsahovat alespoň 3 znaky.";
                        break;
                case "4":
                        $msg = "Email je zadán špatně.";
                        break;
                case "5":
                        $msg = "Heslo musí obsahovat více jak 5 znaků.";
                        break;
                case "6":
                        $msg = "Hesla se neshodují.";
                        break;
                case "7":
                        $msg = "Datum narození musíte zadat v formátu dd/mm/yyyy.";
                        break;
                default:
                        # code...
                        break;
        }

        if (isset($msg)) {
                echo "<script type=\"text/javascript\"> alert(\"". $msg ."\") </script>";
        }
}

?>

<meta charset="utf-8">
<form method="post" action="./login-registration_action/action_registration.php" style="position: absolute;
                                                                                                                        top: 300px;">
        <input type="text" name="username" placeholder="Uživatelské jméno" required><br>
        <input type="text" name="name" placeholder="Jméno" required><br>
        <input type="text" name="lastname" placeholder="Příjmení" required><br>
        <input type="text" name="email" placeholder="E-mail" required><br>
        <input type="password" name="password" placeholder="Heslo" required><br>
        <input type="password" name="password_check" placeholder="Heslo znovu" required><br><br>

        <b>Jakého jste pohlaví?</b><br>
                <input type="radio" name="gender" value="muz" checked>Muž<br>
                <input type="radio" name="gender" value="zena">Žena<br>
                <input type="radio" name="gender" value="jine">Jiné<br><br>

        <b>Kdy jste se narodil/a?</b><br>
                <input type="text" name="birth" placeholder="dd/mm/yyyy" required>
        <br><br>

        <input type="submit" name="submit" value="Zaregistrovat se">
</form><br><br><br>

registrace_action:

<?php
session_start();
include "../db.php";


$username = $_POST["username"];
$name = $_POST["name"];
$lastname = $_POST["lastname"];
$email = $_POST["email"];
$password = $_POST["password"];
$password = hash("sha256", $password);

$password_check = $_POST["password_check"];
$password_check = hash("sha256", $password_check);
$gender = $_POST["gender"];
$birth = $_POST["birth"];


//podmínky pro USERNAME
if (strlen($username) <= 2) {
        header("location: ../index.php?stranka=registration&failed=1");
}


// podmínky pro NAME
if (strlen($name) <= 2) {
        header("location: ../index.php?stranka=registration&failed=2");
}



// podmínky pro LASTNAME
if (strlen($lastname) <= 2) {
        header("location: ../index.php?stranka=registration&failed=3");
}



// podmínky pro EMAIL
if (strstr("@", $email) || strstr(".cz", $email) || strstr(".com", $email) || strstr(".sk", $email)) {
        header("location: ../index.php?stranka=registration&failed=4");
}



// podmínky pro PASSWORD
if (strlen($_POST["password"]) < 5) {
        header("location: ../index.php?stranka=registration&failed=5");
}

if ($_POST["password_check"] != $_POST["password"]) {
        header("location: ../index.php?stranka=registration&failed=6");
}



//podmínky pro BIRTH
$date = date_create_from_format('d/m/Y', $birth);

if ($date === false) {
        header("location: ../index.php?stranka=registration&failed=7");
}

        $sqldotaz = "INSERT INTO basket_users (username_user ,name_user, lastname_user, email_user, password_user, gender_user, birth_user) VALUES (:username, :name, :lastname, :email, :password, :gender, :birth)";
    $sqlProvedeni = $db->prepare($sqldotaz);
    $sqlProvedeni->execute(array(":username" => $username, ":name" => $name, ":lastname" => $lastname, ":email" => $email, ":password" => $password, ":gender" => $gender, ":birth" => $birth));

        echo "<script type=\"text/javascript\"> alert(\"Byl jste úspěšně zaregistrován.. Nyní se přihlašte..\") </script>" . "<a href=\"../index.php\">Zpět</a>";

//}
?>

přihlášení:

<?php
        include "./db.php";
?>

<!DOCTYPE html>
<html>
<head>
        <title>login</title>
        <meta charset="utf-8">
</head>
<body>
<?php

        if (isset($_GET["failed"])) {
                echo "<script> alert(\"Zadal jste špatně uživatelské jméno nebo heslo..\") </script>";
        }

?>

<form method="post" action="./login-registration_action/action_login.php" style="position: absolute;
                                                                                                                                                        top: 300px;">
        <input type="text" name="username" placeholder="Uživatelské jméno" required>
        <input type="password" name="password" placeholder="Heslo" required>
        <input type="submit" name="login" value="Přihlásit se">
</form>
</body>
</html>

přihlášení_action:

<?php
include "../db.php";
session_start();

    $username = htmlspecialchars($_POST["username"]);
    $password = $_POST["password"];
        $password = hash("sha256", $password);


    $sqlDotaz = "SELECT * FROM basket_users WHERE username_user = :username AND password_user = :password LIMIT 1"; //počet záznamů
    $sqlProvedeni = $db->prepare($sqlDotaz);
    $sqlProvedeni->execute(array(":username" => $username, ":password" => $password));


        if ($sqlProvedeni->rowCount() == 1) { // když se přihlašovací údaje rovnají jednomu řádku v tabulce, takže uživatel s takovými údaji existuje, tak =>

            $result = $sqlProvedeni->fetch(PDO::FETCH_ASSOC); // vrací pole indexované podle sloupce ID_USER a vrátí sadu výsledků
            $id_user = $result["id_user"];
            $username_user = $result["username_user"];
            $name_user = $result["name_user"];
            $lastname_user = $result["lastname_user"];
            $email_user = $result["email_user"];
            $password_user = $result["password_user"];
            $gender_user = $result["gender_user"];
            $birth_user = $result["birth_user"];


            $_SESSION["user"] = array($_SESSION["id_user"] = $id_user,
                                        $_SESSION["username_user"] = $username_user,
                                        $_SESSION["name_user"] = $name_user,
                                        $_SESSION["lastname_user"] = $lastname_user,
                                        $_SESSION["email_user"] = $email_user,
                                        $_SESSION["password_user"] = $password_user,
                                        $_SESSION["gender_user"] = $gender_user,
                                        $_SESSION["birth_user"] = $birth_user);

            header("location: ../index.php");
        } else {
            header("location: ../index.php?stranka=login&failed");
        }

?>
 
Nahoru Odpovědět 16. července 20:13
Avatar
Marek Uhlik
Člen
Avatar
Odpovídá na Martin Bubník
Marek Uhlik:16. července 22:07

Hele jsem začátečník v php ,ale podobný problém jsem měl taky a vyřešil jsem ho tak že ve scriptu db.php jsem nastavil na utf-8 a fungovalo to.Já to tedy dělal přes mysql takže mysql_set_char­set('utf8') a v PDO by šlo
$dbt->exec('SET NAMES utf8')

 
Nahoru Odpovědět 16. července 22:07
Avatar
SolusLupusUmbra
Redaktor
Avatar
Odpovídá na Martin Bubník
SolusLupusUmbra:17. července 7:56

Doplnil bych Marka Uhlíře, je potřeba nastavit znakovou sadu přenosu dat z databáze => tři nastavení znakové sady - v databázi, ve stránce a přenosu

Editováno 17. července 7:57
 
Nahoru Odpovědět 17. července 7:56
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 25 zpráv z 25.