Vstavljenje manjkajočega parametra v bazi
3 naročniki
3 naročniki
V MySQL bazi moram v mediumtext polju content
(vsebina članka) v določene povezave vstaviti določen parameter.
Primer:
Nekatere povezave v člankih imajo v href atributu parameter "&catid=45&Itemid=115", nekatere pa ne in tem moram vstaviti ta parameter.
Povezava, ki ji manjka parameter je zapisana kot:
<a href="index.php?option=com_content&view=article&id=206467">nek tekst</a>
Vse povezave pa bi morale biti zapisane takole:
<a href="index.php?option=com_content&view=article&id=206467&catid=45&Itemid=115">nek tekst</a>
Kako bi lahko povezavam s takšno strukturo vstavil manjkajoči parameter?
Id je dinamičen parameter in ima lahko 3,4,5 ali 6 znakov.
2 odgovora
jaz bi se tega lotil v PHPju - mogoče ni hitro in proper, je pa (vsaj zame) bolj enostavno in predvsem udobno
1. s selectom nafilaš array
2. popraviš vrednosti
3. update
Živjo,
ker ne vem, kako močen si v programiranju, bom napisal bolj uporabniško verzijo, kako to popraviti. Ena od možnosti je, da polje, ki predstavlja ključ in polje, ki vsebuje ta tekst z linki izvoziš v datoteko.
BACKUP baze ali vsaj tabele.
Uporabiš SQL tab v phpMyAdmin. Vpišeš "SELECT imeidstolpca, imestolpcazlinki FROM imetabele WHERE imestolpcaz_linki LIKE '%index.php?%';". Potem na koncu izpisa uporabi Export, da to izvoziš v datoteko. Za format izberi CSV.
Lahko izbereš še "Custom - display all possible options" in potem pod "Columns separated with:" daš npr. ||| in odstraniš dvojne narekovaje pod "Columns enclosed with:" in "Columns escaped with:".Potem uporabiš Notepad++ in narediš pripravo UPDATE stavka:
za "Search mode" daš "Regular expressions",
pod "Find what" vpiši: ^"(.?)","(.?)"$ oz. ^(.?)|||(.?)$ ,
pod "Replace with" vpiše: UPDATE imetabele SET imestolpcazlinki = '$2' WHERE imeidstolpca = '$1'.
Sedaj pa še popraviš vrednosti:
"Find what": "index.php?option=com_content&view=article&id=(\d+)" z dvojnimi narekovaji vred,
"Replace with": "index.php?option=com_content&view=article&id=$1&catid=45&Itemid=115" z dvojnimi narekovaji vred.
Preglej kaj imaš pripravljeno tako, da pod Language v Notepad++ izbereš SQL. Mogoče bo kje napaka, če so v tekstu že dvojni narekovaji (če ne izbereš načina z |||) - to ročno popravi. Ker je koda obarvana, boš lažje videl, kje je napaka.
Zaženi kodo za update na strežniku.
Lep pozdrav,
Domen