Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Formularz, mnożenie i sumowanie rekordów
Forum PHP.pl > Forum > Przedszkole
Stron: 1, 2
sauber94
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.
nospor
Ale nie bardzo rozumiem w czym problem. Nie umiesz w php zrobic 50*1 + 8*10 ?

ps: Przenosze
sauber94
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.
nospor
Pobrac z bazy info chyba umiesz? No to pobierz z bazy stawke pracownika a potem te stawke przemnoz przez wartosc z formularza
sauber94
Tak, umiem pobrać z bazy dane.
nospor
No to jaki masz problem by pobrac te stawke godzinowa pracownika?
sauber94
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:
nospor
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?
sauber94
To jednak nie umiem, mógłbyś jakiś przykład zapodać jak to powinno wyglądać?
nospor
Napisal wczesniej ze umiesz pobrac dane z bazy.
Pokaz mi kod, jak pobierasz dane z bazy z tabeli PRACOWNIK dla ID pracownika = 1
sauber94
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. }
nospor
Super, tylko ja prosilem o zapytanie, ktore pobiera pracownika o ID =1.
Umiesz pisac takie zapytania, bo masz juz jedno chocby w getOrder()
sauber94
  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?
nospor
Skoro juz robisz bindowanie, to wywal = 1 i podstaw tam wartosc bindowana tak jak to masz w getOrder
sauber94
Zamiast = 1 ma być = :id?
nospor
rety....

tak, ma byc analogicznie jak getOrder tylko zamiast tabeli order i jej pol, ma byc tabela placownik i jej pola...
sauber94
No dobrze, i co dalej?
nospor
Pokaz kod po zmianach. caly

Ale zanim to dodaj to samo dla samochodu bo masz przeciez pobrac stawke dla danego samochodu
sauber94
  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
viking
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
nospor
@viking podobnych bzdur jest cala masa w tej klasie. nie ma na chwile obecna zadnego sensu zawracac mu nimi glowy jak on nie ogarnia podstaw a co dopiero takie "zaawansowane" rzeczy jak to
@sauber94 kiedy w koncu zaczniesz czytac i podawac dokladnie to o co prosze? Naprawde kazda "komende" mam powtorzyc 10 razy?

Cytat
Jeżeli źle to mi już ręce opadajom
Prosze cie... od 3 dni przepisujesz getOrder by pobralo pracownika i ci jez rece "opadajom"...questionmark.gif? Lepiej sie nie przyznawaj. I kurcze, nie zadne "opadajom" bo mi oczy slepna jak czytam takie ortografy
sauber94
Z tym opadajom to tak sobie napisałem, wiem jak się poprawnie pisze. Popełniam błędy ale się w końcu nauczę co źle robię.

  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 getPracownikk($id)
  23. {
  24. $response = false;
  25. try {
  26. $pdo = new ConnectionDatabase();
  27. $db = $pdo->connect();
  28. $query = $db->prepare("SELECT * FROM pracownik WHERE id_pracownika = :id");
  29. $query->bindParam(':id', $id);
  30. $query->execute();
  31. $response = $query->fetchAll(PDO::FETCH_ASSOC);
  32.  
  33. } catch (PDOException $e) {
  34. $response = $e;
  35. }
  36. return $response[0];
  37. }
  38.  
  39. public function getSamochodd($id)
  40. {
  41. $response = false;
  42. try {
  43. $pdo = new ConnectionDatabase();
  44. $db = $pdo->connect();
  45. $query = $db->prepare("SELECT * FROM samochod WHERE id_samochodu = :id");
  46. $query->bindParam(':id', $id);
  47. $query->execute();
  48. $response = $query->fetchAll(PDO::FETCH_ASSOC);
  49.  
  50. } catch (PDOException $e) {
  51. $response = $e;
  52. }
  53. return $response[0];
  54. }
  55.  
  56.  
  57. public function getSamochod()
  58. {
  59. $response = false;
  60. try {
  61. $pdo = new ConnectionDatabase();
  62. $db = $pdo->connect();
  63. $query = $db->prepare("SELECT * FROM samochod");
  64. $query->execute();
  65. $response = $query->fetchAll(PDO::FETCH_ASSOC);
  66.  
  67. } catch (PDOException $e) {
  68. $response = $e;
  69. }
  70.  
  71. return $response;
  72. }
  73.  
  74. public function getOrders()
  75. {
  76. $response = false;
  77. try {
  78. $pdo = new ConnectionDatabase();
  79. $db = $pdo->connect();
  80. $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");
  81. $query->execute();
  82. $response = $query->fetchAll(PDO::FETCH_ASSOC);
  83.  
  84. } catch (PDOException $e) {
  85. $response = $e;
  86. }
  87.  
  88. return $response;
  89. }
  90.  
  91. public function getOrder($id)
  92. {
  93. $response = false;
  94. try {
  95. $pdo = new ConnectionDatabase();
  96. $db = $pdo->connect();
  97. $query = $db->prepare("SELECT * FROM zlecenie WHERE id_zlecenia = :id");
  98. $query->bindParam(':id', $id);
  99. $query->execute();
  100. $response = $query->fetchAll(PDO::FETCH_ASSOC);
  101.  
  102. } catch (PDOException $e) {
  103. $response = $e;
  104. }
  105. return $response[0];
  106. }
  107.  
  108. public function createOrders($id_pracownika, $czas, $id_samochodu, $kilometry, $koszt)
  109. {
  110. $response = false;
  111. try {
  112. $pdo = new ConnectionDatabase();
  113. $db = $pdo->connect();
  114. $query = $db->prepare("INSERT INTO zlecenie (id_pracownika, czas, id_samochodu, kilometry, koszt)
  115. VALUES (:id_pracownika, :czas, :id_samochodu, :kilometry, :koszt)");
  116. $query->bindParam(':id_pracownika', $id_pracownika);
  117. $query->bindParam(':czas', $czas);
  118. $query->bindParam(':id_samochodu', $id_samochodu);
  119. $query->bindParam(':kilometry', $kilometry);
  120. $query->bindParam(':koszt', $koszt);
  121. $query->execute();
  122. $response = true;
  123. } catch (PDOException $e) {
  124. $response = $e;
  125. }
  126. return $response;
  127. }
  128.  
  129. }


