Avatar billede kgp43 Nybegynder
28. februar 2004 - 11:55 Der er 11 kommentarer og
1 løsning

parse error i foreach

Jeg får en parse error i den første linie af denne kode:

---------------
foreach $product[] { //Det er her jeg for en parse error

$p_id = $product["product"]["id"];
$merchant_form = $product["product"]["merchant"];
$price_form = $product["product"]["price"];
$deliveryprice_form = $product["product"]["delivery_price"];
$deliverytime_form = $product["product"]["delivery_time"];
$stock_form = $product["product"]["stock"];

$merchant = &$HTTP_POST_VARS['merchant_form'];
$price = &$HTTP_POST_VARS['price_form'];
$delivery_price = &$HTTP_POST_VARS['deliveryprice_form'];
$delivery_time = &$HTTP_POST_VARS['deliverytime_form'];
$stock = &$HTTP_POST_VARS['stock_form'];
---------------

Jeg får indholdet af arrayet fra denne kode (skulle dog ikke have inflydelse på problemet):

---------------
$product[] = array ( "product"  => array( "id" => $row3[id],
                    "merchant" => "merchant_".$row3[id],
                    "stock" => "stock_".$row3[id],
                    "delivery_time" => "deliverytime_".$row3[id],
                    "delivery_price" => "deliveryprice_".$row3[id],
                    "price" => "price_".$row3[id]
)
);
---------------
Avatar billede detox Nybegynder
28. februar 2004 - 12:20 #1
Du skal lave en foreach på en af følgende måder:

foreach (array_expression as $value) statement
foreach (array_expression as $key => $value) statement

Men det vil ikke give mening at løbe gennem at array og tildele værdierne til statiske variabler, så vil de jo kun indeholde den sidst tildelte værdi.
Avatar billede kgp43 Nybegynder
28. februar 2004 - 12:55 #2
har læst foreach ekspemplerne igennem (fra manualen), men syntes ikke det kan løse mit problem.
Troede jeg kunne gøre det på denne måde.
Avatar billede tefcke Nybegynder
28. februar 2004 - 13:05 #3
detox har beskrevet syntaxen for en foreach. Du skal ændre det i nogelunde renne retning:
foreach ( $product as $a_product ) {

Og i stedet for $product["product"]["id"] bruger du så bare $a_product["id"];
Avatar billede kgp43 Nybegynder
28. februar 2004 - 13:09 #4
Vil det sige at alle de arrays jeg danner på forrige side, skal erstattes med: $a_product["id"] ?
Avatar billede kgp43 Nybegynder
28. februar 2004 - 13:19 #5
Efter ændring:

Warning: Invalid argument supplied for foreach() in /home/fedtmco/public_html/mytackle/admin/prices/prices_ok.php on line 45

Der er min kode (linie 45 er den første):

<?
foreach ( $product as $a_product ) {

$p_id = $a_product["id"];
$merchant_form = $a_product["merchant"];
$price_form = $a_product["price"];
$deliveryprice_form = $a_product["delivery_price"];
$deliverytime_form = $a_product["delivery_time"];
$stock_form = $a_product["stock"];

$merchant = &$HTTP_POST_VARS['$merchant_form'];
$price = &$HTTP_POST_VARS['$price_form'];
$delivery_price = &$HTTP_POST_VARS['$deliveryprice_form'];
$delivery_time = &$HTTP_POST_VARS['$deliverytime_form'];
$stock = &$HTTP_POST_VARS['$stock_form'];
Avatar billede detox Nybegynder
28. februar 2004 - 13:33 #6
Har du evt. prøvet at tjekke at $product indeholder hvad du forventer? Den burde ikke give den fejlmelding, selvom det er forkert sat op.
Du skal enten ændre dit array til:

$product[] = array( "id" => $row3['id'],
                    "merchant" => "merchant_".$row3['id'],
                    "stock" => "stock_".$row3['id'],
                    "delivery_time" => "deliverytime_".$row3['id'],
                    "delivery_price" => "deliveryprice_".$row3['id'],
                    "price" => "price_".$row3['id']
);

eller din foreach til:

foreach ( $product as $a_product ) {
$p_id = $a_product['product']["id"];
$merchant_form = $a_product['product']["merchant"];
$price_form = $a_product['product']["price"];
$deliveryprice_form = $a_product['product']["delivery_price"];
$deliverytime_form = $a_product['product']["delivery_time"];
$stock_form = $a_product['product']["stock"];

$merchant = &$HTTP_POST_VARS['$merchant_form'];
$price = &$HTTP_POST_VARS['$price_form'];
$delivery_price = &$HTTP_POST_VARS['$deliveryprice_form'];
$delivery_time = &$HTTP_POST_VARS['$deliverytime_form'];
$stock = &$HTTP_POST_VARS['$stock_form'];
}

Men det giver stadig IKKE mening at tildele værdierne i arrayet til simple variabler, da de hele tiden bliver overskrevet med den sidste (medmindre selvfølgelig dit array kun har et element).
Avatar billede detox Nybegynder
28. februar 2004 - 13:34 #7
Tjek dit array med:
print_r($product);
Avatar billede kgp43 Nybegynder
28. februar 2004 - 13:40 #8
ahhh... jeg troede man kunne overføre et array via en form, men det er nok ikke tilfældet. Der skulle gå generes et nyt array for hvert produkt.
Avatar billede detox Nybegynder
28. februar 2004 - 14:12 #9
Du KAN overføre array's fra forms. Jeg troede du hentede oplysningerne fra en database ;o)
Avatar billede kgp43 Nybegynder
03. marts 2004 - 13:32 #10
Jeg fik ikke brug for arrays det alligevel, men lærte da lidt.
Hvis du laver et svar (detox), så får du point.
Avatar billede detox Nybegynder
03. marts 2004 - 13:51 #11
Ok, så tillykke med din nye viden :o)
Avatar billede kgp43 Nybegynder
04. marts 2004 - 08:10 #12
takker :P
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB