NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
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í.

Diskuze: Formulářové vyhledávání řetězců, které obsahují pevné mezery nevrací výsledky

V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
leos
Člen
Avatar
leos:28.8.2024 11:33

Ahoj všem,
ve snaze mít dobře čitelné obsahy webové stránky proháním vytvořené texty doplňovačem pevných mezer. To je prima, protože se na konci řádků nezalomí řetězce jako 50 cm nebo "příslušenství ke dřezovým bateriím". Ale zjistil jsem, že když do formuláře pro vyhledávání obsahu na webových stránkách zadám takový řetězec, z databáze se nic nevrátí, protože v mé MySQL tabulce je uložený jako 50 cm (vložil jsem zde místo mezery non-breaking space znak a nevím, jestli to tu bude vidět až post odešlu).

Když někdo hledá na mém webu výraz "50 cm", vyhledávací dotaz pošle do databáze příkaz: SELECT * FROM table WHERE field LIKE '%50 cm%' (tedy s normální mezerníkovou mezeru).

Kamarád mi poradil, ať nezalomitelné mezery do textů na web nevkládám, že to snad dělají jen paranoidní češtináři. Ale já už to viděl ve zdrojích textů (F12; Ctrl+u) na jiných webech mnohokrát. Moje otázka je, jestli je pravda, že vkládání pevných mezer vytvoří typograficky hezčí text, ale jinak je to spíše na škodu, protože to silně omezí dohledávání pomocí vyhledávacího formuláře? Popřípadě dá se to vyhledávání vyřešit jinak, než že budu při ukládání obsahu ukládat jeho kopii očištěnou od pevných mezer a vyhledávání uvnitř webu provádět na ní,? Netrápil se tu někdo už s takovým problémem, prosím?

Děkuji.

 
Odpovědět
28.8.2024 11:33
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:29.8.2024 20:28
  1. Kamarad ma pravdu. Ani se nedela odsazeni prvniho radku zleva, protoze muzes odsazovat odstavec zhora :)
  2. Da se to resit javascriptem, ktery to pro ctenare opravi.
  3. V pripade SQL misto LIKE je mozne pouzit regularni vyrazy, ale zpomali to vyhledavani asi 6x.
https://portal.matematickabiologie.cz/index.php?pg=zaklady-informatiky-pro-biology--databazove-systemy-v-biomedicine--vyhledavani-v-textu--regularni-vyrazy--pouziti-regularnich-vyrazu-v-databazi-oracle

SELECT  * FROM tabulka WHERE REGEXP_LIKE(sloupec,'reg. vyraz', modifikator)
SELECT  * FROM tabulka  WHERE REGEXP_LIKE (sloupec,  '[0123]?\d\.[01]?\d\.\d{2,4}', 'c');
SELECT  * FROM tabulka  WHERE REGEXP_LIKE (sloupec,  '(\w|\d)+( | )cm', 'c');

\w = zkak
\d = cislo digit
+ = opakuj 1-nekonecno
| = or ( \w|\d pismeno nebo cislo; take mozne zapsat jako [\w\d] nebo konkretni text) ( | ) = mezera nebo text  )
() = zavorky

cili, to znamena, hledej
- jakkoliv dlouhy text, obsahujici pismena a cisla
- ktery je nasledovany mezerou nebo ' '
- a konci textem 'cm'

Co je modifikator c ted nevim, ale slouzi to k volbe vyhledavaci funkce
 (jakoze to hleda do konce radku nebo pres vice radku... jsou prave
ruzne modifikatory, bude to v dokumentaci)

Nebo to jde napsat jeste takto: '5 cm|5 cm'
A nebo: sloupec LIKE '%50 cm%'  OR sloupec LIKE '%50\&nbsp\;cm%' // a tusim, ze tam musi byt lomitka nebo nejaky spesl znak, mozna %
 
Nahoru Odpovědět
29.8.2024 20:28
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:29.8.2024 20:38

