Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

4 Stron V   1 2 3 > »   
Closed TopicStart new topic
> Formularz, mnożenie i sumowanie rekordów
sauber94
post 31.01.2020, 08:43:23
Post #1





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 22.05.2015

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


Cześć.

W bazie danych takie tabele jak:
- samochód (marka, model itd.)
- pracownik (imię, nazwisko itd.)

Zrobiłem formularz, w którym wybieram z listy samochód i podaję ilość przejechanych nim kilometrów oraz wybór z listy pracownika i podanie ilości przepracowanych przez niego godzin. Przykład:

Samochód: VW Polo
Ilość przejechanych km: 50
Pracownik: Adam Nowak
Ilość przepracowanych godzin: 8
Pytanie jak zrobić by bo wysłaniu formularza do bazy wyliczyło mi koszty. Zakładając że przejechany 1 km = 1 PLN, przepracowana 1h = 10 PLN. W sumie koszt powinien wyjść 130 PLN i ma pokazać się w bazie.
Go to the top of the page
+Quote Post
nospor
post 31.01.2020, 09:42:14
Post #2





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




Ale nie bardzo rozumiem w czym problem. Nie umiesz w php zrobic 50*1 + 8*10 ?

ps: Przenosze


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

"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
sauber94
post 31.01.2020, 09:59:38
Post #3





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 22.05.2015

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


Myślę, że jakiś przykład by mi pomógł w tym.

Mam w bazie przykładowo tabelę pracownika, w niej dodanego pracownika wraz z przypisaną stawką na godzinę. W nowym formularzy załóżmy o nazwie zlecenie, przy tworzeniu formularzu musi sczytywać jego stawkę i mnożyć przez podaną przeze mnie ilość przepracowanych godzin.
Go to the top of the page
+Quote Post
nospor
post 31.01.2020, 10:23:10
Post #4





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




Pobrac z bazy info chyba umiesz? No to pobierz z bazy stawke pracownika a potem te stawke przemnoz przez wartosc z formularza


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

"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
sauber94
post 2.02.2020, 17:56:05
Post #5





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 22.05.2015

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


Tak, umiem pobrać z bazy dane.
Go to the top of the page
+Quote Post
nospor
post 2.02.2020, 18:57:02
Post #6





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




No to jaki masz problem by pobrac te stawke godzinowa pracownika?


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

"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
sauber94
post 2.02.2020, 20:40:29
Post #7





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 22.05.2015

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


Napiszę tak by było wszystko zrozumiałe:
Obecnie po zmianach w bazie mam 3 tabele:
Zlecenie
- id_zlecenia
- id_pracownika
- id_samochodu
- kilometry
- czas

Pracownik:
- id_pracownika
- imie
- nazwisko
- stawka

Samochod:
- id_samochodu
- marka
- model
- koszt_1_km

Mam problem z napisaniem linii kodu, by przy uzupełnianiu formularza podebrała w zależności od id_pracownika odpowiednią stawkę, pomnożyła przez wartość przejechanych kilometrów wpisanych w formularzu (tak samo z samochodem) i zsumowała koszt a wynik by wysłało wraz z uzupełnionym formularzem do bazy, tabela zlecenie.
Wygląd formularza który wysyła dane do tabeli Zlecenie:
Go to the top of the page
+Quote Post
nospor
post 2.02.2020, 20:59:39
Post #8





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




Wysylasz formularz. W wyslanym formularzu masz ID pracownika. Majac ID pracownika, pobierasz z bazy jego stawke, mnozysz stawke przez czas, ktory tez masz z formularza, do tego dodajesz kilometry pomnozone przez stawke za kilometr i masz swoj wynik. Nastepnie ten wynik zapisujesz do bazy.

Pytam sie po raz setny: czego z tego nie umiesz zrobic? Ponoc dane z bazy umiesz pobrac. Wiec w czym co tu napisalem masz problem? Czy tak ciezko napisac?


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

"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
sauber94
post 2.02.2020, 21:27:47
Post #9





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 22.05.2015

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


To jednak nie umiem, mógłbyś jakiś przykład zapodać jak to powinno wyglądać?
Go to the top of the page
+Quote Post
nospor
post 2.02.2020, 22:12:24
Post #10





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




Napisal wczesniej ze umiesz pobrac dane z bazy.
Pokaz mi kod, jak pobierasz dane z bazy z tabeli PRACOWNIK dla ID pracownika = 1


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

"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
sauber94
post 2.02.2020, 22:45:13
Post #11





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 22.05.2015

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


