Převod porovnání databáze do utf-8 – MySQL – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Převod porovnání databáze do utf-8 – MySQL – Fórum – Programujte.comPřevod porovnání databáze do utf-8 – MySQL – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
fix0
Stálý člen
15. 1. 2020   #1
-
0
-

Ahoj všem, prosím o radu.

Do databáze jsem špatným způsobem nahrával data a kvůli tomu mám teď databázi plnou hieroglyfů jako třeba: "DolejÅ¡ Å¡kolení"

Dotaz zní: Jak to opravit převodem hieroglyfů do správného tvaru "Dolejší školení" ideálně přímo databází?

Děkuji všem za tip
 

Nahlásit jako SPAM
IP: 92.240.177.–
gna
~ Anonymní uživatel
1850 příspěvků
16. 1. 2020   #2
-
+1
-
Zajímavé
fix +

Je otázka v jakém stavu tu databázi máš. Jestli jsi tam sypal data v různém kódování a v různém stavu nastavení databáze a/nebo spojení, tak to úplně automaticky nepůjde.

Takže asi napsat skript, který všechna textová pole projde a nějak analyticky je přeformátuje a přeuloží. Nebo třeba databázi/tabulku dumpnout do texťáku, který ručně (hromadně) poopravuješ a naimportuješ zpátky.

Nahlásit jako SPAM
IP: 213.211.51.–
fix0
Stálý člen
16. 1. 2020   #3
-
0
-

Data pořád stejným způsobem.

Klidně to upravím v textáku, už jsem to tak dělal v jednodušším případě, kdy nebylo tolik dat. Nicméně k tomu bych potřeboval s jistotou informaci pro překlad písmen např:

š =Å¡

í =  í

....

Na základě já pak můžu použít třeba jen plošnou funkci nahradit přes celý dokument.

Nahlásit jako SPAM
IP: 31.30.173.–
gna
~ Anonymní uživatel
1850 příspěvků
16. 1. 2020   #4
-
+1
-
Zajímavé
fix +

Co má být co by sis domyslel z kontextu, ale je to teda utf8, akorát interpretované jako (asi) latin1.

Jestli potřebuješ konverzní tabulku, tak si ji můžeš vygenerovat (toto je Python; v PHP asi funkcí iconv) 

>>> for c in 'ěščřžýáíéů':
...     print(c, c.encode(), c.encode().decode('latin1'))
... 
ě b'\xc4\x9b' Ä
š b'\xc5\xa1' Å¡
ř b'\xc5\x99' Å
ž b'\xc5\xbe' ž
ý b'\xc3\xbd' ý
á b'\xc3\xa1' á
í b'\xc3\xad' í
é b'\xc3\xa9' é
ů b'\xc5\xaf' ů
Nahlásit jako SPAM
IP: 213.211.51.–
gna
~ Anonymní uživatel
1850 příspěvků
16. 1. 2020   #5
-
0
-

To ale v případě, že máš tu databázi opravu rozvrtanou. Možná jsi sypal utf8 do sloupců v latin1 (default MySQL) a při konverzi se ti vícebajtové znaky překopaly. Pořád je možnost, že jsou ty texty správně a jen je blbě zobrazuješ.

Nahlásit jako SPAM
IP: 213.211.51.–
peter
~ Anonymní uživatel
3981 příspěvků
17. 1. 2020   #6
-
0
-

Bylo by uplne super, kdybys byl konkretni a napsal, co presne jakymi prikazy si delal a ukazku 2-3 radky zdrojoveho textu.
Obvykla chyba je, ze pri sql dumpu export / import si uzivatel nepohlida default pripojeni pro SET NAMES. Soubor ma utf8. Database muze mit default nastavene latin1. Tabulka v db utf8. On ti to pak prekodovava z utf8 do latin1 a do tabulky to uklada jako latin1. (pro default set names latin1)
V php se pak pripojis k db. Nastavis si utf-8 a database ti z tabulky posle nesmysly.
A nebo to rikam spatne. Ale tak nejak to je :)

Muzes zkusit se podivat na php header() jeste. Pokud mas na obrazovce tyhle znacky a neni tam prohlizec s kodovanim utf, pak by v prohlizeci stacilo prepnout na utf. A nebo v php zasilat ze serveru spravnou header, ze se jedna o utf.
Mozna to rikam nesrozumitelne. Spatne se to popisuje :)
 