Jako, kdyz se nad tim zamyslis, tak pridanim nbsp natahujes text, zabiras v db misto a vlastne nemas jistotu, co tam presne je. Vsechny podobne znaky je treba pri editaci spise odstranovat.

LIKE '5 cm' = 125 cm, 85 cm a take 5 cm

ale muze tam byt 5 + word-nezobrazitelny znak + cm - take se to nezalomi

nebo 5 + tabelator + konec radku + cm (ty to teda spravis, budiz, ale lepsi by
bylo to reg. vyrazem vsechno pri ukladani nahradit za mezeru)

nebo, casto lidi pouzivaji specialni znaky k teckam
'15.4.1995' '15. 4. 1995'
'15.+word+4.+word+1995'
pred, za, misto tecky carku a carek je nekolik variant, totez apostrofy. No,  katastrofa :)
Fakt, lepsi podobne znaky odfiltrovat, kdyz nejde o knizku nebo scenar
 
Nahoru Odpovědět
29.8.2024 20:38
Avatar
leos
Člen
Avatar
Odpovídá na Peter Mlich
leos:1.9.2024 10:22

Moc ti děkuji za srozumitelnou odpověď, Petře.
Ještě mě napadl podobný dotaz. Přečetl jsem si v pravidlech českého pravopisu, že když se zapisují rozměry předmětu (výrobku apod.) nemá se používat, a to kromě použití v korespondenci, znak x ("iks"), ale znak × (krát).

S ohledem na SEO si myslím, že většina lidí ještě netuší, jak znak × vyťukat na klávesnici /*Alt Gr + )*/, a proto budou hledat zboží s rozměry "5 krát 5 cm" zápisem 5 x 5 cm, nikoliv zápisem 5 × 5 cm.
No, a já blbec, se před lety naučil zapisovat rozměry podle pravidel českého pravopisu. Nyní vidím, že to byla asi chyba a budu to muset zpětně opravit(?).

Mimo jiné, snad to, že kolem znaku ×, popřípadě znaku x, se dělá odsazení, je už rozšířeno mezi lidmi většinově.

Takže otázka zní: Kdybys vlastnil e-shop, jak bys zapisoval rozměry výrobků s ohledem na to, aby zákazníci na tvém webu našli rozměr, který hledají?

Děkuji.

 
Nahoru Odpovědět
1.9.2024 10:22
Avatar
Peter Mlich
Člen
Avatar
Odpovídá na leos
Peter Mlich:2.9.2024 11:00

Pokud pouzijes font Arial (coz je pismo pro technickou dokumentaci), tak tam od pohledu ix a krat nerozeznas. Ani tady na forku.
Pro mne je uplne jedno, co lide pouziji, hlavne, kdyz to vetsina dokaze pochopit. Ja si treba zvykl nepouziva diakritiku, protoze jsou s ni problemy, ktere do dneska neodladili ani po 30 letech :) Nevidim prinos v tom zavadet novy znak jenom proto, ze nekdo vymyslel, ze misto hulkoveho pisma se bude pouzivat patickove times nebo jine ozdobne. Chapu smysl, oddelme znaky od symbolu.
Ja, jako programator, ti muzu rici, ze uplne nechapu matematicke symboly a proc pouzivaji asi 5 ruznych abeced a v kazde vyjadruji jinou skupinu uloh. Hlavne, zkus to pak napsat do programu. musim vymyslet ruzne preklady tech znaku z 1 znaku mas najednou 5. Na klavesnici to ani nejde napsat. Proste, silenost. Idealni by bylo, kdyby to, co je na klavesnici, se pouzivalo, jak v matice, tak cestine, chemii atd...

