Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Przekazywanie tablicy Sesyjnej miedzy podstronami, Dziwny przypadek ?!?!
kielich
post 9.07.2009, 15:38:15
Post #1





Grupa: Zarejestrowani
Postów: 442
Pomógł: 4
Dołączył: 28.12.2008
Skąd: Warszawa

Ostrzeżenie: (20%)
X----


Witam Serdecznie mam mały problem z Tablica Sesyjną mianowicie mam kod który trzyma nazwe produktu w sesji o to kod

Kod

  $przedmioty = array();
  $przedmioty['nazwa']=$ksiazka['nazwa'];
  $przedmioty['sztuk']=$ilosc;
  $_SESSION['przedmioty']=$przedmioty;
  echo $_SESSION['przedmioty']['nazwa'];
  echo $_SESSION['przedmioty']['sztuk'];


I daje sobie tak na jednej z podstronie i jest OK wyswietla mi wszystkie nazwy jak i sztuki które są w koszyku ale najdziwniejsze jest to że kiedy na innej podstronie daje

Kod
echo $_SESSION['przedmioty']['nazwa'];
    echo $_SESSION['przedmioty']['sztuk'];


to wyświetla mi tylko ostatio dodana nazwe i sztuki do koszyka ( a nie wszystkie)

Czy jest na to rada ? Będę bardzo wdzięczny za odpowiedz
pozdrawiam .

Ten post edytował kielich 9.07.2009, 15:38:49


--------------------
Życie jest jak SESJA kiedyś wygaśnie ....

Jeśli moja odpowiedź jakoś Cię nakierowała lub pomogła kliknij Pomógł
Go to the top of the page
+Quote Post
lewy87r
post 9.07.2009, 15:48:31
Post #2





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 10.05.2008

Ostrzeżenie: (0%)
-----


  1. <pre>
  2. <?php
  3. print_r($_SESSION['przedmioty']);
  4. ?>
  5. </pre>


i sprawdzic czy sa wsyzstkie produkty ;]

a

  1. <?php
  2. echo $_SESSION['przedmioty']['nazwa'];
  3. echo $_SESSION['przedmioty']['sztuk'];
  4. ?>


to odniesienie do konkretnej wartosci w tablicy ;]

jesli chcesz koszyk to trzeba rozdzielic wszystko

typu:

  1. <?php
  2. $tab[przedmioty][id][nazwa];
  3. $tab[przedmioty][id][sztuk];
  4. ?>

i w tablicy [przedmioty] masz elementy ktore sa rozpoznawane po id a w danym id masz 2 rzeczy - nazwe i sztuki bo jak zrobisz to bez rozdzielenia to przy 3 produktach ci sie wszystko pomiesza;]

ja sobie do dodawania do koszyka zrobilem cos takeigo:

  1. <?php
  2. function session_koszyk($zam){
  3.  
  4.    if($zam[kod_produktu]){
  5.  
  6. $kod=$zam[kod_produktu];
  7. if (!isset($_SESSION['koszyk'][$kod])) $_SESSION['koszyk'][$kod]=array('kod_produktu' => $zam[kod_produktu], 'ilosc'=>$zam[ilosc], 'termin'=>$zam[termin], 'jm'=>$zam[jm],'opis'=>$zam[opis],'id'=>$zam[id],'cena'=>$zam[cena]);
  8.  
  9.    }
  10. }
  11. ?>



w $zam przesylam sobie tablice z danymi ktore chce w koszyku zapisac ;]
Go to the top of the page
+Quote Post
kielich
post 9.07.2009, 17:14:45
Post #3





Grupa: Zarejestrowani
Postów: 442
Pomógł: 4
Dołączył: 28.12.2008
Skąd: Warszawa

Ostrzeżenie: (20%)
X----


NO tak ale ja mam juz cały koszyczek i wszystko smiga ale potrzebuje miec nazwe produktów na innej podstronie w sesji czy nie da sie tego jakos zrobic np. petla czy cos ??kiedy dałem na stronie koszyka