Nahlásit jako SPAM
IP: 2001:718:2601:258:4dbc:3838:5a25:f2e0...–
fix0
Stálý člen
19. 1. 2020   #7
-
0
-

Edit: už jsem to asi našel: https://www.i18nqa.com/…8-debug.html

gna: Děkuji, ještě bych potřeboval ostatní písmena jako třeba ĚŠČŘŽÝÁÍÉÚŮúů

gna #2: No nepoužíval jsem SET NAMES utf8, a je dost možný, že databáze měla skutečně latin1, už se mi to stalo. Při použití set names se data ukládají správně.

pater: možná tě chápu a možná ne jistý si tím nejsem, hlavní je, že vím co dělat (alespoň myslím):

1. převést databázi, tabulky i sloupce na utf8_czech_ci (jinak mi nefungovalo řazení řetězců vč. slov s diakritikou. Někde mám utf8_czech_ci a někde mám utf8m4_czech_ci, výjimečně ještě utf8m4_general_ci a utf8m4_general_ci, snad tohle mixován nijak nevadí a je to navzájem kompatibilní, uvidím, kdyžtak to sjednotím napříč celou databází, pokud to nebude dělat dobrotu

2. Opravit stávají zakodovanou databázi z latin1 -> utf-8


Ä -> ě

Å¡ -> š

...

apod, potřeboval bych zbytek, jinak bych to musel z kontextu dat nějak odhadovat, a luštit, a když to odhadnu špatně, tak už tu databázi do kupy nikdo nedá.

3. Postupně všude přidávat SET NAME před každý SQL dotaz.

Nahlásit jako SPAM
IP: 31.30.173.–
peter
~ Anonymní uživatel
3981 příspěvků
20. 1. 2020   #8
-
0
-

Pokud mas zalohu importovane database, jakoze rozumny clovek si zalohu zalohuje :) Tak podle id se da provest update tech dat, clanku nebo, co to je. Neni treba delat harakiri s diakritikou, kdyz nemusis. To je jistejsi cesta

Nebo by slo udelat script, ktery se k db pripoji pres default kodovani (SET NAMES latin1) ale na stranku to vypise pres header (… utf8). To by melo zobrazit diakritiku asi dobre.
Pokud ano, tak pri updatu zmenis set names na utf8 a nasoukas to tam.
Ale delal bych si to v pokusne db nekde bokem, neprepisovat data, dokud je nemas nekde ve spravnem kodovani.

Nahlásit jako SPAM
IP: 2001:718:2601:258:4dbc:3838:5a25:f2e0...–
fix0
Stálý člen
20. 1. 2020   #9
-
0
-

K čemu by mi byla záloha? Když obnovím, zálohu, přijdu akorát o data, nic se tím nezmění, jen těch zakodovaných dat bude o pár záznamů méně.

S tou automatickou opravou to asi myslíš dobře, ale je to docela velký robustní systém, ve kterém mám už sám bordel, není dělaný objektově, spíš mraky skriptů kde jsou třeba u 50 skriptů dotazy na databázi i když vlastně ne nedává mi smysl co mi radíš.

Zopakuji problém:

  • Informace na webu jsou v pořádku
  • Data v databázi jsou ale zakódované
  • Což mi doposud nevadilo, ale teď mi to začalo vadit, protože chci s daty pracovat již přímo v databázi zakodování mi dělá neplechu.
  • Potřebuji tedy opravit data v databázi, aby se v ni data zobrazovaly správně i s diakritikou.

Nahlásit jako SPAM
IP: 31.30.173.–
gna
~ Anonymní uživatel
1850 příspěvků
20. 1. 2020   #10
-
0
-

Dříve nebo později to rozjebeš tak, že přijdeš o data. Záloha ti bude k tomu, abys je mohl obnovit.

Text je vždycky nějak kódovaný a pro správné zobrazení je potřeba vědět jak. Někde ti nastavení nesedí s obsahem.

Nahlásit jako SPAM
IP: 213.211.51.–
fix0
Stálý člen
21. 1. 2020   #11
-
0
-

Samozřejmě mám denní zálohy s historií dvou měsíců. :-)

Text je vždycky kódovaný? Ale když nastavím set names před všechny dotazy, tak v databázi budu mít přece nezašifrovaný text a na webu taky.

