Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]wypożyczenie maszyn
krzesik
post 26.08.2024, 14:56:26
Post #1





Grupa: Zarejestrowani
Postów: 516
Pomógł: 1
Dołączył: 25.08.2012

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


Witam,

mam pewien problem ze skryptem odpowiedzialnym za wyświetlenie maszyn wolnych i wypożyczonych

mam tablicę z maszynami:
  1. CREATE TABLE `obiekty` (
  2. `id_obiektu` int(10) NOT NULL,
  3. `nazwa` text NOT NULL,
  4. `typ` text NOT NULL,
  5. `aktywny` int(1) NOT NULL,
  6. `cena` decimal(9,2) NOT NULL,
  7. `czas` text NOT NULL
  8. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

ta tablica przechowuje wszystkie maszyny

kolejną tablicą jest tablica gdzie zapisywane są rekordy z wynajmem:
  1. CREATE TABLE `rent` (
  2. `id_rent` int(10) NOT NULL,
  3. `id_obiektu` int(11) NOT NULL,
  4. `start` datetime NOT NULL,
  5. `stop` datetime NOT NULL,
  6. `cena` decimal(9,2) NOT NULL,
  7. `czas_najmu` text NOT NULL,
  8. `wartosc_najmu` decimal(9,2) NOT NULL,
  9. `login_start` text NOT NULL,
  10. `login_stop` text NOT NULL
  11. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
  12.  


w jaki sposób pokazać wszystkie maszyny z bazy to wiem:

  1. $Obiekty = "SELECT * FROM obiekty WHERE aktywny='1' ORDER BY typ ASC, nazwa ASC";
  2. $Obiekty_ = $mysqli -> query($Obiekty);

ale jak pokazać również maszyny które aktualnie sa wypożyczone?

zrobiłem tak, ale pokazuje TYLKO wypożyczone:

  1. ........
  2.  
  3. $Obiekty = "SELECT * FROM obiekty WHERE aktywny='1' ORDER BY typ ASC, nazwa ASC";
  4. $Obiekty_ = $mysqli -> query($Obiekty);
  5.  
  6.  
  7. $lp == 0;
  8.  
  9. while($r = mysqli_fetch_array($Obiekty_))
  10. {
  11. $Status = "SELECT * FROM rent WHERE id_obiektu = '$r[id_obiektu]' AND start!='' and stop =''";
  12. $Status_ = $mysqli -> query($Status);
  13.  
  14. $lp++;
  15.  
  16. echo '<tr>';
  17. echo '<td>';
  18.  
  19. if($Status_-> num_rows < 1)
  20. {
  21. echo '
  22. <div class="alert alert-info" style="height:center; width: center; border-radius: 0.5rem;" role="alert">
  23. L.p. '.$lp.' <br />
  24. Typ: '.$r[typ].' | Nr: '.$r[nazwa].'
  25. </div>
  26. ';
  27. echo '</td>';
  28. echo '</tr>';
  29. }
  30. else ($Status_-> num_rows > 0)
  31. {
  32. echo '
  33. <div class="alert alert-danger" style="height:center; width: center; border-radius: 0.5rem;" role="alert">
  34. L.p. '.$lp.' <br />
  35. Typ: '.$r[typ].' | Nr: '.$r[nazwa].'
  36. </div>
  37. ';
  38. echo '</td>';
  39. echo '</tr>';
  40. }
  41. }
  42.  
  43. .................
  44.  
  45.  




Go to the top of the page
+Quote Post
nospor
post 26.08.2024, 15:25:43
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




skoro START i STOP to pola typu DATETIME lub NULL to czemu ty to porownujesz do pustego tekstu? chyba powinines porownywac do NULL, nie sadzisz?

ps: i juzz czystej ciekawosci: czemy pola czas, czas_najmu, login_start i login_end to pola typu TEXT?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
krzesik
post 26.08.2024, 15:43:28
Post #3





Grupa: Zarejestrowani
Postów: 516
Pomógł: 1
Dołączył: 25.08.2012

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


to mi nie zrobiło żadnej różnicy, (w wyniku)
czy mam:
  1. $Status = "SELECT * FROM rent WHERE id_obiektu = '$r[id_obiektu]' AND start!='' and stop =''";
  2. $Status_ = $mysqli -> query($Status);

czy też mam:
  1. $Status = "SELECT * FROM rent WHERE id_obiektu = '$r[id_obiektu]' AND start IS NOT NULL and stop IS NULL";
  2. $Status_ = $mysqli -> query($Status);
  3.  

za każdym razem otrzymuję trafienie tylko dwóch zajętych rekordów, ale nie mam ani jednego z bazy obiektów

odpowiadając na Twoje pytanie, to prototyp dopiero "idę" w kierunku tych pól
Go to the top of the page
+Quote Post
nospor
post 26.08.2024, 15:46:35
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




pokaz przykladowe dane jakie masz w bazie i przykladowy wynik jaki chcesz otrzymac bo poprawdzie nie kumam co dostajesz i czemu wg ciebie to jest zle.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
krzesik
post 26.08.2024, 15:54:07
Post #5





Grupa: Zarejestrowani
Postów: 516
Pomógł: 1
Dołączył: 25.08.2012

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


tablica obiektów
  1. INSERT INTO `obiekty` (`id_obiektu`, `nazwa`, `typ`, `aktywny`, `cena`, `czas`) VALUES
  2. (1, '1', 'piła', 1, '20.00', '3600'),
  3. (2, '2', 'łopata', 1, '20.00', '3600'),
  4. (3, '3', 'młotek', 1, '20.00', '3600');


tablica zajętości obiektów
  1. INSERT INTO `rent` (`id_rent`, `id_obiektu`, `start`, `stop`, `cena`, `czas_najmu`, `wartosc_najmu`, `login_start`, `login_stop`, `start_str`, `stop_str`) VALUES
  2. (1, 1, '2024-08-26 14:32:10', '0000-00-00 00:00:00', '20.00', '', '0.00', 'a@b.pl', '', '2024-08-26 12:32:50', '0000-00-00 00:00:00'),
  3. (2, 2, '2024-08-26 15:20:09', '0000-00-00 00:00:00', '20.00', '', '0.00', 'a@b.pl', '', '2024-08-26 13:20:36', '0000-00-00 00:00:00');


pokazuje mi tylko rekordy z tablicy rent, a powinno pokazać również rekord '3' z tablicy obiekty
Go to the top of the page
+Quote Post
nospor
post 26.08.2024, 15:58:47
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Iterujesz po glowny OBIEKTY wiec powinno ci pokazac wszystko. Jedyne co mi przechodzi do glowy to ten twoj IF ELSE jest zwalony. Juz nie wspominaja html

Sprobuj tak i powiedz co zwraca

  1. $Obiekty = "SELECT * FROM obiekty WHERE aktywny='1' ORDER BY typ ASC, nazwa ASC";
  2. $Obiekty_ = $mysqli -> query($Obiekty);
  3.  
  4.  
  5. $lp == 0;
  6.  
  7. while($r = mysqli_fetch_array($Obiekty_))
  8. {
  9. $Status = "SELECT * FROM rent WHERE id_obiektu = '$r[id_obiektu]' AND start!='' and stop =''";
  10. $Status_ = $mysqli -> query($Status);
  11.  
  12. $lp++;
  13.  
  14. echo '<tr>';
  15. echo '<td>od obiektu: ' . $r[id_obiektu];
  16.  
  17. if($Status_-> num_rows == 0)
  18. {
  19. echo '
  20. <div class="alert alert-info" style="height:center; width: center; border-radius: 0.5rem;" role="alert">
  21. L.p. '.$lp.' <br />
  22. Typ: '.$r[typ].' | Nr: '.$r[nazwa].'
  23. </div>
  24. ';
  25. }
  26. else
  27. {
  28. echo '
  29. <div class="alert alert-danger" style="height:center; width: center; border-radius: 0.5rem;" role="alert">
  30. L.p. '.$lp.' <br />
  31. Typ: '.$r[typ].' | Nr: '.$r[nazwa].'
  32. </div>
  33. ';
  34. }
  35. echo '</td>';
  36. echo '</tr>';
  37.  
  38. }


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
krzesik
post 26.08.2024, 16:00:51
Post #7





Grupa: Zarejestrowani
Postów: 516
Pomógł: 1
Dołączył: 25.08.2012

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


teraz jest jak być powinno, dziękuję!
Go to the top of the page
+Quote Post
nospor
post 26.08.2024, 16:05:29
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Pamietaj.:

Nie ma skladni ELSE (warunek)
jest skladnia
albo ELSE
albo ELSE IF (warunek)

Zas gdy twoj IF ma tylko dwa stany to wtedy sie nie uzywa IF....ELSE IF tylko IF.. ELSE

przekombinowales z IFem poprostu.


Kolejna sprawa to nazywaj z sensem twoje zmienne

np:
nie
$Obiekty = "SELECT * FROM obiekty WHERE aktywny='1' ORDER BY typ ASC, nazwa ASC";
$Obiekty_ = $mysqli -> query($Obiekty);

a:
$sqlObiekty = "SELECT * FROM obiekty WHERE aktywny='1' ORDER BY typ ASC, nazwa ASC";
$resObiekty = $mysqli -> query($Obiekty);

Kolejna rzecz:
jak cos jest INT to nie zadne = '1' tylko poprostu =1

O jak otwierasz TR TD bez warunku, to i masz zamykac bez warunku a nie jak u ciebie bylo ze waliles zamkniecie w kazdej warunkowej sytuacji


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 28.06.2025 - 23:08