'."\n"; ?> VT5

VT5 - verkkokauppa, taso 3

Kiitos tilauksesta!'."\n"; echo '

Tilasit seuraavat tuotteet:

'."\n"; echo '

'."\n"; // tuotteet taulukkoon tiedostosta $tuotteet = file('tuotteet.txt'); $i=0; $tuotetaulukko = array(); // sessiotaulukossa tuotteet voivat olla eri järjestyksessä kuin tekstitiedostossa // sen takia käydään ensin läpi tekstitiedosto ja etsitään riveittäin sessiotaulukosta // vastaava tuote ja tulostetaan se // tämän ansiosta tuotteet tulostetaan oikeassa järjestyksessä // kyseessä siis pieni ominaisuus, joka vaatii silti paljon lisää koodia // tätä ei vaadittu tehtävässä täysiä pisteitä saadakseen // oliot hoitaa tämän 5. tasolla fiksummin, katso myös sen lähdekoodi! foreach($tuotteet as $tuote) { // hypätään eka rivi ylitse if(!$i) { $i++; continue; } // ei tulosteta kahta kertaa samaa tuotetta, jos tekstitiedostossa sattuisi // niin olemaan; tosin se ei pitäisi olla mahdollista... // tätä tarkistusta ei vaadittu täysiä pisteitä saadakseen if(!in_array(trim($tuote),$tuotetaulukko)) { $tuotetaulukko[] = trim($tuote); // etsitään oikea tuote sessioista ja tulostetaan sen tiedot foreach($_SESSION['tuotteet'] as $tuote2) { if(trim($tuote)==trim($tuote2->nimi)) { // jos tuotetta oli tilattu, niin tulostetaan tiedot if($tuote2->maara > 0) { echo htmlentities($tuote2->nimi).' '.$tuote2->maara.' kpl
'; } } } } } echo '

'."\n"; // sessiot tuhotaan, jotta lukumäärät nollia seuraavalla latauskerralla session_destroy(); echo '

Takaisin tilaussivulle

'."\n"; } else { // muuten näytetään tilaussivu ?>
'.(isset($_COOKIE['tunnistaudu'])?$_COOKIE['tunnistaudu']:$_REQUEST['nimi']); echo '

'."\n"; } else { ?>

nimi==$komponentti->nimi) { $loytyi_sama = true; break; } } // kaikki kunnossa, lisätään olio sessiotaulukkoon ja tulostetaan tiedot if(!$loytyi_sama) { $_SESSION['tuotteet'][] = $komponentti; echo $komponentti->tulosta_rivi()."\n"; } } } } else { // sivulla ollaan vähintään toista kertaa $tuotetaulukko = array(); // tekstitiedoston tuotejärjestys voi olla eri kuin sessiotaulukossa, joten // käydään läpi ensin tekstitiedosto ja etsitään vastaavat tuotteet sessiotaulukosta foreach($tuotteet as $tuote) { // varmistetaan ettei tulosteta kahta kertaa samaa tuotetta, jos // tekstitiedostossa sattuisi niin olemaan if(!in_array(trim($tuote),$tuotetaulukko)) { $tuotetaulukko[] = trim($tuote); // käydään sessiotaulukko läpi foreach($_SESSION['tuotteet'] as $tuote2) { if(trim($tuote)==trim($tuote2->nimi)) { // lisätään määrää, jos oli painettu vastaavaa lisää-painiketta if(isset($_REQUEST['lisaa_'.$tuote2->id])) { $tuote2->lisaa(); } // ja lopussa tulostetaan olio ulos echo $tuote2->tulosta_rivi()."\n"; } } } } } // muistetaan sulkea sessiot, jotta oliot tallentuvat oikein session_write_close(); ?>
TuoteKorissa

Tuotteiden muokkaussivulle