
PHP "replace"
Existuje nějaký jednoduchý příkaz, který sáhnu do MySQL, prohledám všechny položky v tabulce a vždy, když najdu hledaný řetězec, nahradím ho jiným?
Díky za pomoc
Existuje nějaký jednoduchý příkaz, který sáhnu do MySQL, prohledám všechny položky v tabulce a vždy, když najdu hledaný řetězec, nahradím ho jiným?
Díky za pomoc
Zpět do poradny Odpovědět na původní otázku Nahoru
Ano.
Díky za mnohomluvnou odpověď, která, jakkoliv postihla téměř všechny fasety mé otázky, stále není zcela kompletní. Mohl bys to ještě trochu rozvést? Děkuji.
Možná ti neodpovím tak, jak očekáváš, ale myslím si, že když nedojde hora k Mohamedovi, musí Mohamed k hoře.
Jinými slovi já bych to udělál následovně:
Pokud budeš pracovat s nějakým řetězcem "vytaženým" z databáze, kde má být nějaké slovíčko nahrazeno,
tak ten výraz jednoduše obal do fce: str_replace
Jak efektivní to je netuším, ale jednoduché a přehledné to je.
//Edit
Otazkou je samozřejmě co přesně potřebuješ.
Pokud je učelem, aby se ve výsledném dotaze jenom přepsalo nějaké slovo, tak toto je dostačující.
Jestliže ale potřebuješ nahradit stávající slova v databázi, tak je to spíše nesmysl.
Na nahrazení v tabulce by zase použil replace_table (nebo jak to je) ne?
Nepoučuji, ptám se.
Jde o to, že mám tabulku s názvy filmů (každý je v tabulce několikrát - např u jména režiséra, kameramana atd.), a to je v angličtině. Potřeboval bych vymyslet, jak to jednoduše přeložit do češtiny v okamžiku, kdy český distributor zvolí český název... Takže udělat nějaký formulář, kam zadám anglický a český název, skript prohlédne všechny pole tabulky a zapíše tam nový řetězec...
Ano například script prohlédne vytažené řetězce podle režiséra a pokud se tam vyskytuje "regie", nahradí to za "režie".
Jo, to je přesně ono. Pokusím se to neuměle zakomponovat do kódu, v nejhorším se ještě přihlásím o radu
Díky.
Třeba si vytáhneš něco z tabulky v db (select) a potom na vytáhnuté použiješ:
Tím se ti všechny nalezené "klaus je vul" nahradí za "paroubek je vul".
a proměnná $vytazene_z_tabulky bude mít tuto hodnotu.
Jo, to je asi ono... tedy pokud to nevrátí jen hodnotu, ale zase to nacpe zpátky do té tabulky...
Samozřejmě, nacpe, jak to tam bylo. str_replace nemění data v tabulce.
Aha, host je na dovolené a ty ho zastupuješ. Díky svým dedukčním schopnostem jsem tuto záměnu bystře zaregistroval.
LOL LOL LOL íííííííhaháááááááááá
přesně, už jsem to chtěl napsat.
UPDATE je to, co asi pán tázající očekává.
Škoda, že nikde nenapsal, že chce nahradit data v té tabulce a ne třeba v proměnné, už to mohl dávno mít.
no právě
Díky za odpověď... Měl jsem pocit, že jsem dotaz formuloval dostatečně přesně, omlouvám se... Ovšem 1) nemohu uvést jméno sloupce, protože se ten hledaný řetězec může nalézat ve více sloupcích (vyřeší to hvězdička?) a za 2) potřebuji nahradit jen část řetězcce, zbytek ponechat - to ptenhle příkaz dokáže také?
Já bych tabulku nechal jak je. Pro zobrazení ve stránce:
Vybral bych data příkazem select a na to bych aplikoval replace (viz výše)
http://pc.poradna.net/question/view/221516-php-repl ace#re-221571
A s tabulkou by se nic nedělo. Jde snad o zobrazení na stránce ne? Ale zase kdyby mělo jít o předělání celých tabulek, tak bych si asi udělal něco na předělání. Ono jde i o to, jaký je zdroj těch dat do tabulky a jestli to neukládat rovnou dobře.
No, myslím, že nejlepší bude, když budu zcela konkrétní... Mám tabulku s filmovými Oscary... Tabulka má mnoho sloupců - např nejlepsi_film_1, nejlepsi_film_2... až nejlepší film 5 (protože je 5 nominací), pak nejlepsi_rezie_1, nejlepsi_rezie_2 atd... prostě všechny kategorie x 5. Já to tam prostřednictvím formuláře, který jsem si udělal, poměrně snadno naházím v angličtině z oficiálních stránek... A pak, rok poté, přijde český distributor s českým názvem filmu... a já bych chtěl co nejjednodušším způsobem projít celou tabulku a vyměnit anglický název za český...
Koukni jak to vypadá sem: http://www.drbo.cz/infusions/oscar_panel/oscar.php? selected1&select1=2007
Aha, to je jiná. V tom případě bych zkusil, co psal Marvin
Asi tam jdou přidat všechny sloupce místo "nazev_sloupce" dát "*"?
Nejsem v PHP kovaný, z hlavy to nevím, možná píšu kravinu, chce to zkusit.
Skvělý český manuál na MySQL je tady
mm.gene.cz
edit://asi bych si to vyexportoval, nainstaloval Wamp Server, spustil na lokále, v phpMyadmin (či jak to je) naimportoval a nejdříve to vyzkusil tam, potom bych si ten správný dotaz do db dal do externího *.php souboru...
OK, budu experimentovat... Já v těch kódech také nejsem nijak zběhlý, ale baví mě si s tím hrát a vymýšlet (zpravidla již mnohokrát vymyšlené
)
To je také můj případ u PHP. Jsem spíše na HTML+CSS. Nicméně jak to člověk stále potřebuje, trochu to do hlavy naleze...
Díky za ten link, to jsem hledal už dlouho... Jinak pokud jde o "nalezení do hlavy" to je pravda, ale má to jeden háček - já si s php hrál poměrně hodně asi před třičtvrtě rokem, pak jsem na to čtyři měsíce ani nesáhnul a teď jsem zjistil, že jsem zapomněl naprosto všechno, co jsem se horko těžko naučil...
Já se u PHP děsně trápím se syntaxí. Někde mám místo " ' či obráceně a celé něco mi pak nechodí, i když zbytek mám dobře. A najít to je úplná katastrofa.
Nojo, známá věc. Když se něco nepoužívá, zapomíná se. Já už bych zase stěží dal do kupy to, co jsem psal v QBasic, nebo jak to v DOSu bylo...
Hvězdička nepomůže, musíš ten SQL dotaz provést pro každý sloupec zvlášť. Replace nahradí pouze hledaný text za zadaný, ne celé pole.
Aha, takže napsat *.php soubůrek a v něm třeba 50 příkazů.
Ještě bych si vyrobil formulářík, co by měl v action tento soubůrek, kde bych jen napsal jméno či co a dal odeslat. To by byla slast...
Asi tak, ale neužívej ty hnusný citově zabarvený slova
. Tiskárnička netiskne na černý papíreček mi stačilo.
Těch příkazů bude 120...
To ujde
Soubůrek (nebo co myslíš) není žádné citově zabarvené slovo, nýbrž jednoslovný výraz pro malý soubor.
Tiskárnička už citově zabarvená je, protože má stále stejnou velikost (samozřejmě stolní, ne nějaká kapesní).
edit://i když ale zase třeba u traktoru, když se řekne traktůrek, není to citové zabarvení, nýbrž tím bývá myšlem malý traktor (jako u toho souboru) a citové čtyřprocentní zabarvení by bylo "traktůrešek".