Kod
echo $_SESSION['przedmioty']['nazwa'];


to smiga jak pisałem no ale kiedy dam na innej podstronie to jest tylko ostatio dodany produkt ja potrzebuje miec wszystkie nazwy na innej podstronie

czy jest ktos na na tym forum w stanie mi pomóc ja juz trace siły do tego kodu smile.gif jak ja mma to zrobic questionmark.gifquestionmark.gif


--------------------
Życie jest jak SESJA kiedyś wygaśnie ....

Jeśli moja odpowiedź jakoś Cię nakierowała lub pomogła kliknij Pomógł
Go to the top of the page
+Quote Post
Fifi209
post 9.07.2009, 17:18:41
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Zrób print_r całego $_SESSION i pokaż co tam trzymasz bo na "oko" to nikt Ci nie powie. Jak dla mnie w $_SESSION['przedmioty'] nie jest tablicą.


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
gcdreak
post 9.07.2009, 17:20:43
Post #5





Grupa: Zarejestrowani
Postów: 365
Pomógł: 8
Dołączył: 16.12.2008

Ostrzeżenie: (0%)
-----


To porównaj dokładnie co masz na stronie 'koszyk' z tym czego brak na stronie 'podstrona'.
Ewentualnie pokopiuj trochę kodu i powinieneś znaleść to czego brakuje.
Go to the top of the page
+Quote Post
kielich
post 9.07.2009, 18:58:28
Post #6





Grupa: Zarejestrowani
Postów: 442
Pomógł: 4
Dołączył: 28.12.2008
Skąd: Warszawa

Ostrzeżenie: (20%)
X----


OK to od nowa jest tak moze damy rade smile.gif więc
kod ktory napisałem przed chwila po odpisaniu lewy8
Kod
$tab[przedmioty][id][nazwa]=$ksiazka[nazwa];
$tab[przedmioty][id][sztuk]=$ilosc;
echo "<pre>";
print_r($tab[przedmioty]);
echo "</pre>";


daje mi
Kod
Array
(
    [id] => Array
        (
            [nazwa] => ksiazk jakas
            [sztuk] => 1
        )

)

Array
(
    [id] => Array
        (
            [nazwa] => jakis tam laptop
            [sztuk] => 6
        )

)


A kod który miałem od początku czyli
Kod
$przedmioty = array();
  $przedmioty['nazwa']=$ksiazka['nazwa'];
  $przedmioty['sztuk']=$ilosc;
  $_SESSION['przedmioty']=$przedmioty;
echo "<pre>";
print_r($_SESSION['przedmioty']);
echo "</pre>";


daje mi
Kod
Array
(
    [nazwa] => ksiazk jakas
    [sztuk] => 1
)




Array
(
    [nazwa] => jakis tam laptop
    [sztuk] => 6
)


potrzebuje nazwy i ilosc wypisać na innej podstronie niż koszyk (aby je poźniej dodać do bazy)
Ps.juz ten kawalek kodu wałkuje kilka dni i nic jedynym ratunkiem jestescie wy smile.gif
czekam na odpowiedzi



najgorsze jest to ze nie wiem jak wynik wszystkich nazw dodac do zmiennej sesyjnej by móc wyswietlic wynik tam gdzie chce czyli na innej podstronie sad.gif

czy na forum jest osoba majać taka wiedze aby mi pomóc bo kazdy tylko wejdzie przeczyta i sobie pojdzie bardzo prosze o pomoc to dla mnie strasznie wazne sad.gif

help my

Ten post edytował kielich 9.07.2009, 17:43:05


--------------------
Życie jest jak SESJA kiedyś wygaśnie ....

