Dag lui,
Aangezien ik een site (een maandelijks e-zine - zie undersign) wat aan het reorganiseren ben met het oog op een complete verhuizing naar een nieuwe server (de database en een fors deel van plaatjes staan er al), ben ik begonnen met de boel flink op te schonen. Voorheen stonden de plaatjes op diverse locaties op het net verspreid vanwege capaciteitsproblemen met bandbreedte en serverruimte. Met de nieuwe server zijn die problemen verleden tijd maar het heeft wel zijn sporen nagelaten en het puin ruimen kan nu beginnen.
De situatie was als volgt: In mijn database heb ik een tabel met bijvoorbeeld de interviews erin. Om die interviews wat op te leuken hebben we er ook wat plaatjes ingestopt. Voorheen gebeurde dat middels een mengeling van UBB-code en HTML bijvoorbeeld zo:
Sinds enige maanden heb ik een nieuwe tag in het leven geroepen en het enige wat nu nog nodig is om een plaatje gecentreerd in te voeren is dit:
Dat werkt perfect. Middels een PHP script wordt automatisch de juiste directory waar het plaatje zich op de nieuwe server bevindt bepaald en het plaatje wordt prima weergegeven.
Nu zijn er nog een stuk of 70 interviews waarbij de verwijzingen nog steeds naar de oude locatie gaan. Ik dacht slim te zijn door een rewritefunctie te maken zoals hieronder:
en deze in een loop in 1 keer te vervangen middels:
Uiteraard wel even op een testomgeving (mijn oude database) om zo geen schade toe te brengen
Nu krijg ik als ik de replacepic-functie laat printen wel het goede resultaat maar de updatequery wordt dan weer niet uitgevoerd.
Ik snap niet hoe dat kan. Mogelijke oorzaken die ik me zat te bedenken zijn:
1. Mijn oude database is MySql versie 3.23.49 en kan dit niet aan (de nieuwe is overigens 4.1)
2. Er staan in de interviewtekst een aantal single quotes die de query onderbreken
Optie 1 kan ik moeilijk nagaan aangezien ik mijn nieuwe database niet als proefkonijn wil gebruiken
Optie 2 kan ik wellicht tegengaan door het gebruik van addslashes maar die zal er ik er daarna toch weer uit moeten vissen want die wil ik niet in mijn database hebben (ook nooit gehad). stripslashes(replacepic(addslashes($interviews["interviewtext"]))) zal in zo'n geval weinig uithalen vrees ik.
Ik hoop dat er hier iemand is die wellicht een idee heeft over hoe ik dit het beste kan aanpakken. Alle input wordt zeer gewaardeerd en mijn dank ik bij voorbaat al van Bijbelse proporties.
Aangezien ik een site (een maandelijks e-zine - zie undersign) wat aan het reorganiseren ben met het oog op een complete verhuizing naar een nieuwe server (de database en een fors deel van plaatjes staan er al), ben ik begonnen met de boel flink op te schonen. Voorheen stonden de plaatjes op diverse locaties op het net verspreid vanwege capaciteitsproblemen met bandbreedte en serverruimte. Met de nieuwe server zijn die problemen verleden tijd maar het heeft wel zijn sporen nagelaten en het puin ruimen kan nu beginnen.
De situatie was als volgt: In mijn database heb ik een tabel met bijvoorbeeld de interviews erin. Om die interviews wat op te leuken hebben we er ook wat plaatjes ingestopt. Voorheen gebeurde dat middels een mengeling van UBB-code en HTML bijvoorbeeld zo:
code:
1
| <center>[img]http://www.andereloactie.nl/hoofddir/plaatjesdir/interviews/plaatje.jpg[/img]</center> |
Sinds enige maanden heb ik een nieuwe tag in het leven geroepen en het enige wat nu nog nodig is om een plaatje gecentreerd in te voeren is dit:
code:
1
| [pic]plaatje.jpg[/pic] |
Dat werkt perfect. Middels een PHP script wordt automatisch de juiste directory waar het plaatje zich op de nieuwe server bevindt bepaald en het plaatje wordt prima weergegeven.
Nu zijn er nog een stuk of 70 interviews waarbij de verwijzingen nog steeds naar de oude locatie gaan. Ik dacht slim te zijn door een rewritefunctie te maken zoals hieronder:
PHP:
1
2
3
4
5
6
| function replacepic($string) { $string = str_replace("<center>[img]http://www.andereloactie.nl/hoofddir/plaatjesdir/interviews/","[pic]",$string); $string = str_replace("[/img]</center>","[/pic]",$string); return $string; } |
en deze in een loop in 1 keer te vervangen middels:
PHP:
1
2
3
4
5
| while(loop) { $id = $interviews["auto_id"]; mysql_query("UPDATE interviews set interviewtext = '".replacepic($interviews["interviewtext"])."' WHERE auto_id = ".$id); } |
Uiteraard wel even op een testomgeving (mijn oude database) om zo geen schade toe te brengen
Nu krijg ik als ik de replacepic-functie laat printen wel het goede resultaat maar de updatequery wordt dan weer niet uitgevoerd.
1. Mijn oude database is MySql versie 3.23.49 en kan dit niet aan (de nieuwe is overigens 4.1)
2. Er staan in de interviewtekst een aantal single quotes die de query onderbreken
Optie 1 kan ik moeilijk nagaan aangezien ik mijn nieuwe database niet als proefkonijn wil gebruiken
Optie 2 kan ik wellicht tegengaan door het gebruik van addslashes maar die zal er ik er daarna toch weer uit moeten vissen want die wil ik niet in mijn database hebben (ook nooit gehad). stripslashes(replacepic(addslashes($interviews["interviewtext"]))) zal in zo'n geval weinig uithalen vrees ik.
Ik hoop dat er hier iemand is die wellicht een idee heeft over hoe ik dit het beste kan aanpakken. Alle input wordt zeer gewaardeerd en mijn dank ik bij voorbaat al van Bijbelse proporties.
- Ik bespreek ook harde waren en dan wel op www.lordsofmetal.nl - en ik draai en programmeer ze in DYNAMO