Hallo allemaal, vanwege een slecht database ontwerp zit ik nu opgescheept met klein probleempje

het gaat hier over prijzen van artikelen, die staan in de database als bijvoorbeeld 1250 maar moeten op de pagina 12,50 worden

weet iemand hier een nette oplossing voor?
ik kan substr wel gebruiken maar dat vind ik een nogal ranzige oplossing eigenlijk
dus als iemand een idee heeft, laat het horen :)
Kan je niet de kolom als Double maken. En dan eenmalig even een script er over heen:

<?php
$query = mysql_query("SELECT id, prijs FROM artikelen")
while ($artikel = mysql_fetch_row($query))
{
// Nu moet je de waarde $artikel[1] als het goede maken
$nwPrijs = number_format($artikel[1], 2, ',', '');

// En nu record, voor record de gegevens aanpassen
mysql_query("UPDATE artikelen SET prijs = '$nwPrijs' WHERE id = '$artikel[0]'");
echo "Migreren Record $artikel[0]: OK<br>";
}
?>

Elwin
dat werkt niet echt hoor, en de prijzen moeten blijven staan zoals ze nu staan in de database.
anders werkt de rest van de applicatie niet meer

probeer dit maar eens
<? echo number_format(1250, 2, ',', ''); ?>
daar krijg je 1250,00 uit, het moet 12,50 zijn

iemand anders nog een ideetje?
probeer dit maar eens
<? echo number_format(1250, 2, ',', ''); ?>
daar krijg je 1250,00 uit, het moet 12,50 zijn

Hmm.. jup.. je heb gelijk.. :S

Elwin
[Edit: mijn perl-hoofd dacht te logisch na voor php]
<?php
$query = mysql_query("SELECT id, prijs FROM artikelen")
while ($artikel = mysql_fetch_row($query))
{
// Nu moet je de waarde $artikel[1] als het goede maken
$nwPrijs = preg_replace('/(\d+)(\d{2})/',"\$1,\$2", $artiekel[1]);

// En nu record, voor record de gegevens aanpassen
mysql_query("UPDATE artikelen SET prijs = '$nwPrijs' WHERE id = '$artikel[0]'");
echo "Migreren Record $artikel[0]: OK<br>";
}
?>
het probleem is dat de data in de DB moet blijven zoals het nu is, anders moet het hele bestaande systeem aangepast worden

ik denk dat ik gewoon number_format($prijs/100,2,',','.'); ga gebruiken
hmm
Dan gebruik je
$nwprijs = preg_replace('/(\d+)(\d{2})/',"\$1,\$2", $artiekel[1])

Grtz,

Adje
das ook lelijk imho
om hier nou een regexp voor te gebruiken?

ik denk dat ik het dan toch maar gewoon zo doe:
substr($prijs,0,-2).','.substr($prijs,-2);

lelijk maar wel het snelste van de 3
Jij moet niet praten over lelijk wanneer je die verkeerde informatie in je tabel wilt houden :)
dat is alleen omdat de rest van het systeem erop werkt.
en ik mag niets aan het bestaande systeem veranderen dus helaas, anders zou ik het nu nog hebben omgezet

Reageren