• 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

Object Storage Arubacloud
0 głosów
969 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,300 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,300 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,300 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ź 138 wizyt
pytanie zadane 1 września 2016 w PHP przez Q_Nick Mądrala (5,010 p.)
0 głosów
1 odpowiedź 699 wizyt
pytanie zadane 1 listopada 2017 w PHP przez mi-20 Stary wyjadacz (13,190 p.)
0 głosów
2 odpowiedzi 381 wizyt
pytanie zadane 6 października 2016 w PHP przez niezalogowany

92,572 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,959 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...