Url_name function – MySQL – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Url_name function – MySQL – Fórum – Programujte.comUrl_name function – MySQL – Fórum – Programujte.com

 

Vítězslav Mergl
~ Anonymní uživatel
6 příspěvků
7. 2. 2010   #1
-
0
-

Zdravím,
Potřeboval bych poradit ohledně funkce pro MySql.
Problém: nepodařilo se mi přepisovat více jak jeden znak.
funkce v PHP:



function url_name($string){
$not_keys = array('ě','š','č','ř','ž','ý','á','í','é',' ','ů','ú','ť','.');
$val_keys = array('e','s','c','r','z','y','a','i','e','_','u','u','t','');
$string = str_replace($not_keys,$val_keys,$string);
return $string;
}


To, co jsem zatím dokázal udělat:


CREATE FUNCTION url_name (s CHAR(60))
set @url = REPLACE(s,'č','c');
RETURNS CHAR(60) RETURN s;


Předem děkuji za odpovědi.

Nahlásit jako SPAM
IP: 213.195.229.–
KIIV
~ Moderátor
+43
God of flame
7. 2. 2010   #2
-
0
-

co treba REPLACE( REPLACE(s,'č','c') ,'š','s') ....

Nahlásit jako SPAM
IP: 77.237.136.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Vítězslav Mergl
~ Anonymní uživatel
6 příspěvků
8. 2. 2010   #3
-
0
-

To KIIV : To jsem již zkoušel.... kdyby to bylo ta jednoduché, tak to sem nepíšu. :)

Nahlásit jako SPAM
IP: 213.195.229.–
Vítězslav Mergl
~ Anonymní uživatel
6 příspěvků
8. 2. 2010   #4
-
0
-

Jak si můžete všimnout tak funkce REPLACE nepřiřazuje usledek preměné @url jak by se dalo čekat, ale proměné @s. To znamená, že pokud dám

REPLACE( REPLACE(s,'č','c') ,'š','s')
snaží se vysledek přiřadit proměné @REPLACE(s,'č','c') což pochopitelně hodí chybu....

Nahlásit jako SPAM
IP: 213.195.229.–
KIIV
~ Moderátor
+43
God of flame
8. 2. 2010   #5
-
0
-

tak jestli meni s tak jich dej hromadu za sebou a return s;

Nahlásit jako SPAM
IP: 77.237.136.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Vítězslav Mergl
~ Anonymní uživatel
6 příspěvků
8. 2. 2010   #6
-
0
-

To KIIV : Tato syntaxe MySql funkce nepodporuje více příkazový zápis.

Nahlásit jako SPAM
IP: 213.195.229.–
KIIV
~ Moderátor
+43
God of flame
8. 2. 2010   #7
-
0
-

nuze tim se objevuje nejzasadnejsi otazka: proc sakra v mysql? :D

+ vyjde 100x lepe hodit to do dalsiho sloupecku uz pripravene.. zadna zbytecna dalsi zatez kvuli odstranovani znaku

Nahlásit jako SPAM
IP: 77.237.136.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Vítězslav Mergl
~ Anonymní uživatel
6 příspěvků
8. 2. 2010   #8
-
0
-

To KIIV : Funkce bude používané pro fulltextové vyhledávání... těžko budu celí text (např. článku) dávat do extra sloupečku.

Nahlásit jako SPAM
IP: 213.195.229.–
KIIV
~ Moderátor
+43
God of flame
8. 2. 2010   #9
-
0
-

no nechtel bych videt vysledne naroky kdyby se ti to povedlo zprovoznit
proste mysql na todle neni zrovna moc delana a ani prilis vhodna...
uz jen takovej postgres s podporou pl/sql dokaze zazraky

Nahlásit jako SPAM
IP: 77.237.136.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Vítězslav Mergl
~ Anonymní uživatel
6 příspěvků
8. 2. 2010   #10
-
0
-

no to je docela problem.... Cely system je napsany v PHP+MySql .... Zacílám celou funkci pro Fulltext



function search(){
if(strlen(cms::$get[1])<=4){
cms::error('hsmmvn4z','z');
return false;
}
$num = 0;
$search = mysql_real_escape_string(cms::$get[1]);
$select = cms::query("SELECT name,text,id FROM `news_items` WHERE MATCH(`name`, `text`) AGAINST ('$search' IN BOOLEAN MODE) ORDER BY 5 * MATCH(name) AGAINST ('$search') + MATCH(text) AGAINST ('$search') DESC");
$loop = new TPLLoop('news');
while($news = cms::fetchit($select)){
$item = new TPLLoopItem();
$item->add('name',$news['name']);
$item->add('comment',$this->max_length($news['text'],400));
$item->add('url_name',$this->url_name($news['name']));
$item->add('id',$news['id']);
$loop->append($item);
$num++;
}
$loop->pack();
if($num==0){
cms::error('nnzn','z');
return false;
}
}

Nahlásit jako SPAM
IP: 213.195.229.–
Mergl0
Newbie
8. 2. 2010   #11
-
0
-

Tak problém vyřešen dosti překvapivě!
Pro mysql platí:
Č = C
Č = c
č = C
č = c

což je docela zjímavý poznatek. pro lidi který by to chtěli použít upozorňuji, že to neplatí c = č apod....
Jinak děkuju za snahu :)

Nahlásit jako SPAM
IP: 213.195.229.–
KIIV
~ Moderátor
+43
God of flame
8. 2. 2010   #12
-
0
-

to myslim zalezi na nastaveni kodovani.. kdyz das utf8_general_ci tak to jde, kdyz bude treba primo ceske kodovani tak uz minimalne na velikosti znaku zalezet bude

Nahlásit jako SPAM
IP: 77.237.136.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Kuboslav0
Newbie
31. 3. 2010   #13
-
0
-

Trochu neskoro, ale možno sa to niekomu zíde .. Ja používam na prepisovanie toto (mám dojem, že jednoduchšie sa to nedá)

    $znaky = array(

'Š'=>'S', 'š'=>'s', 'Ž'=>'Z', 'ž'=>'z', 'Č'=>'C', 'č'=>'c', 'Á'=>'A', 'Ä'=>'A', 'É'=>'E', 'Ë'=>'E',
'Í'=>'I', 'Ó'=>'O', 'Ô'=>'O', 'Ö'=>'O', 'Ú'=>'U', 'Ü'=>'U', 'Ý'=>'Y', 'á'=>'a', 'ä'=>'a', 'é'=>'e',
'ë'=>'e', 'í'=>'i', 'ó'=>'o', 'ô'=>'o', 'ö'=>'o', 'ú'=>'u', 'ý'=>'y', 'ý'=>'y', 'Ŕ'=>'R', 'ŕ'=>'r',
'Ř'=>'R', 'ř'=>'r', 'Ě'=>'E', 'ě'=>'e', 'Ů'=>'U', 'ů'=>'u', ' '=>'_', ':'=>'_', '!'=>'_', '?'=>'_',
'/'=>'_', '%'=>'_', '*'=>'_', '"'=>'_', '<'=>'_', '>'=>'_', '|'=>'_', '+'=>'_', '['=>'(', ']'=>')',
'ľ'=>'l', 'Ľ'=>'L', 'ĺ'=>'Ĺ'
);
$novyNazov = strtr($staryNazov, $znaky);

Nahlásit jako SPAM
IP: 213.29.146.–
</microsoft>
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, 7 hostů

Podobná vlákna

Undefined function — založil Kowalsky

Equality function — založil nord

Function click — založil zelenac1

 

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