Vstavljenje manjkajočega parametra v bazi

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&amp;view=article&amp;id=206467">nek tekst</a>

Vse povezave pa bi morale biti zapisane takole:

<a href="index.php?option=com_content&amp;view=article&amp;id=206467&amp;catid=45&amp;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.

  1. BACKUP baze ali vsaj tabele.

  2. 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:".

  3. Potem uporabiš Notepad++ in narediš pripravo UPDATE stavka:

  4. za "Search mode" daš "Regular expressions",

  5. pod "Find what" vpiši: ^"(.?)","(.?)"$ oz. ^(.?)|||(.?)$ ,

  6. pod "Replace with" vpiše: UPDATE imetabele SET imestolpcazlinki = '$2' WHERE imeidstolpca = '$1'.

  7. Sedaj pa še popraviš vrednosti:

  8. "Find what": "index.php?option=com_content&view=article&id=(\d+)" z dvojnimi narekovaji vred,

  9. "Replace with": "index.php?option=com_content&view=article&id=$1&catid=45&Itemid=115" z dvojnimi narekovaji vred.

  10. 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.

  11. Zaženi kodo za update na strežniku.

Lep pozdrav,
Domen

3