Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/cookies] Problem z "wyłuskaniem" z tablicy
Forum PHP.pl > Forum > PHP
oomaster
Witam,

Mam problem z wyciągnięciem z tablicy każdego numera i za pomocą niego rekordu z bazy. Może wytłumacze bardziej obrazkowo winksmiley.jpg.

W cookies mam "koszyk" a zawartość jego 12|32|456|667|90|5|2

teraz chcę aby skrypt rozdzielił każdy numer i zastosowałem tablice.

No i teraz największy problem jak teraz wyłuskać po koleji każdy numer aby z bazy dane rekordy wyświetlić?

  1. <?php
  2.  
  3. //pobierasz do tymaczasowej zmiennej zawarość ciastka "koszyk"
  4. $_cookie=$_COOKIE['koszyk'];
  5.  
  6. //dopisujesz do zmiennej wartość: |abc|def|ghi
  7. $_cookie.='|abc|def|ghi';
  8.  
  9. $tekst = explode("|", trim($_cookie));
  10.  
  11. print_r ($tekst);
  12.  
  13. $tekst = array_flip(array_flip($tekst));
  14. ksort($tekst);
  15.  
  16. $kurde = implode("|", $tekst);
  17.  
  18. echo $kurde;
  19.  
  20. //wysyłasz ciastko "koszyk" o nowej treści (stare ciastko zostanie nadpisane)
  21. setcookie('koszyk', $kurde, time()+123456);
  22.  
  23. ?>


A to co widze sad.gif

Kod
Array ( [0] => [1] => 34 [2] => 12 [3] => 786 [4] => 56 [5] => 44 [6] => 12 [7] => abc [8] => def [9] => ghi [10] => abc [11] => def [12] => ghi [13] => abc [14] => def [15] => ghi [16] => abc [17] => def [18] => ghi [19] => abc [20] => def [21] => ghi ) |34|786|56|44|12|abc|def|ghi
Warning: Cannot modify header information - headers already sent by (output started at /home/balor/domains/balor.xvo.pl/public_html/test/index.php:11) in /home/balor/domains/balor.xvo.pl/public_html/test/index.php on line 21
Statozor
setcookie() musi zostac zastosowanie przed wyslaniem jakichkolwiek informacji do przeglądarki. Zbuforuj wyjście i będzie działać
oomaster
Czyli jak ja mam to zrobić możesz przykład dać ?
mike
No pomyśl choć troszkę.
Masz dać setcookie() zanim wyślesz jakiekolwied dane do pzreglądarki, czyli zanim cokolwiek wyświetlisz, czyli zanim skorzystasz z echo()
oomaster
  1. <?php
  2.  
  3. //pobierasz do tymaczasowej zmiennej zawarość ciastka "koszyk"
  4. $_cookie=$_COOKIE['koszyk'];
  5.  
  6. //dopisujesz do zmiennej wartość: |abc|def|ghi
  7. $_cookie.='|abc|def|ghi';
  8.  
  9. $tekst = explode("|", trim($_cookie));
  10.  
  11. print_r ($tekst);
  12.  
  13. $tekst = array_flip(array_flip($tekst));
  14. ksort($tekst);
  15.  
  16. $kurde = implode("|", $tekst);
  17.  
  18. //wysyłasz ciastko "koszyk" o nowej treści (stare ciastko zostanie nadpisane)
  19. setcookie('koszyk', $kurde, time()+123456);
  20.  
  21. echo $kurde;
  22.  
  23. ?>


Nie działa sad.gif Znowu ten błąd a nie moge wcześniej !
mike
print_r ($tekst); wywala output do przeglądarki. Nie dziw się więc, że znów jest ten błęd.
NIC nie może pójść do przeglądarki przed użyciem setcookie()
oomaster
EDIT:// Działa mistrzu dzięki wielkie

  1. <?php
  2.  
  3. //pobierasz do tymaczasowej zmiennej zawarość ciastka "koszyk"
  4. $_cookie=$_COOKIE['koszyk'];
  5.  
  6. //dopisujesz do zmiennej wartość: |abc|def|ghi
  7. $_cookie.='|abc|def|ghi';
  8.  
  9. $tekst = explode("|", trim($_cookie));
  10.  
  11. $kurde = implode("|", $tekst);
  12.  
  13. $tekst = array_flip(array_flip($tekst));
  14. ksort($tekst);
  15.  
  16. setcookie('koszyk', $kurde, time()+123456);
  17.  
  18. print_r ($tekst);
  19. echo "<br/><br/>";
  20. echo $kurde;
  21.  
  22. ?>