nospor
getPracownikk
getSamocodd

powaznie? NIe lepiej getPracownik zamienic na getPracownicy a getPracownikk na getPracownik? Naprawde tak sam sobie lubisz komplikowac zycie?
Identycznie z samochodami.

Majac teraz juz metody, ktore pobieraja dla danego procownika jego rekord (w tym i stawke) oraz podobnie dla samochodu, to jaki teraz masz problem by dokonczyc zadanie?
sauber94
Nie wiem jaki kod w formularzu zamieścić by mi to wszystko liczyło.
nospor
Przeciez ci juz pisalem:
nic w formularzu masz nie dodawac...
Za to po wyslaniu formularza, masz dokonac odpowiednich obliczen i wlozyc dane do bazy.
sauber94
No i tego, np. nie wiem jak zrobić. Mogę liczyć na Twoją pomoc?
nospor
Na moja pomoc? Caly czas dostajesz tu moja pomoc, ktora notabene sprowadza sie do zrobienia za ciebie wszystkiego. Zero wkladu wlasnego z twojej strony.

Robisz juz cokolwiek teraz po wyslaniu formularza? Wkladasz wtedy cos do bazy?
sauber94
Tak. Po uzupełnieniu formularza tj. wybór pracownika, podanie przepracowanej ilości godzin, wybór auta, podanie przejechanych kilometrów i wysłaniu go, dane lądują do bazy.
nospor
NO to pokaz jak to robisz... no wlacz troche wlasnego myslenia. Przeciez w ten kod trzeba teraz dodac te sume. By to zrobic, chyba musze zobaczyc co aktualnie masz, nie sadzisz?
sauber94
  1. <?php
  2.  
  3. class Homepage extends Controller
  4. {
  5. public static function index() {
  6. $resources = new Resources();
  7. Form::post(['id_pracownika', 'czas', 'id_samochodu', 'kilometry', 'koszt'], function () {
  8. $id_pracownika = $_POST['id_pracownika'];
  9. $czas = $_POST['czas'];
  10. $id_samochodu = $_POST['id_samochodu'];
  11. $kilometry = $_POST['kilometry'];
  12. $kilometry = $_POST['koszt'];
  13. $r = new Resources();
  14. $r->createOrders($id_pracownika, $czas, $id_samochodu, $kilometry, $koszt);
  15. header('Location: /zlecenie');
  16. });
  17.  
  18. return [
  19. 'pracownik' => $resources->getPracownik(),
  20. 'samochod' => $resources->getSamochod(),
  21. 'orders' => $resources->getOrders()
  22. ];
  23. }
  24. }