Kod formularza:
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <title>Formularz</title>
  5. <meta charset="utf-8">
  6. <meta name="viewport" content="width=device-width, initial-scale=1">
  7. </head>
  8. <body>
  9. <div id="container">
  10. <h2>Wszystkie zlecenia</h2>
  11. <table class="table table-bordered">
  12. <thead>
  13. <tr>
  14. <th>Pracownik</th>
  15. <th>Czas</th>
  16. <th>Samochód</th>
  17. <th>Kilometry</th>
  18. <th>Koszt</th>
  19. </tr>
  20. </thead>
  21. <tbody>
  22. <?php
  23. foreach($orders as $order){ ?>
  24. <tr>
  25. <td><?=$order['imie']?> <?=$order['nazwisko']?></td>
  26. <td><?=$order['czas']?></td>
  27. <td><?=$order['marka']?> <?=$order['model']?></td>
  28. <td><?=$order['kilometry']?></td>
  29. </tr>
  30. <?php } ?>
  31. </tbody>
  32. </table>
  33. <h2>Pisanie nowego zlecenie</h2>
  34. <form action="" method="post">
  35. <div class="form-group">
  36. <label class="control-label col-sm-2" for="id_pracownika">Pracownik:</label>
  37. <select name="id_pracownika" id="id_pracownika" class="form-control">
  38. <?php
  39. foreach($pracownik as $pracownik){ ?>
  40. <option value="<?=$pracownik['id_pracownika']?>"><?=$pracownik['imie']." ".$pracownik['nazwisko']?></option>
  41. <?php } ?>
  42. </select>
  43. </div>
  44. <div class="form-group">
  45. <label class="control-label col-sm-2" for="czas">Czas:</label>
  46. <div>
  47. <input required type="text" class="form-control" id="czas" name="czas">
  48. </div>
  49. </div>
  50. <div class="form-group">
  51. <label class="control-label col-sm-2" for="id_samochodu">Samochód:</label>
  52. <select name="id_samochodu" id="id_samochodu" class="form-control">
  53. <?php
  54. foreach($samochod as $samochod){ ?>
  55. <option value="<?=$samochod['id_samochodu']?>"><?=$samochod['marka']." ".$samochod['model']?></option>
  56. <?php } ?>
  57. </select>
  58. </div>
  59. <div class="form-group">
  60. <label class="control-label col-sm-2" for="kilometry">Podaj kilometry:</label>
  61. <div>
  62. <input required type="text" class="form-control" id="kilometry" name="kilometry">
  63. </div>
  64. </div>
  65. <div class="form-group">
  66. <div class="col-sm-offset-2">
  67. <button type="submit" class="btn btn-danger">Wyślij</button><br />
  68. </div>
  69. </div>
  70. </form>
  71. </div>
  72. </body>
  73. </html>