Ale teraz mi nie działa funkcja array_flip(array_flip($tekst)); która ma usuwać powtórki w tablicy i dodatkow tablica mi sie skróciła sad.gif

Cytat
Array ( [0] => [1] => 34 [3] => 786 [4] => 56 [5] => 44 [6] => 12 [34] => abc [35] => def [36] => ghi )

|34|12|786|56|44|12|abc|def|ghi|abc|def|ghi|abc|def|ghi|abc|def|ghi|abc|def|ghi|
abc|def|ghi|abc|def|ghi|abc|def|ghi|abc|def|ghi|abc|def|ghi


Sorry ,że dwa posty na raz ale działa smile.gif dzięki biggrin.gif
mike
Działa, działa.
Pomysl jaki to ma sens:
  1. <?php
  2.  
  3. // ...
  4. $tekst = array_flip(array_flip($tekst));
  5. // ...
  6.  
  7. ?>
Odwracasz tablicę, a potem odwracasz ją raz jeszcze tak jak była tongue.gif
oomaster
A przepraszam nie wiesz czasami jak teraz zrobić aby teraz według tych numerków pobrać z bazy wybrane produkty questionmark.gif?

Rozumiesz są |34|786|56|44|12|

i chce z bazy produkt pobrać id każdego z produktów który jest wyżej czyli 34|786|56|44|12|

Przepraszam,że 2 posty ale czy ktoś nie wie bo już mam siły kombinuje, kombinuje i nic nie wychodzi...
nospor
Cytat
z produktów który jest wyżej
Ale oco chodzi?

Ja ci podam jak pobrac rekord ktory ma taki sam ID:
  1. <?php
  2. $tab = array(4,7,2);
  3. $sql = 'select * from table where ID in ('.implode(',',$tab).')';
  4. ?>

Oto chodzi?
oomaster
Chodzi o to ,żebym z tablicy wyciąghną dane i je przetworzył aby wyswietliły się ekordy odpowiednie np. w tablicy jest 23|223|67|678| i che aby mysql zwróciło mi rekordy które mają id: 23|223|67|678

EDIT:Próbowałem na inne sposoby nawet bez $tekst = explode("|", trim($_cookie)); i tez kurde ten błąd

Coś nie działa sad.gif
  1. <?php
  2.  
  3. //pobierasz do tymaczasowej zmiennej zawarość ciastka "koszyk"
  4. $_cookie=$_COOKIE['koszyk'];
  5.  
  6. $tekst = explode("|", trim($_cookie));
  7.  
  8. $QuerResult=mysql_query('select * from bal_kat where ID in ('.implode(',',$tekst).')');
  9.  
  10. while($wyk=mysql_fetch_array($QuerResult)){
  11.  
  12. echo "to moze jest ".$wyk[nazwa]." to! ";
  13. }
  14. ?>


Cytat
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/balor/domains/balor.xvo.pl/public_html/test/add.php on line 11
nospor
oj, czy zawsze trzeba te podstawy podawac? Sprawdz jak wyglada zapytanie, jaki jest blad:
  1. <?php
  2. $zap = 'select * from bal_kat where ID in ('.implode(',',$tekst).')';
  3. echo $zap;
  4. $QuerResult=mysql_query($zap) or die(mysql_error());
  5. ?>
oomaster
NIe wiem nie wiem sad.gifsad.gif

  1. <?
  2. $zap = 'select * from bal_kat where ID in '.implode('|',$tekst').' LIMIT 10;
  3. echo $zap;
  4. $QuerResult=mysql_query($zap) or die(mysql_error());
  5.  
  6. echo "to moze jest ".$QuerResult[nazwa]." to! ";
  7. ?>


Cytat
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /home/bal/domains/bal.xvo.pl/public_html/test/add.php on line 8
nospor
o zgrozo... ale kopiuj chociaz poprawnie....
zaraz zamkne i otworze az wkoncu sie wysilisz a nie z byle popierdulka na forum lecisz, szczegolnie ze blad leci bo kopiowac nie umiesz
wojski696969
Jeżeli dostajesz błąd że headers already sent...

na początku skryptu, na samej górze:

  1. <?
  2. ?>


a na samym końcu:

  1. <?
  2. ?>


Wtedy morzesz wysyłać Cookie w dowolnym momencie a ne tylko na początku.. to samo tyczy sie wysyłania headerów...

Pozdrawiam...
oomaster
Dzięki panowie a w szczególności nospor'owi za cierpliwość i poświęcenie czasu smile.gif
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.