nospor
No i masz juz wszystkie metody niezbedne. Dlaczego nie mozesz ich wywolac?

  1. $r = new Resources();
  2. $pracownik = $r->getPracownik($id_pracownika); // w zmiennej $pracownik masz teraz dane pracownika. Wez sobie z nich stawke i pomnoz przez ilosc godzin
  3. //to samo zrob z samochodem. Masz tu wszystkie dane
  4. $r->createOrders($id_pracownika, $czas, $id_samochodu, $kilometry, $koszt);
sauber94
I jak później zapisać wynik w tabeli zlecenie w polu koszt?
nospor


Przeciez ostatnim parametrem funkcji createOrder() jest wlasnie KOSZT...
sauber94
Nie powinienem teraz wstawić do kodu coś w stylu:
$koszt = $stawka_pracownika * $czas + $koszt_km * $kilometry;
nospor
Powinienes
sauber94
Kurcze, napotkał mnie problem, formularz nie chce mi wysyłać danych do bazy. Jak dodam w bazie dane to są wyświetlane na stronie www.
nospor
Czyli chcesz powiedziec, ze przed wyliczeniem koszt, formularz ci dzialal, a po wyliczeniu koszt formularz ci przestal dzialac? Dobrze zrozumialem?

Pokaz kod po zmianach
sauber94
Coś naprawiłem ale teraz mogę tylko raz wysłać formularz, jak chcę wysłać drugi i więcej to nic się do bazy nie zapisuje. Sprawdziłem i bez tych udoskonaleń co się staram od kilku dni zrobić też jest taki sam problem. Podejrzewam, że coś od bazy daych może mi blokuje?

  1. <?php
  2.  
  3. class Homepage extends Controller
  4. {
  5. public static function index() {
  6. $resources = new Resources();
  7. Form::post(['id_pracownika', 'id_samochodu', 'kilometry', 'czas'], function () {
  8. $id_pracownika = $_POST['id_pracownika'];
  9. $id_samochodu = $_POST['id_samochodu'];
  10. $kilometry = $_POST['kilometry'];
  11. $czas = $_POST['czas'];
  12. $r = new Resources();
  13. $employee = $r->getEmployee($id_pracownika);
  14. $car = $r->getCar($id_samochodu);
  15. $r->createOrders($id_pracownika, $id_samochodu, $kilometry, $czas);
  16. header('Location: /zlecenie');
  17. });
  18.  
  19. return [
  20. 'orders' => $resources->getOrders(),
  21. 'employees' => $resources->getEmployees(),
  22. 'employee' => $resources->getEmployee(),
  23. 'cars' => $resources->getCars(),
  24. 'car' => $resources->getCar()
  25. ];
  26. }
  27.  
  28. public static function delete() {
  29. Form::post(['id'], function () {
  30. $id = $_POST['id'];
  31. $r = new Resources();
  32. $r->deleteOrder($id);
  33. header('Location: /zlecenie');
  34. });
  35.  
  36. return [
  37. ];
  38. }
  39. }



  1. <?php
  2.  
  3. class Resources
  4. {
  5.  
  6. public function getEmployees()
  7. {
  8. $response = false;
  9. try {
  10. $pdo = new ConnectionDatabase();
  11. $db = $pdo->connect();
  12. $query = $db->prepare("SELECT * FROM pracownik");
  13. $query->execute();
  14. $response = $query->fetchAll(PDO::FETCH_ASSOC);
  15.  
  16. } catch (PDOException $e) {
  17. $response = $e;
  18. }
  19.  
  20. return $response;
  21. }
  22.  
  23.  
  24. public function getEmployee()
  25. {
  26. $response = false;
  27. try {
  28. $pdo = new ConnectionDatabase();
  29. $db = $pdo->connect();
  30. $query = $db->prepare("SELECT * FROM pracownik WHERE id_pracownika = :id");
  31. $query->execute();
  32. $response = $query->fetchAll(PDO::FETCH_ASSOC);
  33.  
  34. } catch (PDOException $e) {
  35. $response = $e;
  36. }
  37.  
  38. return $response;
  39. }
  40.  
  41.  
  42. public function getCars()
  43. {
  44. $response = false;
  45. try {
  46. $pdo = new ConnectionDatabase();
  47. $db = $pdo->connect();
  48. $query = $db->prepare("SELECT * FROM samochod");
  49. $query->execute();
  50. $response = $query->fetchAll(PDO::FETCH_ASSOC);
  51.  
  52. } catch (PDOException $e) {
  53. $response = $e;
  54. }
  55.  
  56. return $response;
  57. }
  58.  
  59. public function getCar()
  60. {
  61. $response = false;
  62. try {
  63. $pdo = new ConnectionDatabase();
  64. $db = $pdo->connect();
  65. $query = $db->prepare("SELECT * FROM samochod WHERE id_samochodu = :id");
  66. $query->execute();
  67. $response = $query->fetchAll(PDO::FETCH_ASSOC);
  68.  
  69. } catch (PDOException $e) {
  70. $response = $e;
  71. }
  72.  
  73. return $response;
  74. }
  75. public function getOrders()
  76. {
  77. $response = false;
  78. try {
  79. $pdo = new ConnectionDatabase();
  80. $db = $pdo->connect();
  81. $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");
  82. $query->execute();
  83. $response = $query->fetchAll(PDO::FETCH_ASSOC);
  84.  
  85. } catch (PDOException $e) {
  86. $response = $e;
  87. }
  88.  
  89. return $response;
  90. }
  91.  
  92.  
  93. public function getOrder($id)
  94. {
  95. $response = false;
  96. try {
  97. $pdo = new ConnectionDatabase();
  98. $db = $pdo->connect();
  99. $query = $db->prepare("SELECT * FROM zlecenie WHERE id_zlecenia = :id");
  100. $query->bindParam(':id', $id);
  101. $query->execute();
  102. $response = $query->fetchAll(PDO::FETCH_ASSOC);
  103.  
  104. } catch (PDOException $e) {
  105. $response = $e;
  106. }
  107. return $response[0];
  108. }
  109.  
  110. public function createOrders($id_pracownika, $id_samochodu, $kilometry, $czas)
  111. {
  112. $response = false;
  113. try {
  114. $pdo = new ConnectionDatabase();
  115. $db = $pdo->connect();
  116. $query = $db->prepare("INSERT INTO zlecenie (id_pracownika, id_samochodu, kilometry, czas)
  117. VALUES (:id_pracownika, :id_samochodu, :kilometry, :czas)");
  118. $query->bindParam(':id_pracownika', $id_pracownika);
  119. $query->bindParam(':id_samochodu', $id_samochodu);
  120. $query->bindParam(':kilometry', $kilometry);
  121. $query->bindParam(':czas', $czas);
  122. $koszt = $stawka * $czas + $koszt_km * $kilometry;
  123. $query->execute();
  124. $response = true;
  125. } catch (PDOException $e) {
  126. $response = $e;
  127. }
  128. return $response;
  129. }
  130.  
  131.  
  132. }
nospor
Nie widze wyliczen kosztu to raz
A dwa wyswietl blad bazy

  1. } catch (PDOException $e) {
  2. die($e->getMessage());
  3. $response = $e;
  4. }
  5.  