Kod zapytań bazy:
  1. <?php
  2.  
  3. class Resources
  4. {
  5. public function getPracownik()
  6. {
  7. $response = false;
  8. try {
  9. $pdo = new ConnectionDatabase();
  10. $db = $pdo->connect();
  11. $query = $db->prepare("SELECT * FROM pracownik");
  12. $query->execute();
  13. $response = $query->fetchAll(PDO::FETCH_ASSOC);
  14.  
  15. } catch (PDOException $e) {
  16. $response = $e;
  17. }
  18.  
  19. return $response;
  20. }
  21.  
  22. public function getSamochod()
  23. {
  24. $response = false;
  25. try {
  26. $pdo = new ConnectionDatabase();
  27. $db = $pdo->connect();
  28. $query = $db->prepare("SELECT * FROM samochod");
  29. $query->execute();
  30. $response = $query->fetchAll(PDO::FETCH_ASSOC);
  31.  
  32. } catch (PDOException $e) {
  33. $response = $e;
  34. }
  35.  
  36. return $response;
  37. }
  38.  
  39. public function getOrders()
  40. {
  41. $response = false;
  42. try {
  43. $pdo = new ConnectionDatabase();
  44. $db = $pdo->connect();
  45. $query = $db->prepare("SELECT * FROM zlecenie INNER JOIN pracownik ON zlecenie.id_pracownika=pracownik.id_pracownika INNER JOIN samochod ON zlecenie.id_samochodu=samochod.id_samochodu");
  46. $query->execute();
  47. $response = $query->fetchAll(PDO::FETCH_ASSOC);
  48.  
  49. } catch (PDOException $e) {
  50. $response = $e;
  51. }
  52.  
  53. return $response;
  54. }
  55.  
  56. public function getOrder($id)
  57. {
  58. $response = false;
  59. try {
  60. $pdo = new ConnectionDatabase();
  61. $db = $pdo->connect();
  62. $query = $db->prepare("SELECT * FROM zlecenie WHERE id_zlecenia = :id");
  63. $query->bindParam(':id', $id);
  64. $query->execute();
  65. $response = $query->fetchAll(PDO::FETCH_ASSOC);
  66.  
  67. } catch (PDOException $e) {
  68. $response = $e;
  69. }
  70. return $response[0];
  71. }
  72.  
  73. public function createOrders($id_pracownika, $czas, $id_samochodu, $kilometry, $koszt)
  74. {
  75. $response = false;
  76. try {
  77. $pdo = new ConnectionDatabase();
  78. $db = $pdo->connect();
  79. $query = $db->prepare("INSERT INTO zlecenie (id_pracownika, czas, id_samochodu, kilometry, koszt)
  80. VALUES (:id_pracownika, :czas, :id_samochodu, :kilometry, :koszt)");
  81. $query->bindParam(':id_pracownika', $id_pracownika);
  82. $query->bindParam(':czas', $czas);
  83. $query->bindParam(':id_samochodu', $id_samochodu);
  84. $query->bindParam(':kilometry', $kilometry);
  85. $query->bindParam(':koszt', $koszt);
  86. $query->execute();
  87. $response = true;
  88. } catch (PDOException $e) {
  89. $response = $e;
  90. }
  91. return $response;
  92. }
  93.  
  94. }
Go to the top of the page
+Quote Post
nospor
post 3.02.2020, 11:26:46
Post #12





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




Super, tylko ja prosilem o zapytanie, ktore pobiera pracownika o ID =1.
Umiesz pisac takie zapytania, bo masz juz jedno chocby w getOrder()


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

"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
sauber94
post 3.02.2020, 11:45:11
Post #13





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 22.05.2015

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


  1. public function getPracownik($id)
  2. {
  3. $response = false;
  4. try {
  5. $pdo = new ConnectionDatabase();
  6. $db = $pdo->connect();
  7. $query = $db->prepare("SELECT * FROM pracownik WHERE id_pracownika = 1");
  8. $query->bindParam(':i1, $1);
  9. $query->execute();
  10. $response = $query->fetchAll(PDO::FETCH_ASSOC);
  11.  
  12. } catch (PDOException $e) {
  13. $response = $e;
  14. }
  15. return $response[0];
  16. }


Dobrze?
Go to the top of the page
+Quote Post
nospor
post 3.02.2020, 11:45:56
Post #14





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




Skoro juz robisz bindowanie, to wywal = 1 i podstaw tam wartosc bindowana tak jak to masz w getOrder


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

"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
sauber94
post 3.02.2020, 12:24:44
Post #15





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 22.05.2015

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


Zamiast = 1 ma być = :id?
Go to the top of the page
+Quote Post
nospor
post 3.02.2020, 12:28:08
Post #16





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




rety....

tak, ma byc analogicznie jak getOrder tylko zamiast tabeli order i jej pol, ma byc tabela placownik i jej pola...


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

"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
sauber94
post 3.02.2020, 12:37:57
Post #17





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 22.05.2015

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


No dobrze, i co dalej?
Go to the top of the page
+Quote Post
nospor
post 3.02.2020, 12:42:48
Post #18





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




Pokaz kod po zmianach. caly

Ale zanim to dodaj to samo dla samochodu bo masz przeciez pobrac stawke dla danego samochodu


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

"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
sauber94
post 3.02.2020, 13:08:48
Post #19





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 22.05.2015

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


  1. public function getPracownik($id)
  2. {
  3. $response = false;
  4. try {
  5. $pdo = new ConnectionDatabase();
  6. $db = $pdo->connect();
  7. $query = $db->prepare("SELECT * FROM pracownik WHERE id_pracownika = :id");
  8. $query->bindParam(':id', $id);
  9. $query->execute();
  10. $response = $query->fetchAll(PDO::FETCH_ASSOC);
  11.  
  12. } catch (PDOException $e) {
  13. $response = $e;
  14. }
  15. return $response[0];
  16. }


Jeżeli źle to mi już ręce opadajom biggrin.gif
Go to the top of the page
+Quote Post
viking
post 3.02.2020, 14:03:21
Post #20





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


Na pewno bzdurą jest blok catch. $response w przypadku błędu nie będzie żadną tablicą tylko klaską implementującą https://www.php.net/manual/en/class.throwable.php


--------------------
Go to the top of the page
+Quote Post

4 Stron V   1 2 3 > » 
Closed 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: 25.04.2024 - 13:13