Hallo

Voor het werk ben ik bezig een kleine webshop te maken. Dit zal uiteindelijk niet meer worden dan een presentatie van enkele producten en de mogelijkheid deze online te bestellen. Deze producten staan in een database, en worden op de productpagina getoond d.m.v. een 'foreach'-lus.

Alles werkt vrij behoorlijk, maar ik krijg enkel het laatste product uit deze lus te zien. Kan iemand mij helpen?



<?php

/*
 producten (elks in een array)
*/

error_reporting(E_ALL);

	$query = "SELECT * FROM overstock ORDER BY naam DESC";
		  $result = mysql_query($query)
			 or die  ("kan de query niet uitvoeren");

	
while($row = mysql_fetch_array($result))	
	
$products = array(

$row['barcode'] =>
	new product(
$row['naam'],
$row['merk'],
$row['omschrijving'],
$row['stock'],
$row['prijs'],
$row['yield'],
$row['productpagina'], 
$row['afbeelding']) 

);


?>


Alvast bedankt voor de hulp!
De code is beetje raar... !
heb je stukjes zelf bij elkaar geplakt...?

Ik weet niet wat je wilt met deze code, begrijp je wat while doet ?

Nu begin (php te leren) & zet op regel 15 is:

echo $row['naam'];

Geef de while() eens zijn { en } zodat duidelijk is wat er bij de while() hoort.
Je overschrijft de array $product iedere keer. Gebruik $product[] en er wordt een fraaie array aangemaakt, met daarin de array's met data uit de database.
Oplossing: tweedimensionale array maken..
Hylke schreef op 28.11.2007 11:14
Oplossing: tweedimensionale array maken..
Dat zeg ik...
;)
pgFrank schreef op 28.11.2007 11:17
[quote='Hylke schreef op 28.11.2007 11:14']Oplossing: tweedimensionale array maken..
Dat zeg ik...
;)[/quote]

Oeps, het is nog vroeg.. Krijg je ervan als je maar half leest!
2 dimensionaal idd de beste oplossing, misschien met als key de naam die je heb

<?php

/*
producten (elks in een array)
*/
$products = array();

error_reporting(E_ALL);

$query = "SELECT * FROM overstock ORDER BY naam DESC";
$result = mysql_query($query)
or die ("kan de query niet uitvoeren");


while($row = mysql_fetch_array($result))

$products[$row['naam']] = array(

$row['barcode'] =>
new product(
$row['naam'],
$row['merk'],
$row['omschrijving'],
$row['stock'],
$row['prijs'],
$row['yield'],
$row['productpagina'],
$row['afbeelding'])

);


?>

werkt alleen als de namen unique zijn uiteraard
Allereerst al een dikke merci voor de snelle respons! Leuk om te weten!

Ik zal misschien de situatie even verduidelijken...

Ik heb een class
<?php

class product {
	var $naam;
	var $merk;
	var $omschrijving;
	var $stock;
	var $prijs;
	var $yield;
	var $productpagina;
	var $afbeelding;
	function product($naam, $merk, $omschrijving, $stock, $prijs, $yield, $productpagina, $afbeelding) {
		$this->naam = $naam;
		$this->merk = $merk;
		$this->omschrijving = $omschrijving;
		$this->stock = $stock;
		$this->prijs = $prijs;
		$this->yield = $yield;
		$this->productpagina = $productpagina;
		$this->afbeelding = $afbeelding;
	}
}

?>


... en ik heb mijn products.php-pagina die hierboven al gepost staat...

en deze worden beiden aangeroepen in de homepage op deze manier:

<h2>Producten</h2>
<?php
foreach ($products as $id => $product) { 
?>
	<div class="product">
		<h3><a href="<?= $settings->siteUrl . $product->productpagina?>?id=<?=$id?>"><?=$product->naam?></a></h3>
			<a href="<?= $settings->siteUrl . $product->productpagina?>?id=<?=$id?>"><img src="<?= $settings->siteUrl . $product->afbeelding?>" alt="<?=$product->naam?>" /></a><br />
		<p>	<?=$product->omschrijving?></p>
		<p>	<span class="product-prijs">&euro; <?=$product->prijs?></span></p>
		<form action="winkelwagen.php" method="post">
			<input type="hidden" name="action" value="add" />
			<input type="hidden" name="stock" value="1" />
			<input type="hidden" name="id" value="<?=$id?>" />
			<button type="submit" class="button">voeg toe</button>
		</form>
	</div>
<? } ?>


Met de manier van Joep krijg ik idd alle vakjes voor de producten, maar deze vakjes zijn leeg. Maar als ik $product[] volgens pgFrank gebruik, krijg ik wél een duidelijk overzicht, maar werkt de $id niet naar behoren. Deze $id moet de waarde zijn v/d barcode, omdat deze gebruikt wordt op de individuele productpagina.

Ik hoop dat er nu nog iemand aan uit kan, aan mijn uitleg... ;-)
Doe eens een print_r($product) en maak eens duidelijk hoe jouw array er nu uitziet. $id gaat niet werken met het voorbeeld van Joep, hij gebruikt de naam als key, deze ga jij dan later weer met $id ophalen. Wellicht wil jij i.p.v. de naam iets anders gebruiken, maar dat kun je zelf het beste bepalen.

Succes!
Hey R3Q je bent al lekker onderweg, wat je nu doet in de foreach is de key gebruiken.
In de manier die je gebruikt van Frank is er geen key products[] maakt namelijk geen associatieve array aan, dus heb je gewoon $product[0], product[1] etc etc

Je kan mijn manier gebruiken maar ipv naam de barccode gebruiken.
Dan heb je dus als key de barcode en gaat je foreach wel goed.

Maar print idd even je products array uit en kun je mij misschien vertellen waarom je hier een class gebruikt. Ik stimuleer zeker classes hoor, maar zie de link even niet naar een query -> to list zeg maar.

Reageren