Takže slovo "Počítač" na webu = slovo "Počítač" v databázi, bez hieroglyfů. A o to mi jde.

Ale tak já na to teda kašlu nechám tam hieroglyfy a nebudu používat SET NAMES, nebudu se tím vůbec zabývat a nechám to jak to je, když to funguje. :-D

Nahlásit jako SPAM
IP: 31.30.173.–
peter
~ Anonymní uživatel
3981 příspěvků
21. 1. 2020   #12
-
+1
-
Zajímavé
fix +

Ok. takze na webu je to dobre. V databazi je to nejak, ale zobrazi se to dobre.
Takze data mas dobre, neni treba provadet opravy po jednom znaku. Proste je vytahni najednou.
Zjisti, jake prikazy pouziva web pro databazi (jestli pouziva SET NAMES a jake kodovani nebo zadne, pak zjisti default kodovani sql, ve kterem ti to posila). Zjisti, jak ti to web zobrazuje. A prekoduj to.

Cili, jak jsem psal, priklad.
Db ma default kodovani LATIN1.
Web nema SET NAMES, takze se pripojuje k db s kodovanim LATIN1. (A uklada to do tabulky, ktera ma treba UTF, na tom vubec nesejde, protoze to uklada do tabulky v latin1; informace o kodovani v tabulce je pouze informativni, nemusi odpovidat tomu, jak jsou kodovany data).
Na web to zobrazujes jako utf8, treba, php header(...utf8). A zobrazi se znaky spravne, diakritika.

Cili, ty musis udelat to, ze php scriptem vytahnes data a nasoukas je zpet. A pak opravis ve svem programu SET NAMES na utf8. Mezitim by bylo dobre, aby jsi cely program zablokoval, bud prepnout do nejakeho rezimu udrzby v programu, pokud to umoznuje. A nebo pres htaccess vsechno presmeroval na nejakou html stranku, oznamujici udrzbu. At ti nam nikdo needituje.
V programu pak mas
SET NAMES latin1 nebo nic. Vytahnes data. Nastavis SET NAMES na UTF. Ulozis data. Kompletne cele tabulky i s id-autoincremencem a tak. (mozna je prikaz na kopii cele tabulky, ale nevim, zda se u toho da nastavit kodovani)
(ted by se to melo v phpmyadminu nebo nejakem tom programu na databazi zobrazovat ok)
Doporucuji zalozit si duplicitni tabulky nebo databazi bokem a cely prevod realizovat tam. A pak v programu nastavit, ze ma zobrazovat data z jine database.


Nevim, zda jsem to popsal dobre. Zkus treba poslat vzorek exportu. A pridej informaci o nastaveni db a strukturu tabulky. Priklad:
 

-- phpMyAdmin SQL Dump
-- version 4.0.10deb1
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Feb 18, 2019 at 10:39 AM
-- Server version: 5.6.33-0ubuntu0.14.04.1-log
-- PHP Version: 5.5.9-1ubuntu4.21

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */; -- tento radek je dulezity

--
-- Database: `EvidenceActivity`
--

--
-- Table structure for table `s_link`
--

