Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z zapisaniem zmiennej
Forum PHP.pl > Forum > PHP
attimo
  1. function nowy()
  2. {
  3. if ($_POST['Dodaj'])
  4. {
  5. $idd = $_POST['id'];
  6. $polaczenie = mysql_connect('...', '...', '...') or die("brak polaczenia: ".mysql_error());
  7. $baza = mysql_select_db('attimo_cba_pl',$polaczenie) or exit("nie wybrano bazy, blad". mysql_error());
  8. mysql_query("SET NAMES utf8");
  9. mysql_query("SET CHARACTER_SET utf8_polish_ci");
  10. $zapytanie = "SELECT id,nazwa, opis, zdjecie, cena FROM Produktyelektronika WHERE id = $idd";
  11. $wynik = mysql_query($zapytanie, $polaczenie) or die(mysql_error());
  12. $rekord = mysql_fetch_assoc($wynik);
  13. $_SESSION['koszyk'][$i] = $idd;
  14.  
  15. }
  16. }


Na początek może wyjaśnię jak w moim przekonaniu miało to działać. Po wciśnięciu przycisku dodaj do zmiennej tablicowej superglobalnej $_SESSION['koszyk'] chciałbym zapisać id tego właśnie produktu, aby potem moc wyswietlic produkty ktore zostaly dodane przy uzyciu wlasnie tego id. Wiem, że sposób może "toporny" ale raczej jestem samoukiem i próbuje wszystko robić na swój własny sposób. Wracając jednak do tematu id zapisuje się w tablicy, ale za kazdym razem bedzie zapisane do 0 pozycji w tablicy chciałem wstawic zmienną $i ktora po kazdym wykonaniu funkcji zwiekszalaby sie o 1. Tylko jak to zrobić nie moge przeciez ustawic wartosci 0 dla tej zmiennej na początku funkcji i potem poddać ją inkrementacji bo zawsze będzie to 0. Próbowałem użyć zmiennej globalnej przed funkcją, ale to też na niewiele się zdało.
Blame
To może $_SESSION['koszyk'][] = $idd;
attimo
Tak też próbowałem, rezultat jest taki sam choć powinno zapisać nową wartość do kolejnego elementu tablicy.
Blame
To może tak(wygooglowane):
  1. if(!isset($_SESSION['koszyk'])) //sprawdzamy czy koszyk już istnieje
  2. {
  3. $_SESSION['koszyk']=array(); //jeśli nie to tworzymy
  4. }
  5. if(!isset($_SESSION['id']))
  6. {
  7. $_SESSION['id']=0; //dzięki temu nie będzie się nadpisywać
  8. }
  9. if(isset($_GET['item']))
  10. {
  11. $_SESSION['koszyk'][$_SESSION['id']]=$idd;
  12. $_SESSION['id']++; //zwiększamy
  13. }
attimo
  1. function nowy()
  2. {
  3. if ($_POST['Dodaj'])
  4. {
  5. if(!isset($i))
  6. {
  7. $i=0;
  8. }
  9. $idd = $_POST['id'];
  10. $polaczenie = mysql_connect('...', '...', '...') or die("brak polaczenia: ".mysql_error());
  11. $baza = mysql_select_db('attimo_cba_pl',$polaczenie) or exit("nie wybrano bazy, blad". mysql_error());
  12. mysql_query("SET NAMES utf8");
  13. mysql_query("SET CHARACTER_SET utf8_polish_ci");
  14. $zapytanie = "SELECT id,nazwa, opis, zdjecie, cena FROM Produktyelektronika WHERE id = $idd";
  15. $wynik = mysql_query($zapytanie, $polaczenie) or die(mysql_error());
  16. $rekord = mysql_fetch_assoc($wynik);
  17. $_SESSION['koszyk'][$i] = $idd;
  18. $i++;
  19. print_r($_SESSION['koszyk']);
  20. }
  21. }


