Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Działania arytmetyczne na zmiennych typu array - problem
Therminus
post
Post #1





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 24.05.2015

Ostrzeżenie: (0%)
-----


Mam taki kod

  1. $suma2 = "SELECT SUM(Ilosc) as suma2 FROM `budynki` WHERE `Ulica` = '$wybor' and `Kategoria` LIKE 'LU%'";
  2. $suma3 = "SELECT SUM(Ilosc) as suma3 FROM `budynki` WHERE `Ulica` = '$wybor' and `Status` = '1'";
  3.  
  4. $result2 = mysqli_query($sql, $suma2);
  5. $result3 = mysqli_query($sql, $suma3);
  6.  
  7. $ilosc_uzytk = mysqli_fetch_assoc($result2);
  8. $sum_wyn = mysqli_fetch_assoc($result3);


I teraz chcę odjąć z ogólnej liczby lokali użytkowych, ilość wynajętych.
Na chłopski rozum to poniższe powinno działać,

  1. $wolne = ($ilosc_uzytk - $sum_wyn);


ale jak pokazuje gettype:
Typ zmiennej $ilosc_uzytk to: array
Typ zmiennej $sum_wyn to: array

Działanie się nie wykonuje i stronka wysypuje się z błędami.
Co można zrobić?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
viking
post
Post #2





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Każde z tych zapytań może zwrócić dowolną ilość rekordów. Nie bardzo wiem jak ma wyglądać różnica na takich danych. Chociaż jakiś limit 1 tam dodaj jeśli ma być jeden wybrany.
https://www.php.net/manual/en/mysqli-result.fetch-column.php
No i poczytaj trochę o tablicach, jak sie do nich dobierać.
Go to the top of the page
+Quote Post
Therminus
post
Post #3





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 24.05.2015

Ostrzeżenie: (0%)
-----


Cytat(viking @ 31.07.2022, 14:30:50 ) *
Każde z tych zapytań może zwrócić dowolną ilość rekordów. Nie bardzo wiem jak ma wyglądać różnica na takich danych.

Zapytania zwracają wartości liczbowe. np 104 i 77. Dlaczego nie mogę otrzymać wyniku odejmowania tych liczb?
Go to the top of the page
+Quote Post
viking
post
Post #4





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Może przypadkowo przy małej liczbie danych zwracają ale samo zapytanie może i milion wierszy zwrócić. Zrób sobie var_dump ($sum_wyn) to zrozumiesz więcej.
Go to the top of the page
+Quote Post
Therminus
post
Post #5





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 24.05.2015

Ostrzeżenie: (0%)
-----


Cytat(viking @ 31.07.2022, 17:18:31 ) *
samo zapytanie może i milion wierszy zwrócić. Zrób sobie var_dump ($sum_wyn) to zrozumiesz więcej.

Może zwrócić, jeśli ma z czego. W moim przypadku nieco ponad 100 dla jednej przykładowej ulicy.
Wynik var_dump ($ilosc_uzytk);
array(1) { ["suma2"]=> string(3) "104" }

var_dump ($sum_wyn);
array(1) { ["suma3"]=> string(1) "4" }
(baza będzie dopiero uzupełniana)

Liczby "104" i "4" są poprawnie zwracane i wyświetlane w tabelce. Nie mogę tylko wyświetlić wyniku odejmowania.
Go to the top of the page
+Quote Post
viking
post
Post #6





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


No dobrze. A jak teraz odwołujemy się do elementów tablicy w php? Konkretnie do klucza suma2?
Go to the top of the page
+Quote Post
trueblue
post
Post #7





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


W Twoim przypadku wygodniejsze będzie użycie mysqli_fetch_column zamiast mysqli_fetch_assoc.

Ten post edytował trueblue 31.07.2022, 17:34:00
Go to the top of the page
+Quote Post
Therminus
post
Post #8





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 24.05.2015

Ostrzeżenie: (0%)
-----


Cytat(viking @ 31.07.2022, 18:17:44 ) *
No dobrze. A jak teraz odwołujemy się do elementów tablicy w php? Konkretnie do klucza suma2?


Dzięki, naprowadziłeś mnie. Już mi działa. Nie tworzę nowej zmiennej, tylko odejmowanie wykonuję w poleceniu echo
Coś takiego:

  1. echo '<tr><td></td><td><td><b>Ilość lok. wolnych</b></td><td style= "font-weight:bold"; align="center">'.(($ilosc_uzytk['suma2'])-($sum_wyn['suma3'])).'</b></td></tr>';
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 15:15