Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> automatyczne zapytanie SQL w tabeli
macieju1974
post 9.12.2021, 12:48:40
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 5.12.2021

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


Witma wszystkich,

czy można w tabeli zapisać pytanie SQL ażeby automatycznie obliczało różnicę między najnowszym rekordem a poprzednim (np. z kolumny "wskazanie") i wpisywało do kolumny (dobowy) w tej samej tabeli ?
Go to the top of the page
+Quote Post
trueblue
post 9.12.2021, 13:03:43
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Nie musisz robić tego w MySQL.
Przed wstawieniem nowego rekordu pobierz ostatnią wartość (wartość 1). Wstaw nowy rekord z wartością (wartością 2) i różnicą (wartość 2 - wartość 1).


--------------------
Go to the top of the page
+Quote Post
macieju1974
post 10.12.2021, 11:20:28
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 5.12.2021

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


Hej trueblue, czy mógłbyś podać jakiś mały przykład?
Go to the top of the page
+Quote Post
trueblue
post 10.12.2021, 11:51:59
Post #4





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Jeśli wstawiasz rekordy z poziomu skryptu PHP, to przed wstawieniem pobierasz ostatni rekord z wartością (SELECT .... ORDER BY DESC LIMIT 0,1), zapamiętujesz ją i kiedy robisz INSERT, to wstawiasz nową wartość oraz różnicę nowej wartości tej z SELECT.

Ten post edytował trueblue 10.12.2021, 12:04:11


--------------------
Go to the top of the page
+Quote Post
macieju1974
post 10.12.2021, 12:19:08
Post #5





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 5.12.2021

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


ok pobieram ostatni wpis:
  1. <?php
  2. require("connect.php");
  3.  
  4. $sql_ostatni ="SELECT wskazanie FROM Przeplywy ORDER BY reading_date DESC LIMIT 0,1";
  5.  
  6.  
  7. $result_ostatni = $conn->query($sql_ostatni);
  8.  
  9. if ($result_ostatni->num_rows > 0)
  10. {
  11. while($row = $result_ostatni->fetch_assoc())
  12. {
  13.  
  14. $output_ostatni=" "." ".$row['wskazanie'];
  15. }
  16.  
  17. }
  18. ?>


zapamiętuje go tzn.wyświetlam np:
  1. <div class="col-md-4">
  2. <div class="form-group">
  3. <label>Ostatnie wskazanie:</label>
  4. <input type="text" name="wpis_ostatni" value="<?php echo $output_ostatni ." m3";?>" class="form-control">
  5. </div>
  6. </div>
  7.  


no i teraz wrzucam :
  1. <?php
  2. require("connect.php");
  3.  
  4. $date = $_POST['wpis_data'];
  5. $wskazanie = $_POST['wpis_wskazanie'];
  6. $ostatni = $_POST['wpis_ostatni'];
  7.  
  8.  
  9. $sql_dodaj = "INSERT INTO Przeplywy(id, reading_date, wskazanie,dobowy) VALUES ('', '$date','$wskazanie'-'$ostatni')";
  10.  
  11.  
  12. if ($conn->query($sql_dodaj) === TRUE)
  13. {
  14. echo "Wpis dodano pomyślnie !";
  15. }
  16.  
  17.  
  18. else
  19. {
  20. echo "Error: " . "<br>" . $conn->error;
  21. }
  22.  
  23.  
  24. ?>
  25.  


no i nie działa,
Go to the top of the page
+Quote Post
trueblue
post 10.12.2021, 12:27:40
Post #6





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


1. Skoro pobierasz jeden rekord, to w jakim celu w pętli?
2. W jakim celu doklejasz spacje do wartości?
3. Po co wyświetlasz ostatnią wartość w formularzu, jako wartość do edycji? A jeśli ją zmienię i zatwierdzę formularz?
4. Wyświetl sobie $sql_dodaj i sprawdź jak wygląda zapytanie.
5. Używaj PDO i bindowania wartości (https://www.php.net/manual/en/book.pdo.php).


--------------------
Go to the top of the page
+Quote Post
macieju1974
post 10.12.2021, 14:45:52
Post #7





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 5.12.2021

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


Dzięki kolego, znowu mi pomogłeś, bo naprowadziłeś mnie na trop, pogłówkowałem trochę i działa... rsc.gif
Faktycznie spacje są bez niepotrzebne i bez pętli też się da.
Uczę się tego tak hobbystycznie chociaż mam 47lat i niektóre wiadomości czy zagadnienia przychodzą mi trudniej. Dobrze że są fora i tacy ludzie...
A co do Używaj PDO i bindowania wartości to muszę zaczerpnąć tematu....
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 Wersja Lo-Fi Aktualny czas: 27.04.2024 - 12:50