• 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
287 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ź 223 wizyt
pytanie zadane 24 października 2015 w SQL, bazy danych przez sliwka92 Nowicjusz (240 p.)
+1 głos
2 odpowiedzi 182 wizyt
pytanie zadane 13 listopada 2020 w SQL, bazy danych przez okti00 Obywatel (1,590 p.)
–3 głosów
2 odpowiedzi 300 wizyt

93,023 zapytań

141,986 odpowiedzi

321,288 komentarzy

62,368 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

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...