Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: setcookie
Forum PHP.pl > Forum > PHP
integer000
Witam

Mam taki skrypt:
  1. <?php
  2. $newsdata="plik.txt";
  3.  
  4. $table=file($newsdata);
  5.  
  6. $total=count($table);
  7.  
  8. $maxstron=ceil($total/10);
  9.  
  10. if(!isset($_GET['id'])) $_GET['id']=1;
  11.  
  12. $do=$_GET['id']*10;
  13.  
  14. $od=$do-10;
  15.  
  16. if($do>$total) $do=$total;
  17.  
  18. for ($i=$od; $i<$do; $i++)
  19.  
  20. {
  21.  
  22. $data=explode("*|*", $table[$i]);
  23.  
  24. echo "nazwa: $data[0]<br>cena: $data[1]<br><a href="?id=kup">kup produkt</a>";
  25.  
  26. };
  27.  
  28. for($i=1;$i<=$maxstron;$i++) echo "<a href="site.php?id=$i">$i</a> | ";
  29. ?>


i teraz chcę żeby po naciśnićciu linku "kup produkt" tworzyło się ciasteczko zawierające nazwe i cene produktu.
jeśli na przykład ktoś naciśnie "kup produkt" przy pięciu produktach to chcę żeby nazwy i ceny wszystkich produktów zapisały się w cookie.

Następnie jeśli wejdzie się na stronę "koszyk" to chciał bym tam wyświetlić to co wcześniej zostało załadowane do cookie.

Jak takie coś zrobić questionmark.gif
em1X
nie sądzisz chyba, ze bedziemy robic za Ciebie? tongue.gif

1. jezeli nie ma cookie - utworz je
2. jezeli wybrano 'Kup produkt' dopisz do wartosci cookie swój produkt
  1. <?php
  2. $_COOKIE['produkty'] .= " $jakis_produkt";
  3. ?>


3. jezeli klient wszedl na strone z koszykiem: uzyj explode" title="Zobacz w manualu php" target="_manual na wartosci ciasteczka i wyswietl produkty
integer000
Więc tak, jeśli cookie będzie się nazywać "produkty" to mogę do niego zapakować tylko jeden produkt questionmark.gif czy jakimś sposobem mogę więcej questionmark.gif a gdzie umieścić cenę tego produktu?

No i jeśli ktoś zamówi więcej to trzeba będzie zrobić więcej cookie o różnych nazwach, czy wszystkie wejdą do jednego questionmark.gif
Coyote
mozesz zrobic tablice w cookies chyba ze sie myle
lub dodawac np po "/" zapisujesz sobie w cookies id produku i potem explode
batman
Witam.

Nie da sie do ciacha zapisać tablicy. Można natomiast zrobić coś takiego:
  1. <?php
  2. $aproducts = array('id' => $id, 'sname' => $sname, 'fprice' => $fprice); // itd
  3. $sproducts = base64_encode(serialize($aproducts));
  4.  
  5. setcookie('produkty', $sproducts);
  6. ?>


A jeśli potrzebujesz użyć tablicy zapisanej w ciachu:
  1. <?php
  2. $sproducts = $_COOKIE['produkty'];
  3. $aproducts = unserialize(base64_decode($sproducts));
  4. ?>


Funkcje base64_encode i base64_decode są po to, by w przypadku wystąpienia "dziwnych" znaków, jak np polskie ogonki, nie było problemów z kodowaniem.
integer000
A dało by się do cookie wczytać zawartość jakiegoś pliku, a potem ją odczytać tak aby zachowane były wiersze questionmark.gif

np. plik wygląda tak:

qqqqqq*|*wwwwwww*|*eeeeeeee*|*rrrrrrrrrr*|*0
tttttttttttttt*|*yyyyyyyy*|*uuuuuuuuuu*|*iiiiiiiiiiiiiiii*|*0
oooooooooo*|*pppppppp*|*aaaaaaaa*|*sssssss*|*0

ma on 3 wiersze, czyli jak go wczytam do cookie to po odczytaniu będzie on wyglądał taksamo questionmark.gif czy może zrobi się z tego jedna linijka ?
Coyote
batman wlasnie nie bylem pewien czy nie mozna smile.gif ale masz racje sprawdzilem i nie mozna smile.gif
inger a nie mozesz sobie tego sprawdzic sam ? raczej zachowa taka budowe ale jestem tego w 100% pewien sprawdz to tak jak ci pisal batman
batman
Na upartego moszesz zrobić tak:

  1. <?php
  2. $rows = file('plik.txt');
  3. foreach ($rows as $row_num => $row) {
  4. $ciacho .= $row."n<br />";
  5. }
  6. setcookie('produkty', $ciacho);
  7. ?>


Po odczytaniu ciacha będziesz miał podzielony wynik na wiersze.

Coś źle wyświetla:
$ciacho .= $row."\n<br />";
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.