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

Przekazywanie wyników zapytania w Sesji

42 Warsaw Coding Academy
0 głosów
412 wizyt
pytanie zadane 22 maja 2015 w PHP przez gutek927 Obywatel (1,640 p.)
otagowane ponownie 25 maja 2015 przez gutek927

Witam,

Moim celem jest pobranie z bazy danych w jednym pliku, przekazanie do sesji i wyświetlenie na innej podstronie.

Poniżej kod pliku gdzie pobieram dane z bazy:

<?php
session_start();
require_once "polaczenie_bd.php";

$polaczenie = new mysqli ($host, $db_user, $db_password, $db_name);

$login = $_POST['login'];
$haslo = $_POST['haslo'];

$sql_q1 = "SELECT * FROM tab_admin where user='$login' AND password='$haslo'";
$sql_q2 = "SELECT * FROM tab_rezerwacja";

$rezultat1=$polaczenie-> query($sql_q1);
$rezultat2=$polaczenie-> query($sql_q2);
$_SESSION['rezultat'] = $rezultat2;

if ($rezultat1->num_rows == 1)
{
	header("Location: paneladmin.php");	
}
else
{
	$_SESSION['error'] = 1;
	header("Location: admin_loginpage.php");
}
$polaczenie->close();
?>

 

A tutaj gdzie chce je wyświetlić:

<?php 
session_start(); 
?>
<!DOCTYPE html>
<html>
<head>
    <?php require_once "biblioteki.html" ?>
</head>
<body>
<?php 
$rezultat = $_SESSION['rezultat'];
while ($row = $rezultat->fetch_assoc())
{
        echo $row['ID'];
        echo $row['Imie'];
        echo $row['Nazwisko'];
}    
?>
</body>
</html>

Póki co wyświetlanie jest zrobione roboczo jakbyś ktoś chciał o to się przyczepić. 

Zamiast oczekiwane wyniku dostaję komunikat:

Warning: mysqli_result::fetch_assoc(): Couldn't fetch mysqli_result in C:\xampp\htdocs\www\paneladmin.php on line 12

 

4 odpowiedzi

0 głosów
odpowiedź 25 maja 2015 przez gutek927 Obywatel (1,640 p.)
 
Najlepsza

Więc tak podaje rozwiązanie do tego problemu może komuś się przyda. Ze względu, że do sesji nie można bezpośrednio przypisać obiektu klasy mysqli napisałem taki kod:

if ($rezultat1->num_rows == 1)
{
	for ($i=0; $i<$ile;$i++)
	{
		foreach ($rezultat2->fetch_assoc() as $value) 
		{	
			$tab[$i][] = $value;	
    	        } 
	}
	$_SESSION['dane'] = $tab;
	header("Location: paneladmin.php");	
}	

Pętla ta wykonuje się tyle razy ile posiadmy wierszy w bazie gdzie zmienna $ile przechowuje wartość właśnie liczby wierszy. Kolejno w pętli foreach wyciągne są wartości całego wiersza z bazy i przypisywane do tablicy dwuwymiarowej. W ten sposób istnieje dostęp do każdego pola w bazie danych. Tabelę z takimi wartościami można już przypisać do zmiennej sesyjnej, a w innym pliku znowu przypisać do nowej tabeli.

<?php 
$tab_dane = $_SESSION['dane'];
?>

 

Jeżeli ktoś zna alternatywne metody z chęcią zobaczę :) 

 

+1 głos
odpowiedź 22 maja 2015 przez Comandeer Guru (607,060 p.)

Sesje nie mogą przechowywać danych typu resource (a to zwraca mysqli). Do sesji możesz zapisać tablicę, którą utworzysz choćby tak:

$result = [];

while($row = $query->fetch_assoc())
    $result[] = $row;

 

0 głosów
odpowiedź 22 maja 2015 przez Boshi VIP (100,240 p.)
Sprawdź co siedzi w zmiennej rezult po przepisaniu sesji.
0 głosów
odpowiedź 22 maja 2015 przez gutek927 Obywatel (1,640 p.)

Używając funkcji var_dump()

Warning: var_dump(): Couldn't fetch mysqli_result in C:\xampp\htdocs\www\paneladmin.php on line 13

Warning: var_dump(): Couldn't fetch mysqli_result in C:\xampp\htdocs\www\paneladmin.php on line 13

Warning: var_dump(): Property access is not allowed yet in C:\xampp\htdocs\www\paneladmin.php on line 13

Warning: var_dump(): Couldn't fetch mysqli_result in C:\xampp\htdocs\www\paneladmin.php on line 13

Warning: var_dump(): Property access is not allowed yet in C:\xampp\htdocs\www\paneladmin.php on line 13

object(mysqli_result)#1 (5) { ["current_field"]=> NULL ["field_count"]=> NULL ["lengths"]=> NULL ["num_rows"]=> NULL ["type"]=> NULL }

 

 

Podobne pytania

+1 głos
2 odpowiedzi 191 wizyt
pytanie zadane 31 marca 2022 w PHP przez NoteDS Użytkownik (560 p.)
0 głosów
1 odpowiedź 661 wizyt
pytanie zadane 12 kwietnia 2019 w PHP przez Sinq Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 499 wizyt
pytanie zadane 9 listopada 2018 w PHP przez matizuu Obywatel (1,100 p.)

93,398 zapytań

142,390 odpowiedzi

322,580 komentarzy

62,758 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
...