<?PHP session_start(); if(!isset($_SESSION["tuotteet"])){ $_SESSION["tuotteet"] = array("0"); } if($_GET["w"]=="lisaa"){ $id=$_GET["id"]; $tuotteet = $_SESSION["tuotteet"]; $B = $_SESSION["tuotteet"][0]; //$tuotteet[0]:ssa on tuotteiden määrä $B++; $_SESSION["tuotteet"][0] = $B; $tuotteet[$tuotteet[0]] = $id; $_SESSION["tuotteet"] = $tuotteet; }else if($_GET["w"]=="poista"){ $number = $_GET["n"]; unset($_SESSION["tuotteet"][$number]); $Z = $_SESSION["tuotteet"][0]; $Z--; $_SESSION["tuotteet"][0] = $Z; } PHP?>
Siis tällä saa ostoskoriin yhden tuotteen mutta seuraavaa ei, koska php scriptan suorittaminen kestää silloin yli 30s.
Jostain syystä skripti jää jumiin.
Virheen voi etsiä poistamalla skriptistä koodirivejä, kunnes skripti ei enää jumiudu. Viimeksi poistettu rivi on syynä jumiutumiseen.
Kannattaa myös tarkistella muuttujien sisältöä ja mitä istuntotiedostoon tallentuu. En ymmärrä kokonaan skriptisi toimintaa.
no vaihda ainakin rivi
$_SESSION["tuotteet"] = array("0");
muotoon
$_SESSION["tuotteet"] = array(0);
Tuo siis saa muualta käskyn joko lisätä tai poistaa tuotteen ostoskorista:
<?PHP $id=$_GET["id"]; //Haetaan tuotteen id $tuotteet = $_SESSION["tuotteet"]; //taulukko $tuotteet on taulukko $_SESSION["tuotteet"] $B = $_SESSION["tuotteet"][0]; //$tuotteet[0]:ssa on tuotteiden määrä $B++; //lisätään tuotteiden määrää $_SESSION["tuotteet"][0] = $B; //:) $tuotteet[$tuotteet[0]] = $id;//taulukossa $tuotteet ja niin mones paikka kuin tuotteita on nyt $_SESSION["tuotteet"] = $tuotteet; //joo PHP?>
Auttoiko ymmärtämään? Pystyn siis lisäämään ostoskoriin yhden tuotteen ja poistamaan sen.
edit1: Tämän jälkeen koko sivusto jolla scripti sijaitsee tuntuu olevan jumissa.
mikä toi PHP?> lopetus on? ei sinne pitäs tollasta laittaa... pelkkä ?> kelpaa.
Oletko katsonut että $_GET["n"] on jokin arvo?
Epäilen kyllä että se vika olisi tuossa koodissa, ellei sessioiden asetuksessa ole jokin outo bugi.
Juu, näköjään tuon $tuotteet[0] arvoksi ei tulekkaan se alussa määritelty 0 vaan $id. Mistäköhän se johtuu?
edit1: dodiin, lisäsin väliin et if($tuotteet[0] = ""){$tuotteet[0] = 0} ja nyt toimii. Kiitos avusta. :)
edit2: Ei toiminutkaan, vaan ostoskoriin kun lisää toista tuotetta se menee edellisen päälle.
edit3: Laitoin alkuun, että se määrittää $_SESSION["tuotteet"][0] = 0;
ja nyt toimii numerointi kuten pitää mutta silti kun yrittää lisätä toista tuotetta niin jummii.
Joo, nyt sain toimimaan. Anteeksi tuplapostaus, en voinut enää muokata edellistä. Kiitos kaikesta avusta.
edit1: Jee taas kysymys, että kuinka poiston toteuttaisi järkevimmin kun sieltä välistä pitää poistaa tietoja?
Aihe on jo aika vanha, joten et voi enää vastata siihen.