Diskuze: Znaková sada databáze
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 28 zpráv z 28.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
skús
mysql_query("set names CP1250")
Máš to v trochu divném pořadí. Nejprve má být zápis do databáze (zpracování POST) a pak teprve formulář. Takhle je problém se v tom vyznat.
Nejspíš je chybně založena tabulka s implicitní švédskou znakovou sadou. Před založením je potřeba se přepnout na českou. Používám výhradně UTF8 (doporučuji), takže pro 1250 si budeš muset přesné znění někde najít.
Inak ovládač mysql ktorý používaš je zastaraný. Skús PDO. A znakovú sadu používaj utf-8.
To je ono. Ten příkaz se musí zadat hned po každém otevření databáze, ještě před založením tabulek.
Takhle ne. Místo řádku
$clanek=$_POST["clanek"];
patří
$clanek=mysql_real_escape_string($_POST["clanek"]);
na funkci addslashes() je lepší v tomhle kontextu raději
zapomenout.
Musíš tu původní tabulku smazat a vytvořit znovu s CP1250 (nebo raději rovnou UTF8).
Možná ten člověk bude chtít napsat větu o nakladatelství O´Reilly a v tu chvíli se ti systém zhroutí. I důvěryhodné texty je nutné ošetřit.
Děkuji za radu, bohužel jsem srovnával jen tabulku smazal jsem databázi, porovnání jsem dal na utf8 a databáze je na plno funkční.
Děkuji.
My tady jen věštíme z křišťálové koule, protože nevidíme, jestli sis tu tabulku nezaložil opět špatně. Zkus sem poslat, co ti vypíše dotaz
SHOW CREATE TABLE tabulka;
Vše již funguje správně.
Ok
CREATE TABLE clanky ( id int(255) NOT NULL
AUTO_INCREMENT, clanek varchar(4000) COLLATE utf8_czech_ci NOT
NULL, PRIMARY KEY (id)) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT
CHARSET=utf8 COLLATE=utf8_czech_ci
To vypadá dobře. Jen místo int(255) bych raději dal obvyklejší int(11) a místo varchar(4000) jednodušší typ text.
Tím to však nekončí. Bylo by dobré upravit i zbytek aplikace na UTF8, aby se ta kódování nepohádala.
Aha supr, děkuji upravím.
Ještě jsem se chtěl zeptat, chtěl bych ošetřit to aby se to text pole nezaslalo prázdné.Zkusil jsem
if(empty($_POST["clanek"])){
echo"Textové pole nebylo vyplněné."
}
A ono to bohužel nejde 
Pomohl by si mi prosím ještě s tímto?
Viděl bych to zhruba viz kód. Podle mne je mnohem výhodnější vložit ukládání článku na začátek skriptu místo na konec, protože chybové hlášení můžeš hned vypsat. Třídy MyConnectDB a MySession si samozřejmě napiš podle sebe.
A zapomeň na funkci die(). Vyskytuje se už jen ve starých učebnicích.
<?php
session_start();
$db = new MyConnectDB();
$session = new MySession();
if (isset($_POST['clanek'])) {
try {
if (empty($_POST['clanek']))
throw new Exception("Textové pole nebylo vyplněno.");
$db->addClanek($_POST['clanek']);
$session->setMessage("Článek byl úspěšně uložen");
header('Location: .');
exit();
} catch (Exception $e) {
$session->setMessage($e->getMessage());
}
}
echo <<<EOT
<!DOCTYPE html>
<html>
<head>
<title>Titulek</title>
</head>
<body>
<h2>$session</h2>
Formulář
<body>
</html>
EOT;
Zvolil bych něco jednodušího, nejsem až tak pokročilý jak ty si napsal
kod jestli mě chápeš, jsem pouhý začátečník 
Chápu a proto jsem ti ten kód napsal takto. V tom mém je skoro všechno co potřebuješ v jednom souboru. Tedy až na ty chybějící třídy, které bych k tomu také mohl případně napsat.
Ještě jsem trochu upravil názvy proměnných, aby se to lépe četlo.
To není jen pro tebe. Už jsem to chtěl napsat dávno jako minimalistický redakční systém. Dnes na něj konečně přišla řada. Samozřejmě se to dá rozšiřovat dle potřeby, rozdělit do souborů podle tříd, samostatně umístit šablonu apod. To už si však každý udělá podle sebe.
Zobrazeno 28 zpráv z 28.