Proste bych uzivatelske vstupy osetril, prevedl na jednu formu a tu bych pouzival. totez u editoru. Dat to jako parametr, ktery projde stejnou kontrolou znaku. V jinem policku, popisek, bych to neresil. A mozna bych zavedl funkci, ktera z parametru dokaze generovat pole popisek-vybrane-parametry. Jakoze, treba Alza prodava pocitace a tam te zajima vybaveni graficka karta, disk, velikost pameti, rozmery obrazovky. Vsimni si, ze kazdy ten pc to ma v popisku v jinem poradi. Mne osobne je to dost neprijemne :) Ja bych treba uvital, aby to bylo na 2 radky, kde v tom jednom se clovek vykeca a ve druhem jsou vybrane parametry, filtrovane (jakoze treba nema smysl vypisovat vsechna cisla u procesoru, ale nejak zkracene, staci AMD Radeon 12345) v urcitem poradi. Tam se treba v detailech parametru uvadi i kolik ma tem procesor kes, gpu jader a pod.

V jednom programu mam to, ze si parametry smi editori zadavat a pripadne upravovat i ty uz nekym zadane. To je sikovne, ale mam trochu strach, ze se tam objevi duplicity s ruznymi malinkymi obmenami, coz se deje. Ale oni to tak chteli mit :) Ale, zas, jako, nemusi mi psat mail, ze chteji zavest novy parametr do ciselniku parametru.

5 x 5 cm
5x5 cm
5x5cm
5 cm x 5 cm
5 m x 5 cm
a jeste mezery a nezobrazitelne znaky z wordu pred a za textem i mezi, ty bys to mel umet podchytit a prevest na jednotny tvar.
Nebo tam pridej vzory, priklady. Klidne i rozklik na plnou stranku s priklady. ja treba u programatorske dokumentace mam rad priklady s ruznymi praktickymi kombinacemi. Treba pro regularni vyrazy nebo funkce or, and, xor, scitani, odcitani, ruzne cykly...
Proste, chces vedet, jak to funguje a bezna dokumentace je nedostatecna.
Chces vedet, jak to mas vyplnit a on ti tam nenabidne vzor a pak pinda, ze to mas spatne vyplnene nebo je tam jeden vzor. Treba u policka datum chces vedet jestli se pise yyyy-mm-dd nebo rrrr-m-d nebo, zda muzes pouzit oboji a jestli si poradi i s ceskym tvarem d.m.yyyy d.m.yy nebo, kdyz mu tam dam mezery pred, za, mezi.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
2.9.2024 11:00
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:2.9.2024 11:09

Ukazka ciselniku

Kategorie 1: elektronika
Kategorie 2: pocitace
Kategorie 3 (jen dyz je potreba): procesory
Kategorie 4 (jen u velko vyrobce): NVIDIA
Kratky text: NVIDIA RTX 3050
Dlouhy text: NVIDIA GeForce RTX 3050 6GB

Procesor (tohle maji na alze k tomu procesoru, to mi prijde jako dost zbytecne, mozna lepe link nekde na stranky vyrobce, jeho katalog procesoru)
Typ procesoru | Intel Core i5
Modelové označení procesoru | Intel Core i5 13420H Raptor Lake
Počet jader procesoru | 8 ×
Frekvence procesoru | 3,4 GHz (3 400 MHz)
Core Boost Frekvence | 4,6 GHz (4 600 MHz)
Cache procesoru | 12 MB
Funkce procesoru | Automatické přetaktování, HyperThreading

 
Nahoru Odpovědět
2.9.2024 11:09
Avatar
leos
Člen
Avatar
leos:3.9.2024 20:51

Převádět vstup a ukládání na jednu formu bych možná, i přes moje kvíkvé, zvládl. Jakmile se osvobodím od aktuálně potřebnější práce, zkusím se s tím nějak poprat.
Díky moc za čas, který jsi mi věnoval a za cenné rady i názory. Moc si toho vážím. Měj se hezky!

 
Nahoru Odpovědět
3.9.2024 20:51
Avatar
leos
Člen
Avatar
Odpovídá na Peter Mlich
leos:3.9.2024 21:19
Editováno 3.9.2024 21:20
 
Nahoru Odpovědět
3.9.2024 21:19
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 8 zpráv z 8.