Vstavljenje manjkajočega parametra v bazi
 
esedic 5. mar 2016 19:44:06 Pridružen od:
28. nov 2007
368 objav
184 13 4
#1

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.


všeč(0) ni všeč(0) spam(0)
 
kelvan 5. mar 2016 22:27:32 Pridružen od:
19. okt 2007
891 objav
658 122 26
#2

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


všeč(0) ni všeč(0) spam(0)
 
DSmidge 5. mar 2016 22:51:30 Pridružen od:
29. maj 2015
8 objav
8 0 0
#3

Ž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


všeč(3) ni všeč(0) spam(0)
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se