Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Odczyt tablicy z sesji
Robert3d
post 3.06.2011, 15:45:01
Post #1





Grupa: Zarejestrowani
Postów: 102
Pomógł: 3
Dołączył: 22.04.2006

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


Odczyt tablicy z sesji PROBLEM
Witam mam problem mam sobie taki oto kodzik ale nie wiem dlaczego nie wyświetlają się prawidłowe dane. Jest to wycinek kodu session start itp wszystko działa.

  1. $dane = $lacz ->query(
  2. "SELECT * FROM Jablusza.cioci;"
  3. ) or die($lacz -> error);
  4.  
  5.  
  6. $_SESSION['dane'] = $dane;
  7.  
  8. foreach($_SESSION['dane'] as $klucz => $wartosc){
  9. echo "<b>Klucz</b>: ".$klucz."- wartosc: ".$wartosc."<br>";


by nie zaśmiecać zapytanie SQL jest zmienione.

Taki mam wynik

Klucz: current_field- wartosc:
Klucz: field_count- wartosc:
Klucz: lengths- wartosc:
Klucz: num_rows- wartosc:
Klucz: type- wartosc:

Ten post edytował Robert3d 3.06.2011, 15:47:05
Go to the top of the page
+Quote Post
Fifi209
post 3.06.2011, 15:47:43
Post #2





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

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


Skąd mamy wiedzieć co zwraca query?


--------------------
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
Robert3d
post 3.06.2011, 15:55:16
Post #3





Grupa: Zarejestrowani
Postów: 102
Pomógł: 3
Dołączył: 22.04.2006

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


zwraca dane Imie nazwisko adres itp. ale nie chcą się wyświetlić po przeniesieniu ich do $_SESSION bo tak bez sesji działają poprawnie...

Ten post edytował Robert3d 3.06.2011, 15:57:07
Go to the top of the page
+Quote Post
melkorm
post 3.06.2011, 17:20:18
Post #4





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

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


  1. var_dump($dane);

Bo wątpię że query zwraca tablicę danych.


--------------------
Go to the top of the page
+Quote Post
Robert3d
post 3.06.2011, 20:27:01
Post #5





Grupa: Zarejestrowani
Postów: 102
Pomógł: 3
Dołączył: 22.04.2006

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


Dobrze może nie zbyt dokładnie wytłumaczyłem o co mi chodzi (za co przepraszam). więc teraz obszerniej.

PLIK NR 1
  1. function lacz_bd() {
  2. $wynik = new mysqli('localhost', 'root');
  3. if (!$wynik) {
  4. return false;
  5. }
  6. $wynik->autocommit(TRUE);
  7. return $wynik;
  8. }
  9. $lacz = lacz_bd();
  10. $lacz->set_charset("utf8");
  11. $dane = $lacz ->query(
  12. "SELECT * FROM dane.klienci"
  13. ) or die($lacz -> error);
  14. $_SESSION['dane'] = $dane; // <--- jest sobie session jak by 2 plik dac tutaj to by działało.
  15. header("Location: index.php") //<--- wracamy do pliku gdzie ma sie wyswietlic zawartosc


PLIK NR 2
  1. while ($row = mysqli_fetch_assoc($_SESSION['dane'])){ ?>
  2. echo $row['imie'];
  3. echo $row['nazwisko'];
  4. echo $row['mail'];
  5. echo $row['adres'];
  6. }


PROBLEM: Gdy zrobię to w jednym pliku wszystko działa... jednak jak zrobię to przez $_SESSION dane jak by to powiedzieć wyparowują?

Ten post edytował Robert3d 3.06.2011, 20:44:01
Go to the top of the page
+Quote Post
mat-bi
post 3.06.2011, 20:50:18
Post #6





Grupa: Zarejestrowani
Postów: 690
Pomógł: 92
Dołączył: 6.02.2011

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


serialize
unserialize
Go to the top of the page
+Quote Post
Robert3d
post 3.06.2011, 20:59:58
Post #7





Grupa: Zarejestrowani
Postów: 102
Pomógł: 3
Dołączył: 22.04.2006

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


Próbowałem niestety bez skutku dalej to samo ...
dalej wyskakuje


Warning: mysqli_fetch_assoc() [function.mysqli-fetch-assoc]: Couldn't fetch mysqli_result in D:[...]index.php on line 231

Ten post edytował Robert3d 3.06.2011, 21:03:50
Go to the top of the page
+Quote Post
potreb
post 3.06.2011, 21:11:41
Post #8





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


Zapisując dane przez serialize, w których masz znaki specjalne można zastosować htmlspecialchars, a przy odczycie zrobić decode. U siebie musiałem tak zrobić, ponieważ przy serializacji danych z google maps posypała mi się serializacja.

Zrób sobie var_dump sesji przed while i zobacz co masz

  1. foreach($_SESSION['cos'] as $row) {
  2. echo $row;
  3. }


I rozbij foreachem tablicę

Ten post edytował potreb 3.06.2011, 21:05:28


--------------------

Go to the top of the page
+Quote Post
Robert3d
post 3.06.2011, 21:11:50
Post #9





Grupa: Zarejestrowani
Postów: 102
Pomógł: 3
Dołączył: 22.04.2006

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


VAR_DUMP
rezultat

  1. string(115) "O:13:"mysqli_result":5:{s:13:"current_field";N;s:11:"field_count";N;s:7:"lengths";N;s:8:"num_rows";N;s:4:"type";N;}"



jak mialem rozbudowane o foreach to dane wyskakiwały mi podwójnie wink.gif ale to jak testowalem an jednym pliku.

Ten post edytował Robert3d 3.06.2011, 21:13:47
Go to the top of the page
+Quote Post
potreb
post 3.06.2011, 21:18:19
Post #10





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


A jak masz jak poniżej też masz podwójnie smile.gif
  1.  
  2. $paa = $pdo->query("SELECT * FROM tabela");
  3. $_SESSION['cos'] = $paa->Fetch(PDO::FETCH_ASSOC);
  4.  
  5. //var_dump($_SESSION['cos']);
  6.  
  7.  
  8.  
  9. foreach($_SESSION['cos'] as $row) {
  10. echo $row."<br/>";
  11. }


--------------------

Go to the top of the page
+Quote Post
Robert3d
post 3.06.2011, 21:31:12
Post #11





Grupa: Zarejestrowani
Postów: 102
Pomógł: 3
Dołączył: 22.04.2006

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


Samo wyświetlanie informacji gdy łączę się z bazą w jednym pliku nawet kopiując rezultat zapytania do $_SESSION i odczytując go ale w obrębie 1 PLIKU działa poprawnie. Problemem jest to że jak idzie drugi plik to już dupa...
Nie jestem jakiś mega wymiatacz wciąż się uczę... Ale już nie wiem jak mam to rozwiązać... zapisywanie do bazy rezulatatu zapytania tlyko po to by zapytać o rezultat zapytania z drugiego pliku mija się z celem a rozwiązaniem miała być zmienna $_SESSION ale ta nie działa dla rezultatu zapytania.
Co więcej spróbowałem przenieść zwykły string w zmiennej session i co i działa... Wiec cos musi być zle sad.gif
Go to the top of the page
+Quote Post
mortus
post 3.06.2011, 21:38:11
Post #12





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Klasa MySQLi_Result nie jest dostosowana do standardowej serializacji (prawdopodobnie dlatego, że zawiera zmienne prywatne lub chronione, które nie poddają się standardowej serializacji - "podobny" temat na tym forum już był), co równocześnie oznacza, że nie możemy przekazać obiektu tej klasy do sesji. Jedynym rozwiązaniem jest przepisanie zawartości do tablicy i zapisanie w sesji tej tablicy (zserializowanej lub nie).
[PHP] users.php - pobierz, plaintext
  1. <?php
  2. function lacz_bd() {
  3. $wynik = new mysqli('localhost', 'root');
  4. if (!$wynik) {
  5. return false;
  6. }
  7. $wynik->autocommit(TRUE);
  8. return $wynik;
  9. }
  10. $lacz = lacz_bd();
  11. $lacz->set_charset("utf8");
  12. $dane = $lacz ->query(
  13. "SELECT * FROM dane.klienci"
  14. ) or die($lacz -> error);
  15. $i = 0;
  16. while ($row = mysqli_fetch_assoc($dane)){
  17. $users[$i]['imie'] = $row['imie'];
  18. $users[$i]['nazwisko'] = $row['nazwisko'];
  19. $users[$i]['mail'] = $row['mail'];
  20. $users[$i]['adres'] = $row['adres'];
  21. $i++;
  22. }
  23. $_SESSION['dane'] = $users; // ew. serialize($users)
  24. header("Location: index.php")
[PHP] users.php - pobierz, plaintext
[PHP] index.php - pobierz, plaintext
  1. <?php
  2. $user = $_SESSION['dane']; // ew. unserialize($_SESSION['dane'])
  3. foreach($users as $number => $user) {
  4. echo $user['imie'];
  5. echo $user['nazwisko'];
  6. echo $user['mail'];
  7. echo $user['adres'];
  8. }
[PHP] index.php - pobierz, plaintext



Ten post edytował mortus 3.06.2011, 21:39:56
Go to the top of the page
+Quote Post
Robert3d
post 3.06.2011, 21:59:04
Post #13





Grupa: Zarejestrowani
Postów: 102
Pomógł: 3
Dołączył: 22.04.2006

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


mortus <-- dziękuję ci za pomoc i cenną wiedzę apropo $_SESSION oraz mysqli
Czyli w skrócie session nie lubi informacji zapisywanych bezpośrednio z bazy danych i trzeba zmienić to na zwykłą tabelę.

Problem rozwiązany. Wszystkim dziękuję za pomoc smile.gif
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: 28.06.2025 - 13:22