Pozmieniałem troche kod i teraz powinno zwiększać, niestety tak nie robi sad.gif
tehaha
napisałem Ci krótki kod zrób analogocznie, u mnie to działa
  1. if(!isset($_SESSION['cart'])){
  2. $_SESSION['cart'] = array();
  3. }
  4. $SESSION['cart'] = array_push($_SESSION['cart'],$_GET['addc']);
  5.  
  6. print_r($_SESSION['cart']);


albo wstaw to już dostosowałem
  1. if(!isset($_SESSION['koszyk'])){
  2. $_SESSION['koszyk'] = array();
  3. }
  4. $SESSION['koszyk'] = array_push($_SESSION['koszyk'],$idd);
attimo
  1. function nowy()
  2. {
  3. if ($_POST['Dodaj'])
  4. {
  5. $idd = $_POST['id'];
  6. $polaczenie = mysql_connect('mysql.cba.pl', '...', '...') or die("brak polaczenia: ".mysql_error());
  7. $baza = mysql_select_db('attimo_cba_pl',$polaczenie) or exit("nie wybrano bazy, blad". mysql_error());
  8. mysql_query("SET NAMES utf8");
  9. mysql_query("SET CHARACTER_SET utf8_polish_ci");
  10. $zapytanie = "SELECT id,nazwa, opis, zdjecie, cena FROM Produktyelektronika WHERE id = $idd";
  11. $wynik = mysql_query($zapytanie, $polaczenie) or die(mysql_error());
  12. $rekord = mysql_fetch_assoc($wynik);
  13. if(!isset($_SESSION['koszyk'])){
  14. $_SESSION['koszyk'] = array();
  15. }
  16. $SESSION['koszyk'] = array_push($_SESSION['koszyk'],$idd);
  17. print_r($_SESSION['koszyk']);
  18. }
  19. }


Wygląda to tak i niestety nie dodaje kolejnego elmentu tylko zawsze zapisuje na 0 sad.gif
tehaha
  1. #
  2. $_SESSION['koszyk'] = array_push($_SESSION['koszyk'],$idd);


zobacz brakuje tam _ przy $_SESSION
attimo
Błąd poprawiłem, ale teraz przy wyswietlaniu zawartosci tablicy
  1. print_r($_SESSION['koszyk']);
za każdym razem wyświetla 1 bez wzgledu co sie wybierze

tehaha
a spróbuj to bo w tamtym błąd zrobiłem

  1. function nowy()
  2. {
  3. if ($_POST['Dodaj'])
  4. {
  5. $idd = $_POST['id'];
  6. $polaczenie = mysql_connect('mysql.cba.pl', '...', '...') or die("brak polaczenia: ".mysql_error());
  7. $baza = mysql_select_db('attimo_cba_pl',$polaczenie) or exit("nie wybrano bazy, blad". mysql_error());
  8. mysql_query("SET NAMES utf8");
  9. mysql_query("SET CHARACTER_SET utf8_polish_ci");
  10. $zapytanie = "SELECT id,nazwa, opis, zdjecie, cena FROM Produktyelektronika WHERE id = $idd";
  11. $wynik = mysql_query($zapytanie, $polaczenie) or die(mysql_error());
  12. $rekord = mysql_fetch_assoc($wynik);
  13. if(!isset($_SESSION['koszyk'])){
  14. $_SESSION['koszyk'] = array();
  15. }
  16. array_push($_SESSION['koszyk'],$idd);
  17. print_r($_SESSION['koszyk']);
  18. }
  19. }
attimo
To samo... może błąd jest gdzieś indziej ?
Blame
A na pewno zaczynasz skrypt od session_start()? Tak dla pewności pytam winksmiley.jpg
attimo
W dokumencie gdzie wyswietlane sa produkty mialem to:
  1. if(!isset($_SESSION['koszyk'])){
  2. $_SESSION['koszyk'] = array();
  3. }

i w funkcji rowniez usunalem to z dokumentu i zostalo tylko w funkcji do tego dodalem session start() w miejscu gdzie mam wszystkie funkcje i dziala jak należy. Dziękuje za pomoc
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.