Jeśli moja odpowiedź jakoś Cię nakierowała lub pomogła kliknij Pomógł
Go to the top of the page
+Quote Post
melkorm
post 9.07.2009, 19:22:06
Post #7





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


  1. <?php
  2. $_SESSION[1]['nazwa'] = 'nazwa ksiazki';
  3. $_SESSION[1]['ilosc'] = 12;
  4.  
  5. $_SESSION[2]['nazwa'] = 'nazwa innej ksiazki';
  6. $_SESSION[2]['ilosc'] = 2;
  7.  
  8. $_SESSION[jakies_inne_id]['nazwa'] = 'nazwa innej ksiazki';
  9. $_SESSION[jakies_inne_id]['ilosc'] = 2;
  10.  
  11. //wyświetlanie
  12.  
  13. foreach($_SESSION as $val) {
  14.      echo $val['nazwa'].' '.$val['ilosc']."r\n";
  15. }
  16. ?>


Ah, te gotowce winksmiley.jpg

Oczywiście jak chcesz mieć konctrukcję :
  1. <?php
  2. $_SESSION['przedmiot'][id][nazwa] ....
  3. //to wystarczy zamienić w for'eachu:
  4. $_SESSION
  5. // na
  6. $_SESSION['przedmiot']
  7. ?>


I z czystego serca radze poczytać o tablicach i operacjach nan ich winksmiley.jpg By ten gotowiec nie psozedł na marne :x

Ten post edytował melkorm 9.07.2009, 19:24:39


--------------------
Go to the top of the page
+Quote Post
kielich
post 9.07.2009, 19:31:11
Post #8





Grupa: Zarejestrowani
Postów: 442
Pomógł: 4
Dołączył: 28.12.2008
Skąd: Warszawa

Ostrzeżenie: (20%)
X----


No ok dzieki wielkie swieci tongue.gif
mam tak
Kod
$_SESSION[1]['nazwa'] = $ksiazka['nazwa'];
$_SESSION[1]['ilosc'] = $ilosc;


foreach($_SESSION as $val) {
     echo $val['nazwa'].' '.$val['ilosc']."\r\n";
}

ale kiedy na innej podstronie dam sobie tę pętelkę to nic nie wyświetla

Ps. myślałem ze już wiem wszystko a jednak na temat tablic wiem mało nadrobie to smile.gif ale jak to mówią najlepiej uczy się z praktyki


--------------------
Życie jest jak SESJA kiedyś wygaśnie ....

Jeśli moja odpowiedź jakoś Cię nakierowała lub pomogła kliknij Pomógł
Go to the top of the page
+Quote Post
melkorm
post 9.07.2009, 19:33:22
Post #9





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


A czy na tej `innej` stronie masz session_start(); ?


--------------------
Go to the top of the page
+Quote Post
kielich
post 9.07.2009, 19:40:39
Post #10





Grupa: Zarejestrowani
Postów: 442
Pomógł: 4
Dołączył: 28.12.2008
Skąd: Warszawa

Ostrzeżenie: (20%)
X----


no to oczywiste...

a teraz najlepsze kiedy wyczysciłem sesje i od nowa dodałem do koszka produkt wyswietla mi nazwe ale przed nia pp ;/

dostaje takie cos

p p ksiazk jakas tam sobie 1


--------------------
Życie jest jak SESJA kiedyś wygaśnie ....

Jeśli moja odpowiedź jakoś Cię nakierowała lub pomogła kliknij Pomógł
Go to the top of the page
+Quote Post
melkorm
post 9.07.2009, 19:42:47
Post #11





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


A okazałbyś kod? Ta część gdzie dodajesz do koszyka i tą gdzie wyciagasz smile.gif


--------------------
Go to the top of the page
+Quote Post
kielich
post 9.07.2009, 20:21:31
Post #12





Grupa: Zarejestrowani
Postów: 442
Pomógł: 4
Dołączył: 28.12.2008
Skąd: Warszawa

Ostrzeżenie: (20%)
X----


tu jest koszyk
Kod
@ $nowy = $_GET['nowy'];



  if($nowy)

  {

    // wybrany nowy produkt

    if(!isset($_SESSION['koszyk']))

    {

      $_SESSION['koszyk'] = array();

      $_SESSION['produkty'] = 0;

      $_SESSION['calkowita_wartosc'] ='0';

    }

    if(isset($_SESSION['koszyk'][$nowy]))

      $_SESSION['koszyk'][$nowy]++;

    else

      $_SESSION['koszyk'][$nowy] = 1;

    $_SESSION['calkowita_wartosc'] =      

                                      oblicz_wartosc($_SESSION['koszyk']);

    $_SESSION['produkty'] = oblicz_produkty($_SESSION['koszyk']);



  }

  if(isset($_POST['zapisz']))

  {  

    foreach ($_SESSION['koszyk'] as $isbn => $ilosc)

    {

      if($_POST[$isbn]=='0')

        unset($_SESSION['koszyk'][$isbn]);

      else

        $_SESSION['koszyk'][$isbn] = $_POST[$isbn];

    }

    $_SESSION['calkowita_wartosc'] =

oblicz_wartosc($_SESSION['koszyk']);

    $_SESSION['produkty'] = oblicz_produkty($_SESSION['koszyk']);

  }

if($_SESSION['koszyk']&&array_count_values($_SESSION['koszyk']))
    wyswietl_koszyk($_SESSION['koszyk']);

  else

  {

echo "<span style='border:1px solid silver; color:#993a4e; font-weight:bold; padding:10px 250px 10px 25px; width:250px; line-height:100px;'>Koszyk jest pusty exclamation.gif!</span>";

header ('Refresh: 1; url=index.php');

  }


a tu funkcja wyswietlająca koszyk
Kod
....
  foreach ($koszyk as $isbn => $ilosc)

  {

    $ksiazka = pobierz_dane_ksiazki($isbn);


$_SESSION[1]['nazwa'] = $ksiazka['nazwa'];
$_SESSION[1]['ilosc'] = $ilosc;

foreach($_SESSION as $val) {
     echo $val['nazwa'].' '.$val['ilosc']."r\n";
}




    echo '<tr>';



      echo '<td align = center>';

  





           echo '<img src="Foto/'.$ksiazka['foto'].'" border="0" ';

           echo 'width = "150px" height = "130px;" />';

    





      echo '</td>';





    echo '<td align = left>';

    echo '<a href = "opis.php?kategoria='.$ksiazka['nazwa_kategorii'].'&nazwa='.$ksiazka['id'].'" style="color:black; text-decoration:none; margin-left:10px;">'.$ksiazka['nazwa'].'</a>';

    echo '</td><td align = center>PLN: '.str_replace(',','.',$ksiazka['cena']);

    echo '<td align = center>';

    // jeżeli zmiany są dozwolone, ilości znajdują się w polach tekstowych

    if ($zmiana == true)

      echo "<input type = 'text' name = \"$isbn\" value = \"$ilosc\" size = \"3\">";

    else

      echo $ilosc;





    echo '</td><td align = "center">PLN '.str_replace(',','.',$ksiazka['cena']*$ilosc).'<a href="delete_produkt.php?nazwa='.$ksiazka['id'].'" alt = "Usuń" title= "usuń"  ><span class="basket"></span></a></td></tr>';





  }

  // wyświetl wiersz sumy

  echo "<tr >

          <th colspan = ". (2+$obrazki) ." bgcolor=\"#5e99a3\">&nbsp;</td>

          <th align = \"center\" bgcolor=\"#5e99a3\">

            <font color='#fff'> Łącznie:</font> ".str_replace(',','.',$_SESSION['produkty'])."szt.

          </th>

          <th align = \"center\" bgcolor=\"#5e99a3\">

              <font color='#fff'> PLN:</font> ".str_replace(',','.',$_SESSION['calkowita_wartosc']);

          '</th>

          

        </tr>';

        

  // wyświetl przycisk zapisujący zmiany

  if($zmiana == true)

  {

    echo '<tr>

            <td colspan = '. (2+$obrazki) .'>&nbsp;<a href="index.php" style="color:#8a0000; padding: 0 0 10px 10px; font-size:13px; text-decoration:none;"><input type = image src = "images/kontynuacja.gif"

                     border = "0" alt = "kontynuacja zakupów" heigth = 40 width = 100></a><br /></td>

            <td align = left>

              <input type = hidden name = zapisz value = true />

              <input type = image src = "images/zapisz-zmiany.gif"

                     border = "0" alt = "Zapisz zmiany" heigth = 40 width = 100>



            </td>

            <td align=right><a href="weryfikacja.php" style="color:#8a0000; padding: 0 10px 0 0; font-size:13px; text-decoration:none;"><input type = image src = "images/do kasy.gif"

                     border = "0" alt = "Do kasy" heigth = 40 width = 100></a></td>

        </tr>';

  }

  echo '</form></table>';

}


