Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][sql] automatyczny zapis daty do pola w bazie
Forum PHP.pl > Forum > Przedszkole
kozioł
Witam ,

ciałbym aby podczas wysyłania danych do bazy , automatycznie dopisała mi się aktulana data z godziną do

kolumny 'data' w bazie danych , ale tylko w tych wierszach które aktualnie są modyfikowane.?

to częśc kodu formularza


  1. <html>
  2. <head>
  3. <title>
  4. Zawartosc bazy
  5. </title>
  6. </head>
  7. bgproperties="fixed">
  8. <form action = "rez.php" method = "POST">
  9.  
  10. <center>
  11. <H1>ZAWARTOŚĆ BAZY SQL</H1>
  12.  
  13. <?php
  14.  
  15. $conn = mysql_connect("localhost", "root", "vertrigo") or die(mysql_error());
  16. $db = mysql_select_db("baza1",$conn) or die ("nie mogę połączyć z bazą");
  17. $rodzaj=$_POST['rodzaj'];
  18. $typ=$_POST['typ'];
  19. $login=$_SESSION['user_logged'];
  20. if($rodzaj=='all')
  21. {
  22. $query = "SELECT * FROM neo WHERE rodzaj != '' and rezultat = '' and odbiorca = '$login' ";
  23. }
  24. else
  25. {
  26.  
  27. $query = "SELECT * FROM neo WHERE rodzaj = '$rodzaj' and rezultat ='' and odbiorca = '$login' ";
  28. }
  29. $result = mysql_query($query) or die("Wykonanie zapytania nie powiodło się: ".mysql_error());
  30.  
  31.  
  32.  
  33. echo
  34.  
  35. <TABLE BORDER="2">
  36. <TR>
  37. <TH>rodzaj bazy</TH>
  38. <TH>odbiorca</TH>
  39. <TH>rezultat</TH>
  40. </TR>
  41. ';
  42. while ($row = mysql_fetch_array($result))
  43. {
  44. echo '<TR>';
  45. echo '<TD>' .$row['klient']. '</TD>';
  46. echo '<TD>' .$row['rodzaj']. '</TD>';
  47. echo '<TD>' .$row['odbiorca']. '</TD>';
  48. echo '<TD>
  49. <SELECT NAME="' .$row['klient']. '">
  50. <OPTION value=""></option>
  51. <OPTION value="Pozytywny">Pozytywne</option>
  52. <OPTION value="Negatywny">Negatywne</option>
  53. <OPTION value="Nieskuteczny">Nieskuteczne</option>
  54. </SELECT>
  55. </TD>';
  56. echo '</TR>';
  57. }
  58.  
  59. echo '<input type="hidden" name="rodzaj" value="' .$rodzaj. '" /><input type="hidden" name="typ" value="' .$typ. '" />';
  60. echo '</TABLE>';
  61. echo '<input type="submit" value="Zapisz">';
  62. ?>


czy mozna zrobić tak aby dodatkowo aktualna data dopisywała się do wiersza któy modyfikuje tym formularzem?


dzięki za pomoc
abc667
a gdzie ty coś w bazie modyfikujesz bo ja nie widzę
kozioł
tam gdzie jest rezultat ,
pozytywny ,negatywny ,nieskuteczny

to jedyne wartości jakie są wybierane i dopisywane do danego wiersza w bazie ,

ale chciałbym też aby jednocześnie dopisał się data aktualizacji w tym wierszu
uli
Cytat(kozioł @ 27.06.2007, 08:36:25 ) *
tam gdzie jest rezultat ,
pozytywny ,negatywny ,nieskuteczny

to jedyne wartości jakie są wybierane i dopisywane do danego wiersza w bazie ,

ale chciałbym też aby jednocześnie dopisał się data aktualizacji w tym wierszu


Takie tematy mnie (i pewnie nie tylko mnie) poważnie osłabiają... Chcesz pomocy, a nie potrafisz pokazać skryptu, który AKTUALIZUJE bazę. Otóż chciałbym Tobie uświadomić, bo zapewne 'Twój' kod stwarza Tobie problemy, że najprawdopodobniej zapis do bazy masz w pliku rez.php

  1. <form action = "rez.php" method = "POST">


i o to pytał abc667.

Więc pokaż odpowiedni kod, bo inaczej odpowiedź brzmi:

  1. UPDATE nazwa_tabeli SET pole_z_datą='$zmienna_pobrana_z_php_z_datą_i_godziną' WHERE id_pola_do_modyfikacji='$zmienna_z_php_z_id_pola_do_modyfikacji'
