Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Przekazywanie tablicy Sesyjnej miedzy podstronami
Forum PHP.pl > Forum > Przedszkole
kielich
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 .
lewy87r
  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 ;]
kielich
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
Fifi209
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ą.
gcdreak
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.
kielich
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
melkorm
  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
kielich
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
melkorm
A czy na tej `innej` stronie masz session_start(); ?
kielich
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
melkorm
A okazałbyś kod? Ta część gdzie dodajesz do koszyka i tą gdzie wyciagasz smile.gif
kielich
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
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.