CREATE TABLE IF NOT EXISTS `s_link` (
  `idpril` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `iduser` int(10) unsigned NOT NULL DEFAULT '0',
  `idsem` int(10) unsigned NOT NULL DEFAULT '0',
  `idpred` int(10) unsigned NOT NULL DEFAULT '0',
  `idtmp` int(10) unsigned NOT NULL DEFAULT '0',
  `nazev` varchar(255) NOT NULL DEFAULT '',
  `link` varchar(255) NOT NULL DEFAULT '',
  `logdate` date NOT NULL DEFAULT '0000-00-00',
  `loguser` int(10) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`idpril`),
  KEY `idsem` (`idsem`),
  KEY `idpred` (`idpred`),
  KEY `idtmp` (`idtmp`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=193 ; -- a tento radek je dulezity (teda, spis informativni, ale kdybych delal pokus na tvych datech, jak si mam nastavit tabulku a ladit do te doby nez mi to phpmyadmin zobrazi ok)

Tam jsem oznacil 2 radky, ktere jsou dulezite.

Nahlásit jako SPAM
IP: 193.84.207.–
fix0
Stálý člen
21. 1. 2020   #13
-
0
-

Pročistil jsem to o zbytečnosti a ukázal ti jeden příklad tabulky, který reprezentuje všechny ostatní, všechno ostatní by mělo být po tomto vzoru stejné, ale neručím za to, zkusím vygooglit dotaz, který vypíše seznam kde je jaké porovnání a odhalím tak ,jestli je všude stejné:

-- phpMyAdmin SQL Dump
-- version 4.4.15.10
-- https://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Jan 21, 2020 at 11:02 AM
-- Server version: 5.5.64-MariaDB
-- PHP Version: 5.4.16

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Database: `md_391lhU7n1k`
--

-- --------------------------------------------------------

--
-- Table structure for table `archiv`
--

CREATE TABLE IF NOT EXISTS `archiv` (
  `id` int(255) NOT NULL,
  `typ` varchar(255) COLLATE utf8_czech_ci NOT NULL,
  `druh` varchar(255) COLLATE utf8_czech_ci NOT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;

--
-- Table structure for table `druhy`
--

CREATE TABLE IF NOT EXISTS `druhy` (
  `id` int(11) NOT NULL,
  `druh` varchar(255) COLLATE utf8_czech_ci NOT NULL,
  `id_typu` int(11) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=276 DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;


INSERT INTO `skupiny` (`id`, `sada`, `popis`, ...) VALUES
(7, 'BIG admin', 'hlavní administrátor všeho', 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1),
(23, 'Root access', 'Prosím nikomu nepřiřazovat', 1, 2, 2, 2, 1, 2, 2, 1, 2, 2, 1, 1, 1, 1, 1, 2, 2),
(37, 'Revizní technik', 'Uživatelé, kteří mají užvatelské rozhranní šablony pro techniky.', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(38, 'Lhůtník - editace', 'může editovat ve lhůtníku', 1, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(39, 'Lhůtník - read only', 'Vidí lhůtník a nemůže editovat', 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);


/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Akorát mi není jasné, proč mě tlačíte do toho, abych ten zašifrovaný bordel uvnitř databáze řešil opravou přes PHP skript, v mých rukou by to dopadlo zřejmě špatně. Funguji spíše style pokus a omyl. :-D Přijde mi mnohem jednodušší v dumpu CTRL + H ("í","Ã");("é","é");("ů","ů");... A až se diakritika opraví, nahrát data zpět na server a všude nastavit set names utf8. Pořád si melu svou, já vím, ale je to asi na mě složitý problém, protože nechápu vaše vysvětlení, proč bych to neměl dělat takhle jednoduše a měl bych to řešit jinak, když tohle je práce na 10 minut, přičemž přes PHP bych jen 30 minut googlil jak by se to dalo udělal a dalších 30 minut to furmuloval, aby to u mě fungovalo a když to po hodině zkusím, tak si to rozhasim ještě víc. :-D

Že b proto, že to není jen o ěščřžýáíéůúĚŠČŘŽÝÁÍÉŮÚ, ale i dalších znacích, ale hádám, že nikdo neměl žádnou motivaci používat nějaké speciálity. Ještě asi třeba zavynáč apod, ale to už bych potom vyřešit SQL dotazem v příslušném sloupečku.
 

Nahlásit jako SPAM
IP: 31.30.173.–
gna
~ Anonymní uživatel
1850 příspěvků
21. 1. 2020   #14
-
+1
-
Zajímavé
fix +

To není zašifrovaný bordel. Už jsem ti psal, že to je blbě zobrazené utf8. Sám jsi sem dal odkaz, ze kterého bys to mohl pochopit.

V lepším případě ti bude stačit se na ten dump databáze podívat v editoru podporujícím utf8 a bude to správně.

V horším případě máš ten text kódovaný dvakrát (nebo jinak rozvrtaný), takže budeš muset zkonvertovat data a opravit skripty.

Nahlásit jako SPAM
IP: 213.211.51.–
fix0
Stálý člen
26. 1. 2020   #15
-
0
-

Ve finále jsem to nechal, jak to je, protože jsem zjistil, že mi je vlastně úplně jedno, jak vypadají data v databázi. S daty budu nadále pracovat výhradně z webu, aniž bych lezl do databáze.

Každopádně děkuji moc všem za váš čas a trpělivost se mnou. Pro příště už alespoň vím, jak se tomuhle vyhnout.

Nahlásit jako SPAM
IP: 178.238.41.–
Řešení
peter
~ Anonymní uživatel
3981 příspěvků
28. 1. 2020   #16
-
+1
-
Zajímavé
fix +
Vyřešeno Nejlepší odpověď

jjj, tak jsem to myslel, ze data jsou v db spravne, jen spatne nakodovana. Cili, bud to neresit a nebo si do budoucna pripravit nejaky php script. A ten scrip potrebujes prave pro spravny dump. a nebo si nastav tvuj dumpovaci program, aby pouzil stejne kodovani, jake pouziva tvuj webovy program. Ja tohle dlouho nedelal, tak ti moc neporadim. Idealne s googlem a manualem k tomu dumpu se porad.

Ve tvem dumpu to vypada, ze default pouziva db 

 /*!40101 SET NAMES utf8mb4 */; -- default kodovani je utf8mb4 (4-Byte UTF-8 Unicode Encoding)
CHARSET=utf8 COLLATE=utf8_czech_ci (Alias for utf8mb3, 3-Byte UTF-8 Unicode Encoding)

jak psal gna, mas to nejspis 2x prekodovane do utf.

2) Muzes nastavit tvuj phpmyadmin, aby se k db pripojoval s jinym set names. To by mohlo jit klikanim. pripadne drobny zasah do kodu.

Nahlásit jako SPAM
IP: 193.84.199.–
peter
~ Anonymní uživatel
3981 příspěvků
28. 1. 2020   #17
-
0
-

Samozrejme, jestli si to chces prekodovat nahrazenim, nikdo ti nebrani.
A tez, jak psal gna, kdyz pouzijes program, co umi otevirat utf, mozna se to zobrazi spravne. Pripadne v nem umis prepnout, ze ma dane kodovani povazovat za utf. Pripadne by tam mozna stacilo pridat BOM znak. Ale tomu moc neverim, ja bych sel do spravneho dumpu. Otazka asi 5 minut.

Nahlásit jako SPAM
IP: 193.84.199.–
fix0
Stálý člen
28. 1. 2020   #18
-
0
-

Je to první program co sem dělal. Je bez OOP, veškeré úpravy jako přidání SET NAMES jsou poměrně složité, jelikož je spojení s databází asi ve 250 skriptech. :-D Vypadá to jako hodně, ale polovina z nich je nepoužívaný bordel a já nevím co se používá a co ne, no prostě program začátečníka no.

Tedy prosím neřešit, díky moc všem za rady a trpělivost.

Nahlásit jako SPAM
IP: 31.30.173.–
Kit+15
Guru
28. 1. 2020   #19
-
0
-

#18 fix
To snad ne! Připojení k databázi mám vždy v jediném skriptu. 250 připojení si ani nedovedu představit a už vůbec si nedovedu představit, že jsou v nich správně nastaveny všechny potřebné parametry a ošetřeny chyby.

Nahlásit jako SPAM
IP: 46.135.76.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
fix0
Stálý člen
28. 1. 2020   #20
-
0
-

Samozřejmě ošetřené není skoro nic. :-)

Jak říkám, první program. Nyní už umím OOP (nepoužívám jmenné prostory, interface ani polymorfismus), ale mám oddělenou logiku ve svých třídách a snažím se představovat si data jako objekty.

Následovná je vytvořit si takový vlastní falešný framework s pokusem udělat si třídu např pro práci s databází, s metodou na přidání, smazání a update pro libovolný počet vstupů (sloupců tabulky apod.)

Časem třeba dospěju k používání něčeho jako Nette.

Nahlásit jako SPAM
IP: 31.30.173.–
Kit+15
Guru
28. 1. 2020   #21
-
+1
-
Zajímavé
fix +

#20 fix
Zkusil jsem tvůj dump prohnat filtrem 

recode u8..l1 <fix.sql

a vylezl mi z toho docela obstojný text v UTF-8 u kterého by se opravily jen znaky "ř", místo kterých je "TM"

Nahlásit jako SPAM
IP: 46.135.76.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
peter
~ Anonymní uživatel
3981 příspěvků
6. 2. 2020   #22
-
0
-

"spojení s databází asi ve 250 skriptech"
A? To je slozite do souboru vlozit include_once 'sql.php'; a opravit sql prikaz? Muzes si tam pro kazdy typ sql prikazu definovat pomocnou funkci a pak zamenit vzdy stejny prikaz a ostatni vynechat. Sice to nebude eno-nuno, ale porad lepsi mit to pod kontrolou v jedne sql.php nez na 250 mistech :)

Nahlásit jako SPAM
IP: 2001:718:2601:258:4dbc:3838:5a25:f2e0...–
peter
~ Anonymní uživatel
3981 příspěvků
6. 2. 2020   #23
-
0
-

uvedu priklad, ju? z mych kodu

require_once dirname(__FILE__). '/inc/forum_buttons_inc.php';
$btn_new = forumButton('thread_new', $fid);
---
 

<?php
// UTF-8
function forumButton($type='', $id='', $text='')	// text or id2
{
global $forum_threads, $forum_edit, $forum_messages;
$id = (integer)$id;
switch ($type)
	{
	case 'message_spam'  : return "<a href=\"".escapeHtml("/admin/junk.php?mid=" .escapeUrl($id))."\" class=\"btn btn-outline-secondary btn-sm\">spam</a>"; break;
	case 'message_reply' : return "<a href=\"".escapeHtml("$forum_edit?reply="   .escapeUrl($id)."&tid=".escapeUrl((integer)$text))."\" class=\"btn btn-outline-primary btn-sm\">odpovědět</a>"; break;
	case 'message_edit'  : return "<a href=\"".escapeHtml("$forum_edit?mid="     .escapeUrl($id))."\" class=\"btn btn-outline-success btn-sm\">upravit</a>"; break;//warning
	case 'message_delete': return "<a href=\"".escapeHtml("$forum_edit?delete="  .escapeUrl($id)."&fid=".escapeUrl((integer)$text))."\" class=\"btn btn-outline-danger btn-sm\" onclick=\"return confirm('Jste si jistí, že chcete vybranou zprávu smazat?')\">odstranit</a>"; break;
	case 'thread_reply'  : return "<a href=\"".escapeHtml("$forum_edit?tid="     .escapeUrl($id))."\" class=\"btn btn-outline-primary\">odpovědět</a>"; break;
	case 'thread_new'    : return "<a href=\"".escapeHtml("$forum_edit?fid="     .escapeUrl($id))."\" class=\"btn btn-outline-secondary ml-4\">nové vlákno</a>"; break;
	case 'thread_spam'   : return "<a href=\"".escapeHtml("/admin/junkf.php?tid=".escapeUrl($id))."\" class=\"btn btn-outline-secondary btn-sm\">spam</a>"; break;
	case 'thread_open'   : return "<a href=\"".escapeHtml("$forum_messages?tid=" .escapeUrl($id))."\" class=\"btn btn-outline-primary btn-sm\">zobrazit vlákno</a>"; break; // search
	case 'h1'            : return "<a href=\"support.php\">Podpora</a> :: <a href=\"".escapeHtml("$forum_threads?fid=" .escapeUrl($id))."\" >".escapeHtml($text)."</a>"; break;
	default: return ''; break;
	}
}

?>

A pred tim byl v kazdem souboru pro zobrazeni fora (pro kazde vlakno extra php) html kod vypisovany pres echo. Je jasne, ze kdyz pak chces na forku zmenit styly pro bootstrap, tak musis prepsat asi 30 souboru. Ted staci pro tlacitka 1. neni to sice uplne ono, cele forko nejak inteligentne, ale I ta trocha pomuze :)

----
    $replyBtn = "<a rel="nofollow" href=\"edit.php?tid=$t->tid&amp;reply=$v->mid\">odpovědět</a>";
    if (check_perms($v->mid)) {
      $editBtn = "<a rel="nofollow" href=\"edit.php?mid=$v->mid\">upravit</a> ";
      $deleteBtn = "<a rel="nofollow" href=\"edit.php?delete=$v->mid\" onclick=\"return confirm('Jste si jistí, že chcete vybranou zprávu smazat?');\">odstranit</a> ";
    } else {
      $editBtn = ''; $deleteBtn = '';
    }
 

Nahlásit jako SPAM
IP: 2001:718:2601:258:4dbc:3838:5a25:f2e0...–
fix0
Stálý člen
6. 2. 2020   #24
-
0
-

Jak jsem uvedl, je to můj první projekt z dob, kdy jsem ještě OOP neznal.

Teď už to řeším podobně jako ty. Díky za tip.

Nahlásit jako SPAM
IP: 31.30.173.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 2 hosté

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý