• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wyświetlenie tablicy ze zmiennej sesyjnej

42 Warsaw Coding Academy
0 głosów
1,500 wizyt
pytanie zadane 18 lipca 2018 w PHP przez Bartłomiej Bolesta Obywatel (1,630 p.)

Jak w temacie. Wszystko mi działa do momentu samego wyświetlenia w pliku docelowym, bo w pliku w którym jest pobierane z bazy wszystko działa. W pliku docelowym wyświetla się jedynie ostatni rekord w bazie.

 

				if(!$result) throw new Exception($connect->error); 
				{
					$how_many_rows = $result->num_rows; 
				}
				if($how_many_rows>1) 
				{
					while($row = $result->fetch_assoc())
					{					
						$tablica = array($row['PC1'].":".$row['PC2'].":".$row['PC3']);
						$_SESSION['tablica'] = $tablica;
					}
					$result->close();
				}


Jeśli podmienię zmienną sesyjną tablica na wyświetlanie od razu to wszystkie rekordy z bazy się wyświetlają. Tj. jeśli wstawię:

 

foreach($tablica as $data)
						{
							echo '<a href="#" class="PC"><li>'.$data.'</li></a>';	
						}


Natomiast w pliku docelowym już nie:

 

<?php
															foreach($_SESSION['tablica'] as $data)
															{
																echo '<a href="#" class="PC"><li>'.$data.'</li></a>';	
															}
															?> 


I efektem jest ostatni rekord w bazie. Co mi tutaj umyka? Co powinienem dodać?

1 odpowiedź

+1 głos
odpowiedź 18 lipca 2018 przez Mariusz08 Maniak (62,280 p.)
$_SESSION['tablica'] = $tablica;

Dla każdej tablicy powinieneś utworzyć nową tablicę w $_SESSION, czyli

$_SESSION['tablica'][] = $tablica;

 

komentarz 18 lipca 2018 przez Bartłomiej Bolesta Obywatel (1,630 p.)

139 to:

foreach($_SESSION['tablica'] as $data)

 

1
komentarz 18 lipca 2018 przez Mariusz08 Maniak (62,280 p.)
Pokaż cały kod. Nie rozumiem co piszesz :/
komentarz 18 lipca 2018 przez Bartłomiej Bolesta Obywatel (1,630 p.)
Wersja 1:
while($row = $result->fetch_assoc())
					{					
						$tablica = $row['PC1'].":".$row['PC2'].":".$row['PC3'];
						$_SESSION['tablica'] = $tablica;
					}
<?php
															foreach($_SESSION['tablica'] as $data)
															{
																echo '<a href="#" class="PC"><li>'.$data.'</li></a>';	
															}
																?> 

Daje:
 

Warning: Invalid argument supplied for foreach() in E:\xampp\htdocs\GWPHP\home.php on line 139

Wersja 2 (dokładnie tak jak napisałeś):

 

while($row = $result->fetch_assoc())
					{					
						$tablica = $row['PC1'].":".$row['PC2'].":".$row['PC3'];
						$_SESSION['tablica'][] = $tablica;
					}
<?php
															foreach($tablica as $data)
															{
																echo '<a href="#" class="PC"><li>'.$data.'</li></a>';	
															}
																?> 
Fatal error: Uncaught Error: [] operator not supported for strings in E:\xampp\htdocs\GWPHP\planets.php:33 Stack trace: #0 E:\xampp\htdocs\GWPHP\home.php(5): planets() #1 {main} thrown in E:\xampp\htdocs\GWPHP\planets.php on line 33

line 33 to:

 

$_SESSION['tablica'][] = $tablica;

 

1
komentarz 18 lipca 2018 przez Mariusz08 Maniak (62,280 p.)
A w drugim przykładzie skąd w foreachu wzięła się tablica? Nie czasem $_SESSION['tablica'] ?
komentarz 18 lipca 2018 przez Bartłomiej Bolesta Obywatel (1,630 p.)

No tak. Tam powinno być $_SESSION['tablica'], bo to pomiędzy plikami przenoszę, ale napisałem tam tak, jak wrzuciłeś w tym komentarzu:

https://forum.pasja-informatyki.pl/366814/wyswietlenie-tablicy-ze-zmiennej-sesyjnej?show=366838#c366838 więc jeśli koniecznie zrobić tak to mogę jeszcze zadeklarować, ale to nic nie zmienia w efektach.

Ale doszedłem już co nie tak xD. Problem taki, że musiałem przelogować użytkownika, bo samo odświeżanie (ctrl f5) nie wystarczyło.

Więc ostatecznie jest tak jak w pierwszym poście z usunięciem array:

 

$tablica = $row['PC1'].":".$row['PC2'].":".$row['PC3'];
						$_SESSION['tablica'][] = $tablica;


Dzięki wielkie ;D.

Plus jakby ktoś kiedyś miał podobny problem to w pliku docelowym trzeba wyczyścić tą zmienną po wyświetleniu, żeby nie dodawało z każdym odświeżeniem strony.

unset($_SESSION['tablica']);

Podobne pytania

0 głosów
1 odpowiedź 189 wizyt
pytanie zadane 1 września 2016 w PHP przez Q_Nick Mądrala (5,010 p.)
0 głosów
1 odpowiedź 845 wizyt
pytanie zadane 1 listopada 2017 w PHP przez mi-20 Stary wyjadacz (13,250 p.)
0 głosów
2 odpowiedzi 477 wizyt
pytanie zadane 6 października 2016 w PHP przez niezalogowany

93,389 zapytań

142,386 odpowiedzi

322,547 komentarzy

62,749 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...