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!
Bedankt Joep en pgFrank.

Ik geef hieronder even een voorbeeldje mee van hoe de array er zou uitzien als ik alle producten handmatig zou opgeven. Deze array zou dus automatisch moeten worden gevuld.

Het script dat ik gebruik is de 'Couffin' van Georges Auberger. Dit is een script dat normaalgezien werkt zonder mySQL, maar dat wil ik nu dus met mySQL. Ik heb dus problemen om de 'aansluiting' te maken, zeg maar. (Ik kan wel probleemloos verbinden met de database hoor, en deze is correct ingevuld, dus daar ligt het niet aan.)

$products = array(


"OV0DR200" =>
new product(
"Brother DR-200 OEM Overstock",
"Brother", 
"For Brother HL-720, 730, 730+, 760, MFC-9000, 9050, 9060, 9500, 9550, FAX-8000P, 8060P, 8200P, 8250P, 8650P",
"1",
"20 000",
"0",
"product.php",
"DATA/images/001.jpg"
),
Die array ziet er erg vreemd uit met die 'new product()' daarin. Voer de volgende code eens uit nadat je de array hebt aangemaakt:
<?php
echo '<pre>';
print_r($products);
echo '</pre>';
?>
Wat levert dit op?
Het verbindne met SQL is erg goed natuurlijk, maar wat ik niet begrijp is dat je in het maken van een product een class instantieert en die meteen weer uitleest.
Wat je wil nu is dus een array product krijgen met barcode als key en een product object als value, terwijl je gewoon de array meteen kan vullen met gegevens
Na de print_r opdracht, krijg ik het volgende:


Array
(
    [OV0DR200] => Array
        (
            [OV0DR200] => product Object
                (
                    [naam] => Brother DR-200 OEM Overstock
                    [merk] => Brother
                    [omschrijving] => For Brother HL-720, 730, 730+, 760, MFC-9000, 9050, 9060, 9500, 9550, FAX-8000P, 8060P, 8200P, 8250P, 8650P
                    [stock] => 1
                    [prijs] => 0
                    [yield] => 20 000
                    [productpagina] => product.php
                    [afbeelding] => DATA/images/001.jpg
                )

        )


De opmerking van Joep echter, heeft me aan het denken gezet... het is inderdaad onlogisch. Aan de andere kant: als ik dit draaiende krijg (en ik voel dat de oplossing binnen handbereik ligt), hoef ik niet téveel aan te passen. Of vergis ik mij?
En nu begin het duidelijk te worden! De array is niet handig opgezet, je hebt nu 2x de waarde OV0DR200 in de array staan. 1x is meer dan genoeg. Je hebt nu een 3 dimensionale array, daar waar je met een 2 dimensionale al voldoende mogelijkheden hebt.

Dit stukje moet je dus zien weg te werken:

 [OV0DR200] => Array
        (

Evenals het afsluitende haakje, maar dat mag geen probleem zijn.

Dit moet je overhouden:

Array
(
[OV0DR200] => product Object
                (
                    [naam] => Brother DR-200 OEM Overstock
                    [merk] => Brother
                    [omschrijving] => For Brother HL-720, 730, 730+, 760, MFC-9000, 9050, 9060, 9500, 9550, FAX-8000P, 8060P, 8200P, 8250P, 8650P
                    [stock] => 1
                    [prijs] => 0
                    [yield] => 20 000
                    [productpagina] => product.php
                    [afbeelding] => DATA/images/001.jpg
                )
)
Kun je nog 1 keer de code posten waarmee je het opbouwt? Wil graag weten hoe die nu is ;)
Als het goed is zou het probleem idd binnen handbereik liggen als we 1 dimensie eruit slopen ;)
Code is nu de volgende:


<?php

/*
 producten (elks in een array)
*/

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

    
while($row = mysql_fetch_array($result))    
    
$products[$row['barcode']] = array(

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

);

echo '<pre>';
print_r($products);
echo '</pre>';

?>


Deze geeft als resultaat de 3-dimensionele array. Ik ben er gisteren niet meer in geslaagd eentje eruit te flikkeren, helaas!

Misschien moet ik maar toegeven dat deze php-toepassing nog wat te hoog gegerepen is voor mij... een mailformulier en kleine toepassingen kan ik nog wel opbouwen, maar het echte werk... dat wordt nog wat studeren! Van opleiding ben ik grafisch vormgever, maar het lijkt me we leuk om dat combineren met het bouwen van (eenvoudige) php-toepassingen.

Nogmaals een dikke merci voor alle hulp! Ik apprecieer dit ten zeerste!

<?php

/*
 producten (elks in een array)
*/

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

$products = array();   

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

);

echo '<pre>';
print_r($products);
echo '</pre>';

?> 


Zullen we dan maar gewoon aardig zijn ;)
Potverdorie! Joep, u bent een held! Ai ai ai dat ik het zelf niet zag. Ik heb nog een klein foutje uit jouw code gehaald ( een aflsuitend haakje teveel), maar voor de rest doet ie het nu perfect!

Nu kan ik zelf wel verder, denk ik. Het boodschappenmandje en de rest werkt feilloos. Nu nog eens bekijken hoe ik de producten kan filteren per merk, prijsklasse, beschikbare voorraad... maar dat mag geen noemenswaardige problemen meer opleveren.

Ik gebruik deze site al lang om te raadplegen, maar nu ga ik het forum meegebruiken ook. Geweldig bedankt iedereen!
No probs ;) Voor dat sorteren is er geloof ik nog een leuke tut op phphulp ergens!

Reageren