Gå til innhold
🎄🎅❄️God Jul og Godt Nyttår fra alle oss i Diskusjon.no ×

Foreach-løkke starter med [1], ikke [0] LØST


Anbefalte innlegg

Hallojs,

 

Min første spørre-post.. :(

 

Jeg holder på å lage en veldig simpel handlekurv, men har rotet meg totalt bort i foreach-trøbbel. Løkken nekter å starte med [0], den begynner med [1]. Jeg har satt opp en enkel butikk med 5 varer fra en flat-fil som genererer en tabell. Dette funker. Så har jeg lagt inn et tekstfelt for bestilling - so far so good..

 

Men så begynner problemene :shrug::wallbash:

 

Når jeg "bestiller" noe, så henter den info fra varelinjen under.. :hmm:

 

Her er den kodesnutten som ligger i bestillingssiden:

<?php
$vareliste=file("vliste.txt");

foreach($vareliste as $item => $value)
{
$data[$item]=explode("|", $value);
}

$smokk="Du har bestilt:<BR>\n";

foreach ($kjop as $kjop){
if ($kjop !=NULL){
$mokk .="$kjop stk - ".$data[$kjop][1]." á kr ".$data[$kjop][2]." totalt kr: ".number_format($kjop*$data[$kjop][2],2)."<BR>\n";
}}

echo $smokk;
echo $mokk;
?>

 

Jeg har snudd/krøllet/herjet/forandret/resatt på koden, men jeg blir ikkenoe klokere. Jeg er sikker på at det er en liten møkkafilleting eller semikolon som jeg ikke finner ut hvor jeg har glemt å sette den inn..

 

Anyone?

 

Her er lenken til "butikken":

http://www.genericlocation.com/tst/butikk12.php

Endret av Bikeridr
Lenke til kommentar
Videoannonse
Annonse
Jeg vet ikke om dette løser problemet ditt, men hvordan vet parser forskjell på array $kjop og variabel $kjop i foreach? foreach ($kjop as $kjop){

8197805[/snapback]

Hmm, tja, si det..? :) Det har jeg ikke tenkt på. Men nå har jeg forandret foreach til dette:

 

foreach ($kjop as $key => $antall){
if ($kjop !=NULL){
$mokk .="$antall stk - ".$data[$key][1]." á kr ".$data[$key][2]." totalt kr: ".number_format($antall*$data[$key][2],2)."<BR>\n";
}}

 

 

Men problemet da er at bestillingen kommer ut med alle varene, også de som ikke inneholder noen verdi. Dette hadde jeg prøvd tidligere, men nå har jeg forandret det tilbake slik at om noen vil prøve å kjøre en "bestilling", så ser de hva som er feil..

Lenke til kommentar

PHP

<?php

foreach ($kjop as $key => $antall){

if ($kjop !=NULL){

$mokk .="$antall stk - ".$data[$key][1]." á kr ".$data[$key][2]." totalt kr: ".number_format($antall*$data[$key][2],2)."<BR>";

}}

?>

Er vel ikkje heilt logisk å skjekke $kjop kver gang du looper innholdet i kjop? burde vel heller vere if(...) { foreach(...) { }}

Lenke til kommentar

ThaMezzy:

Innrykk vurderes tatt til etteretning. Men det er en viss logikk i bruken av "norske" variabelnavn og UC på html.

Ved bruk av "norske" variabelnavn slipper jeg å være redd for å lage en variabel som krasjer med funksjonsnavn. UC på html har jeg brukt siden 1996 og det er en vane som blir vanskelig å snu på.. :blush:

 

Shadows0:

Må ikke "$kjop !=NULL" ligge i en foreach-loop for å få med hver enkelt $kjop som ikke er tom?

 

Jeg har knødd med denne greia i to dager, og jeg *vet* at det må være en måte å få handlekurven til å oppføre seg slik jeg tenker..

Lenke til kommentar

kjop!=null gir ingen mening der nei. Hvis $kjop er null, så vil ikke foreach-en gå en eneste runde. Den går jo en løkke for hvert element i $kjop, og er $kjop null, så er det ingen elementer å gå en runde for.

 

Men det du mener er vel egentlig å ha dette?

PHP
<?php

foreach ($kjop as $key => $antall) {

if (!$antall) continue; // Hopp over linjer med 0 som antall

$mokk .= "blahblah";

}

?>

Lenke til kommentar
kjop!=null gir ingen mening der nei...

 

...Men det du mener er vel egentlig å ha dette?

PHP
<?php

foreach ($kjop as $key => $antall) {

    if (!$antall) continue; // Hopp over linjer med 0 som antall

    $mokk .= "blahblah";

}

?>

8199869[/snapback]

Hmm, ditt inlegg kom mens jeg knødde med koden min, men det er akkurat den der jeg plagdes med.

Slik ser "min" løsning ut, og den virker:

PHP

foreach ($kjop as $key => $antall){

if (!empty($antall)){

$mokk .="$antall stk - ".$data[$key][1]." á kr ".$data[$key][2]." totalt kr: ".number_format($antall*$data[$key][2],2)."<BR>";

}}

Nå skal jeg bare finne ut hvordan jeg får iterert totalbeløpet..

Kommer tilbake hvis (når) jeg står fast.. :)

 

Ellers til alle: Takk for hjelpen.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...