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

Pobieranie wiele razy jednej zmiennej poprzez zapytanie mysql oraz przekazanie otrzymanych zmiennych

VPS Starter Arubacloud
0 głosów
218 wizyt
pytanie zadane 6 lipca 2017 w PHP przez Adiks Nowicjusz (240 p.)

Ktokolwiek próbował, ktokolwiek wie ;)

Tak jak w temacie, próbuję pobierać wiele razy jedną zmienną poprzez zapytanie (mysql), a następnie przekazać wszystkie otrzymane zmienne do innej podstrony. 

Poniżej zamieszczam kod, jaki stworzyłem, czy możecie rzucić okiem i zobaczyć co źle robię i podpowiedzieć jak to poprawić?

Wyświetlając pobrane w pętli zmienne pojawia się dodatkowo '1' (pewnie przez zmienną $i=1) oraz dwa razy ostatni pobrany wiersz, co może być powodem tego błędu?

 

if($rezultat = @$polaczenie->query(
				 sprintf("SELECT miasto from polska where C = '%s'", 
				 mysqli_real_escape_string($polaczenie,$wojewodztwo))))
				 $liczba_wierszy = $rezultat->num_rows;
				 if($liczba_wierszy>0) 
				{	
					$i=1;
					while ($wiersz = $rezultat->fetch_assoc())
					{
					$_SESSION['miasto'].$i = $wiersz['miasto'].$i;
					}
					unset($_SESSION['blad']);
					$rezultat->close();
					header('Location: porownywarka.php');

porownywarka.php:

<?php
     session_start();
                    echo "<p><b>Punkty</b>".$_SESSION['PC1'];
                    echo "<br /><b>Punkty</b>".$_SESSION['PC2'];
                    echo "<br /><b>Punkty</b>".$_SESSION['PC3']."</p>";
 ?>

1 odpowiedź

0 głosów
odpowiedź 6 lipca 2017 przez Bosswell Nałogowiec (36,470 p.)
$i=1;

while ($wiersz = $rezultat->fetch_assoc())
{
	$_SESSION['miasto'].$i = $wiersz['miasto'].$i;
    $_SESSION[]['miasto'] = $wiersz['miasto'];
}

 

<?php 
     session_start(); 
                    echo "<p><b>Punkty</b>".$_SESSION[0]['miasto']; 
                    echo "<p><b>Punkty</b>".$_SESSION[1]['miasto']; 
                   echo "<p><b>Punkty</b>".$_SESSION[2]['miasto']. "</p>"; 
 ?>

 

komentarz 8 lipca 2017 przez Adiks Nowicjusz (240 p.)

Bosswell, dzięki za pomoc, już coś się dzieje, natomiast:

po wywołaniu funkcji echo (tak jak zaproponowałeś) już wszystko działa (pojawiają się wyniki), a wraz z nimi takie błędy:

Notice: Unknown: Skipping numeric key 0 in Unknown on line 0
Notice: Unknown: Skipping numeric key 1 in Unknown on line 0
Notice: Unknown: Skipping numeric key 2 in Unknown on line 0

natomiast przesyłając te zmiennie do innej podstrony już ich nie rozpoznaje:

Notice: Undefined offset: 1 in E:\xampp\htdocs\projekt\porownywarka.php on line 87
Notice: Undefined offset: 2 in E:\xampp\htdocs\projekt\porownywarka.php on line 88
Notice: Undefined offset: 3 in E:\xampp\htdocs\projekt\porownywarka.php on line 89

 

I jeszcze pytanie: chciałbym przekazywać różną liczbę zmiennych (zależne od wybranego województwa), dlatego chciałem to powiązać ze zmienną $i, która miała się zmieniać tak długo, aż "wyciągnie" wszystkie rekordy. Czy w Twoim rozwiązaniu istnieje możliwość, aby zamiast wywoływania:

echo $_SESSION[0]['miasto'];

wywołać w pętli coś na styl:

echo $_SESSION[i]['miasto'];

żeby samo sprawdzało ile tych zmiennych ma przekazać i wyświetlić?

komentarz 8 lipca 2017 przez Bosswell Nałogowiec (36,470 p.)

Spróbuj tak

while ($wiersz = $rezultat->fetch_assoc())
{
    $_SESSION['miasto'][] = $wiersz['miasto'];
}

A poźniej wyciągasz zmienne tak

foreach ($_SESSION['miasto'] as $wiersz)
{
    echo $wiersz;
}

 

komentarz 8 lipca 2017 przez Adiks Nowicjusz (240 p.)
edycja 8 lipca 2017 przez Adiks

Wpisałem sobie w phpmyadmin przykładowe zapytanie i wyrzuciło mi 9 rekordów.

Wkleiłem Twój kod, rzeczywiście działa bez błędów, natomiast zamiast 9 ściąga 8 rekordów (bez pierwszego - '2', później pojawiają się te "2") powtórzonych w ciągu 10 razy.

Masz może pomysł dlaczego tak się dzieje?

wynik wyszukania w php my admin

233320112

wynik zastosowania kodu​​​​​​33320112333201123332011233320112333201122333201122333201122333201122333201122233320112

 

 

komentarz 8 lipca 2017 przez Bosswell Nałogowiec (36,470 p.)

$_SESSION['miasta'] = $rezultat->fetch_all(MYSQLI_ASSOC);

foreach ($_SESSION['miasta'] as $wiersz)
{
    echo $wiersz['miasto'];
}

 

komentarz 8 lipca 2017 przez Adiks Nowicjusz (240 p.)
Super, wielkie dzięki, wszystko działa ;) Temat zostawmy dla potomnych, może się komuś przyda

Podobne pytania

+1 głos
1 odpowiedź 202 wizyt
pytanie zadane 24 października 2015 w SQL, bazy danych przez sliwka92 Nowicjusz (240 p.)
+1 głos
2 odpowiedzi 152 wizyt
pytanie zadane 13 listopada 2020 w SQL, bazy danych przez okti00 Obywatel (1,300 p.)
–3 głosów
2 odpowiedzi 259 wizyt

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...