Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Działania arytmetyczne na zmiennych typu array - problem
Forum PHP.pl > Forum > Przedszkole
Therminus
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ć?
viking
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ć.
Therminus
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?
viking
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.
Therminus
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.
viking
No dobrze. A jak teraz odwołujemy się do elementów tablicy w php? Konkretnie do klucza suma2?
trueblue
W Twoim przypadku wygodniejsze będzie użycie mysqli_fetch_column zamiast mysqli_fetch_assoc.
Therminus
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>';
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.