Hei. Olen tehnyt tämän ( https://www.ohjelmointiputka.net/koodivinkit/25190-php-ostoskoriskripti ) koodin pohjalta suhteellisen pitkälle tehdyn hyvän ostoskorikoodin, mutta nyt tuli ongelma.
Eli tein nyt sellaisen että formilla lähetetään ostajan tiedot send.php:seen joka sitten lähettää adminille s-postin ostoksesta yms. tallentaa ostajan tiedot.
Sinne pitäisi nyt siis saada koodinpätkä, joka poistaa kaikki nuo tuotteet ostoskorista oston yhteydessä. Kyseisessä koodissa yksi tietty tuote poistetaan tällaisella koodilla:
<?php if (isset($_GET['poista']) && $_GET['poista'] == true) { //Vastaanotetaan GET-taulukon kautta lähetetty tuotteen id $poistaID = $_GET['tuoteID']; /* Luetaan edellä vastaanotetun id:n avulla oikeaa evästettä ja pilkotaan sen tiedot omiin muuttujiin */ $tiedot = explode("=",$_COOKIE['tuote'.$poistaID]); $id = $tiedot[0]; $maara = $tiedot[1]; /* Selvitetään onko tuotteita ostoskorissa enemmän kuin yksi, jotta tiedetään poistetaanko koko eväste vai päivitetäänkö määrä-tieto */ if ($maara > 1) { //Vähennetään tuotteen määrää yhdellä ja päiviteen eväste luomalla uusi... $maara--; setcookie('tuote'.$id,$id.'='.$maara,time() + 60*60*24); } else { //Tuotteiden ollessa vain yksi, koko eväste poistetaan setcookie('tuote'.$id,'',time() - 60*60*24); } ?>
mutta miten kaikki keksit saisi poistettua kerralla eikä ainoastaan yhden tuotteen?
Olen yrittänyt send.php:n loppuun mm. tällaista:
Helpompi ratkaisu olisi tallentaa koko ostoskori yhteen evästeeseen.
<?php // Tallennus: $ostoskori = array(); $ostoskori[$id1] = $maara1; $ostoskori[$id2] = $maara2; $ostoskori[$id3] = $maara3; setcookie("ostoskori", serialize($ostoskori), time() + 60 * 60 * 24); // Haku: $ostoskori = array(); if (isset($_COOKIE["ostoskori"])) { $ostoskori = @unserialize($_COOKIE["ostoskori"]); if (!$ostoskori) { $ostoskori = array(); } }
Aihe on jo aika vanha, joten et voi enää vastata siihen.