IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
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
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
19.11.2014 1:33
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na purity00
Jan Lupčík: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
19.11.2014 6:36
TruckersMP vývojář
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 Jan Lupčík 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
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
Odpovídá na purity00
Neaktivní uživatel: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
Neaktivní uživatelský účet
Avatar
purity00
Člen
Avatar
Odpovídá na Neaktivní uživatel
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
Neaktivní uživatel:19.11.2014 9:40

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

Nahoru Odpovědět
19.11.2014 9:40
Neaktivní uživatelský účet
Avatar
David Hartinger
Vlastník
Avatar
David Hartinger: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
19.11.2014 17:04
New kid back on the block with a R.I.P
Avatar
Odpovídá na David Hartinger
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 Hartinger
Vlastník
Avatar
Odpovídá na Matúš Petrofčík
David Hartinger: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
19.11.2014 17:14
New kid back on the block with a R.I.P
Avatar
Odpovídá na David Hartinger
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
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
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í
+2,50 Kč
Ř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.7.2017 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.7.2017 20:13
Avatar
Marek Uhlik
Člen
Avatar
Odpovídá na Martin Bubník
Marek Uhlik:16.7.2017 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.7.2017 22:07
Avatar
Ondřej Němec
Tvůrce
Avatar
Odpovídá na Martin Bubník
Ondřej Němec:17.7.2017 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.7.2017 7:57
Nahoru Odpovědět
17.7.2017 7:56
Život by byl mnohem jednodušší, kdybychom k němu měli zdrojový kód.
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.