//EDIT smile.gif

print_r z $_SESSION mam taki
Kod
Array
(
    [koszyk] => Array
        (
            [4] => 1
            [6] => 1
        )

    [produkty] => 2
    [calkowita_wartosc] => 2560.97
    [captcha] => wlikc8r
    [zalogowany] => p
    [sa] => Array
        (
            [nazwa] => ksiazk jakas
            [ilosc] => 1
            [1] => Array
                (
                    [nazwa] => ksiazk jakas
                )

            [sa] => Array
                (
                    [nazwa] => ksiazk jakas
                )

        )

    [1] => Array
        (
            [nazwa] => jakis tam laptop
            [ilosc] => 1
        )

)

Array
(
    [koszyk] => Array
        (
            [4] => 1
            [6] => 1
        )

    [produkty] => 2
    [calkowita_wartosc] => 2560.97
    [captcha] => wlikc8r
    [zalogowany] => p
    [sa] => Array
        (
            [nazwa] => ksiazk jakas
            [ilosc] => 1
            [1] => Array
                (
                    [nazwa] => ksiazk jakas
                )

            [sa] => Array
                (
                    [nazwa] => ksiazk jakas
                )

        )

    [1] => Array
        (
            [nazwa] => ksiazk jakas
            [ilosc] => 1
        )

)


to dlatego te smieci przy tej nazwie jakas rada questionmark.gif

OK smieci naprawiłem ale najlepsze jest to ze

to jest ze strony glownej
Kod
jakis tam laptopArray
(
    [koszyk] => Array
        (
            [1] => 19
            [6] => 1
        )

    [produkty] => 20
    [calkowita_wartosc] => 57040.99
    [1] => Array
        (
            [nazwa] => jakis tam laptop
            [ilosc] => 19
        )

)
ksiazk jakas Array
(
    [koszyk] => Array
        (
            [1] => 19
            [6] => 1
        )

    [produkty] => 20
    [calkowita_wartosc] => 57040.99
    [1] => Array
        (
            [nazwa] => ksiazk jakas
            [ilosc] => 1
        )

)


a to z iinnej podstrony
Kod
Array
(
    [koszyk] => Array
        (
            [1] => 19
            [6] => 1
        )

    [produkty] => 20
    [calkowita_wartosc] => 57040.99
)


tutaj i tutaj jest ta petlka
Kod
foreach($_SESSION as $val) {
     echo $val['nazwa'];

}


OK udało się wszystko ładnie do bazy dodaje wyswietla itd thx

Ten post edytował kielich 9.07.2009, 21:19:05


--------------------
Życie jest jak SESJA kiedyś wygaśnie ....

Jeśli moja odpowiedź jakoś Cię nakierowała lub pomogła kliknij Pomógł
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.06.2025 - 10:18