mystery Opublikowano 19 Kwietnia 2008 Zgłoś Opublikowano 19 Kwietnia 2008 (edytowane) witam robię projekt na zaliczenie z PHP. strona musi zawierać m.in. koszyk w oparciu o sesje. szukałem długo fajnego sposobu, aby jakoś ułatwić sobie i zrobić łatwo dodawanie wielu przedmiotów do stanu sesji. wykorzystanie tablicy dwuwymiarowej stanowiło wg mnie dobry pomysł. znalazłem na necie fajny skrypcik i przerobilem go na własne potrzeby. Jednak nie działa, dostaję błąd Fatal error: [] operator not supported for strings in ... rozpoczęcie sesji wygląda tak: <?php session_start(); //otwieram sesję if(!isset($_SESSION['koszyk'])) //jezeli sesja po raz pierwszy otwarta { $_SESSION['koszyk']=array(); //czyść koszyk } if(isset($_GET['item'])) { //dodajemy gitarę do koszyka $_SESSION['koszyk'][]=$_GET['item']; //przekierowanie z uwzględnieniem nie działających ciasteczek header('location: ' . $_SERVER['PHP_SELF'] . '?' . SID); exit(); }?> zostało to umieszczone dokładnie tam gdzie trzeba, czyli na samiuśkim początku pliku, przed deklaracją doctype i nie ma żadnego pustego znaku, czy innych dziwnych rzeczy przed tym. $_SESSION['koszyk'][]=$_GET['item']; powoduje, że za każdym razem po kliknięciu na "dodaj do koszyka" doda mi nowy produkt, bo [] oznaczają, że wrzuca wartość w pierwsze wolne miejsce i tablica może sobie tak rosnąć w prawie nieskończonośc :P dla mnie rozwiązanie perfect, ale nie działa php v. 5.2.5 mysql v. 5.0.51a proszę o pomoc w rozwiązaniu tego problemu, bądź podsunięcie innego pomysłu :) pozdrawiam m ps. tagi php nie działają? czy tylko ja nie potrafię z nich korzystać? sql i html działa, a php nie... edit obszedłem problem trochę na około. że też dopiero teraz na to wpadlem, ale lepiej późno niż wcale. pewne doświadczenie w programowaniu w C pomogło trochę. problem obszedłem trochę na około teraz moja sesja wygląda tak i wszystko gra :) <?php session_start(); //otwieram sesję if(!isset($_SESSION['koszyk'])) //jezeli sesja po raz pierwszy otwarta { $_SESSION['koszyk']=array(); //czyść koszyk } if(!isset($_SESSION['id'])) { $_SESSION['id']=0; //nowa zmienna } if(isset($_GET['item'])) { //dodajemy gitarę do koszyka $_SESSION['koszyk'][$_SESSION['id']]=$_GET['item']; $_SESSION['id']++; //inkrementujemy :D //przekierowanie z uwzględnieniem nie działających ciasteczek header('location: ' . $_SERVER['PHP_SELF'] . '?' . SID); exit(); }?> Edytowane 19 Kwietnia 2008 przez mystery Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
PelzaK Opublikowano 20 Kwietnia 2008 Zgłoś Opublikowano 20 Kwietnia 2008 a ten fatal error której linii dotyczy.. bo pominąłeś najistotniejszą część błędu :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
mystery Opublikowano 20 Kwietnia 2008 Zgłoś Opublikowano 20 Kwietnia 2008 a tak, głupi ja, wybacz... tej: $_SESSION['koszyk'][]=$_GET['item']; Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
m4r Opublikowano 20 Kwietnia 2008 Zgłoś Opublikowano 20 Kwietnia 2008 Nie masz nigdzie wcześniej zadeklarowanej tej zmiennej jako string? (e.g. $_SESSION['koszyk'] = "jakiś string"). Kod, który podałeś działa u mnie bez problemu, koszyk rośnie. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
mystery Opublikowano 22 Kwietnia 2008 Zgłoś Opublikowano 22 Kwietnia 2008 no właśnie nie... chyba, że PHP w wamp serverze to tak interpretuje dziwnie :P zresztą, wszystko już mi działa, a ten sposób z inkrementacją zmiennej po dodaniu czegoś do koszyka nawet ułatwił mi trochę pracę pozdro :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
m4r Opublikowano 22 Kwietnia 2008 Zgłoś Opublikowano 22 Kwietnia 2008 No wai, testowałem na wampie, xampp i xamppLite. Wszędzie zero błędów, przy E_ALL; tablica się inkrementuje. Przejrzyj kod ;] Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...