Beste mensen,

Wederom een klein vraagje, ik heb een array met resultaten uit mysql, en ik zou graag voor ieder veld waarvan de key met een bepaalde tekenreeks begint een euro teken plaatsen.

Dat zijn misschien tien uit vijftig kolommen, dus ik dacht kan dat niet makkelijker nu had ik dit kleine stukje php in elkaar geschroeft maar dit blijkt niet te werken:



	while($r = mysql_fetch_array($res))	{
		while($veld = current($r))	{
			if(stristr(key($r),"column_header") !== FALSE)	{
				$veld = "€" . $veld . "\t";
				echo $veld; 
			}
			current($r) = $veld;
			next($r); 
		}

(eigen code volgt)

het probleem zit em in het feit dat ik aan current($r) geen waarde toe kan kennen, iemand een idee hoe ik dit anders aan zou kunnen pakken

mvg daniel
Ik snap niet waarom je zo moeilijk doet. Als ik het goed begrijp heb je een result-set waarbij je bij een aantal resultaten het euro-teken wilt neerzetten. Dat kun je toch met een if oplossen? Waarom lopen klooien met een extra while? Die current en next snap ik al helemaal niet.

Maar, wat bedoel je met 'tien uit vijftig kolommen' ? Zijn dit records of bedoel je echt kolommen? Dus dat jij dezelfde informatie (bv. de prijs van een product) in meerdere kolommen hebt staan? Dit lijkt mij een fout in het databasemodel. Kun je eens laten zien hoe de databasestructuur er uit ziet?

<?php
while($row = mysql_fetch_array($res)){
if($row['prijs'] > 0){
echo '&euro; '.$row['prijs'];
}
// rest van de code binnen de while
}

// rest van de code
?>
Nee, ik snap waarom je dit zegt maar er zitten een groot aantal verschillende prijzen in de database, en ik had geen zin om minimaal 10 ifjes danwel elseifjes te gaan tikken.

database structuur is ok.. dont worry about that ;) ik probeerde aan de hand van de kolomnaam een euro teken toe te voegen.

50 kolommen komt omdat er gewoon zoveel verschillende gegevens zijn over 1 product. staffels en dergelijke..

staffel houdt in als je 1 product koopt kost het 200 eu
als je er tien koopt 190.. enz enz

mvg daniel

Daniel Fortuyn schreef op 19.06.2006 14:12
Nee, ik snap waarom je dit zegt maar er zitten een groot aantal verschillende prijzen in de database, en ik had geen zin om minimaal 10 ifjes danwel elseifjes te gaan tikken.

database structuur is ok.. dont worry about that ;) ik probeerde aan de hand van de kolomnaam een euro teken toe te voegen.

50 kolommen komt omdat er gewoon zoveel verschillende gegevens zijn over 1 product. staffels en dergelijke..

staffel houdt in als je 1 product koopt kost het 200 eu
als je er tien koopt 190.. enz enz

mvg daniel



Nou inmiddels een manier gevonden,

		while($veld = current($r))	{
			
			$row_keys = array_keys($r);
			echo count($r);
			
			if(stristr(key($r),"verkoopprijs") !== FALSE)	{
				$veld = "&euro;" . $veld . "\t"; 
				$r[key($r)] = $veld;
			}
			next($r);
		}


nu loop ik echter tegen het probleem aan dat het script maar een kolom die met de gewenste header begint ook daadwerkelijk een euro teken invoegt, terwijl er nog 9 kolommen zijn die met die tekst beginnen.

Verder heeft de nieuwe array ook 120 keys ipv 60.

120 is inmiddels ook duidelijk..

mysql_fetch_array ding was dat.

alvast bedankt

daniel

Reageren