kozioł
przepraszam 'uli' , tak masz rację skrypt który odpowiada za UPDATE bazy to ten:

  1. <?php
  2. $conn = mysql_connect("localhost", "root", "vertrigo") or die(mysql_error());
  3. $db = mysql_select_db("baza1",$conn) or die ("nie mogę połączyć z bazą");
  4. $rodzaj=$_POST['rodzaj'];
  5. $typ=$_POST['typ'];
  6. $login=$_SESSION['user_logged'];
  7. if($rodzaj=='all')
  8. {
  9.  
  10. $zapytanie = "SELECT * FROM neo WHERE rezultat = '' and rodzaj != '' ";
  11. }
  12. else
  13. {
  14. $zapytanie = "SELECT * FROM neo WHERE rezultat = '' and rodzaj = '$rodzaj' ";
  15. }
  16.  
  17.  
  18. $wynik = mysql_query($zapytanie) or die("Wykonanie zapytania nie powiodło się: ".mysql_error());
  19.  
  20.  
  21.  
  22. while($row = mysql_fetch_array($wynik))
  23. {
  24. $id = $row['klient'];
  25. $wartosc = $_POST[$id];
  26. $query = "UPDATE neo SET rezultat = '$wartosc' WHERE klient = '$id' ";
  27. $result = mysql_query ($query) or die("Wykonanie zapytania nie powiodło się: ".mysql_error());
  28. }
  29. ?>

i sam się osłabiam , bo im wicej czytam na temat programowania w PHP, to wydaje mi sie że coraz więcej mam przed sobą sad.gif .
uli
Spokojnie, dasz powolutku radę.

Zakładam, że w tabeli neo masz pole nazwane data.

  1. <?php
  2. $id = $row['klient'];
  3. $wartosc = $_POST[$id];
  4. $data = date("Y-m-d, G:H:i");
  5. $query = "UPDATE neo SET rezultat = '$wartosc', data='$data' WHERE klient = '$id' ";
  6. $result = mysql_query ($query) or die("Wykonanie zapytania nie powiodło się: ".mysql_error());
  7. ?>
kozioł
dzieki 'uli'

pole data w bazie ustawiłem na 'data'

ale po wybraniu update jakiegos rekordu , to oprócz tego że data zostaje wpisana do odpwiedniego rekordu który wybrałem w formularzu , to dodatkwo zostają dopisane zera wszędzie tam gdzie pole rezultat było puste. Jak zmienie w bazie wartość pola data na 'VARcHAR' to date wpisuje przy wierszu który modyfikowałem i dodatkowo wszedzie tam gdzie pole rezultat jest puste.

czyli zostawić wartość pola w bazie na 'data' ?
uli
To oczywiste, że tak się dzieje.

Wybierasz takie rekordy do modyfikacji:)
  1. <?php
  2. $zapytanie = "SELECT * FROM neo WHERE rezultat = '' and rodzaj != '' ";
  3. ?>


Wybierz wszystkie rekordy dla których rezultat jest pusty i rodzaj jest niepusty.

Lub:

  1. <?php
  2. $zapytanie = "SELECT * FROM neo WHERE rezultat = '' and rodzaj = '$rodzaj' ";
  3. ?>


Wybierz wszystkie rekordy dla których rezultat jest pusty i rodzaj = $rodzaj.


A co chcesz uzyskać??
kozioł
chcę aby dopisał mi date tylko w tym wierszu który aktualnie modyfikuję , czyli dopisuję mu w kolumnie rezultat , jakąś wartość (negatywny,pozytywny,nieskuteczny) , oczywiście to może być wiele wierszy na raz , w zależności w ilu zanaczę ten rezultat. Bo teraz jest tak że data dopisuje sie do wszystkich gdzie wartość rezultat jest pusta.

mam nadzieję że wiesz o co mi chodzi smile.gif
uli
Trochę się pogubiłem w Twoim problemie:)

No dobra, spróbujmy to uściślić:

Odczytujesz dane (1-szy post) jako rekordy, które spełniają określony warunek. I tu pytanie: Czy masz jakiś KLUCZ?
Zapytam inaczej (poprzez przykład):

W wyświetlaniu (1-szy post) masz wybór poprzez pola (rodzaj, rezultat i odbiorca). Czy w Twojej bazie jest jakieś pole (z reguły pole nazwane id), które powoduje że jest możliwość JEDNOZNACZNEGO określenia rekordu?
PRZYKŁAD (czysto teoretyczny):

Struktura bez id:

|rodzaj|rezultat|odbiorca|

Dane:
a, pozytywny, ktos_tam
a, pozytywny, ktos_tam

Wyświetlą poprawnie dane, ale nie będzie rozróżnienia rekordów (do się nie różnią).

Struktura z id:

|id|rodzaj|rezultat|odbiorca|

Dane:
1,a, pozytywny, ktos_tam
2,a, pozytywny, ktos_tam

Również wyświetlą poprawne dane, i będziesz mógł rozróżnić który to rekord (dzięki wartości id).

Mam nadzieję, że zaczynasz rozumieć o co mi chodzi...
kozioł
w mojej bazie nie ma z prawdziwego zdarzenia pola id ,

jednak w tej chwili jest nim pole 'klient ', dane w tej kolumnie nigdy sie nie powtórzą są unikatowe.
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.