sauber94
Edytowałem wcześniejszy post, dodałem:
  1. $koszt = $stawka * $czas + $koszt_km * $kilometry;

w createOrders i przy wysłaniu formularza wyświetla mi w Koszt '0' więc robię coś źle. Powinno pobierać stawkę od danego pracownika po id

A co do Twojej odpowiedzi 'wyświetl błąd bazy', możesz jaśniej? Mam gdzieś kod zmienić?
nospor
No przeciez podalem ci dokladnie kod na wyswietlenie bledu z bazy. Czytasz czasami co ci ludzie podaja?

Co do kosztu:
facepalmxd.gif

Ja sie poddaje. Pisalem ci rowniez wczesniej gdzie to masz wsadzic i skad masz brac dane do tego. Ty totalnie zlewasz to co sie pisze... powodzenia
sauber94
Proszę się na mnie nie złościć, staram się jak mogę. Ze zdrowiem u mnie teraz troszkę jest nie najlepiej i czuję, że nie pracuję efektywnie.
Baza naprawiona, próbuję teraz z tym kosztem gdzie to wstawić.
nospor
Napisalem ci gdzie dokladnie te wyliczenia koszt masz wstawic, podalem ci kawalek kodu nawet gdzie dokladnie ma to byc. To jest wlasnie wnerwiajace, ze ci sie pisze dokladnie co jak i gdzie, a ty to masz gdzies.
Przykro mi z powodu stanu twojego zdrowia, mam nadzieje ze sie poprawi, ale to nie usprawiedliwia faktu, ze ignorujesz co sie do ciebie pisze. I to przez caly ten watek, wielokrotnie musialem sie przypominac ze ciebie o cos prosilem a ty tego nie zrobiles, wielokrotnie pokazywalel co ma byc, a ty robiles inaczej.

sauber94
  1. public static function index() {
  2. $resources = new Resources();
  3. Form::post(['id_pracownika', 'id_samochodu', 'kilometry', 'czas'], function () {
  4. $id_pracownika = $_POST['id_pracownika'];
  5. $id_samochodu = $_POST['id_samochodu'];
  6. $kilometry = $_POST['kilometry'];
  7. $czas = $_POST['czas'];
  8. $r = new Resources();
  9. $employee = $r->getEmployee($id_pracownika);
  10. $car = $r->getCar($id_samochodu);
  11. $koszt = $stawka * $czas + $koszt_km * $kilometry;
  12. $r->createOrders($id_pracownika, $id_samochodu, $kilometry, $czas);
  13. header('Location: /zlecenie');
  14. });


Tak to ma być? Bo tylko kawałek kodu z tym wysyłałeś.
nospor
Tak, tylko kawalek kodu, bo liczylem ze na jego podstawie reszte dorobisz. Napisalem ci przeciez skad masz wziasc takie wartosci jak STAWKA czy KOSZ ZA KM. A ty co? A ty nadal uzywasz zmienne $stawka czy $koszt_km bez pobranych ich wartosci. No same sie z komsosu nie wezma. Napisalem ci wyraznie gdzie sa i skad masz je wziasc

Napisalem, ze getEmployee() zwraca ci dane pracownika, w tym i jego stawke. Te dane to tablica. Jak nie wiesz co to tablica i jak z nia pracowac to lektura obowiazkowa
https://www.php.net/manual/en/language.types.array.php
viking
A takie podstawowe pytanie. Włączyłeś raportowanie błędów? Temat przyklejony na forum. Bo skąd np w tym kodzie wzięła się $stawka?
sauber94
nospor jakiś przykład jak to powinno wyglądać mógłbyś napisać? Kobinuję i mi to nie wychodzi. Wcześniej koszt pokazywał mi 1 teraz pojawia się 2 więc dalej źle robię. Krótki jakiś przykład nad którym mogę się wzorować.

viking nie, nie włączałem raportowania błędów
nospor
Wyciagnales te stawki z tej tablicy jak napisalem? Pokaz kod
sauber94
  1. public static function index() {
  2. $resources = new Resources();
  3. Form::post(['id_pracownika', 'id_samochodu', 'kilometry', 'czas', 'koszt'], function () {
  4. $id_pracownika = $_POST['id_pracownika'];
  5. $id_samochodu = $_POST['id_samochodu'];
  6. $kilometry = $_POST['kilometry'];
  7. $czas = $_POST['czas'];
  8. $r = new Resources();
  9. $employee = $r->getEmployee($id_pracownika);
  10. $stawka = ['stawka'];
  11. $car = $r->getCar($id_samochodu);
  12. $koszt_km = ['koszt_km'];
  13. $koszt = $stawka * $czas + $koszt_km * $kilometry;
  14. $r->createOrders($id_pracownika, $id_samochodu, $kilometry, $czas, $koszt);
  15. header('Location: /zlecenie');
  16. });


Czytam po kilka razy co mi piszesz i dalej nie mogę niektórych rzeczy pojąć. Wiem, że stawkę mam wyciągnąć z pracownika, koszt_km z samochodu, ale nie umiem tego no napisać. Prosta rzecz, przed którą się ośmieszam.
nospor
Zobacz, o tu
$_POST['kilometry'];
wyciagasz wartosc kilometry z tablicy $_POST

To jest doslownie pare linijek nad tym ['stawka']... pare linijek wyzej...

znajdz 10 roznic
$_POST['kilometry']
['stawka']

a nastepnie popraw to w koncu jak trzeba
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.