Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]phpmyadmin forsuje pod timestamp wartość NOW ?
Forum PHP.pl > Forum > Przedszkole
seba22
Mam problem,

Posiadam tabelę, a w niej różne wartości w tym date dodania materiału.
Utrzymuję ją w wartości timestamp.

Domyślnie ma wartość NULL, podczas dodawania dopisuję ją parametrem now() w zapytaniu sql.

Problem jest, gdy w phpmyadminie edytuje manualnie jakiś rekord.

Za każdym razem phpmyadmin wyświetla mi w propozycji now... w liście nie moge również doszukać się wartości "keep old"...


Czy ktoś ma jakiś pomysł co zrobić, abym mógł edytować wpisy w phpmyadminie bez resetowania daty przy każdej zmianie ?
darko
Nie wiem jak ma się do tego phpmyadmin, ale wygląda na to, jakby timestamp jednak miał ustawione: default CURRENT_TIMESTAMP Może zapoznaj się z mysql-gui-tools, szczególnie z mysql query browser (co prawda eksportu czy zrzutu danych do pliku sql tym nie wykonasz, ale do edycji jest świetne) questionmark.gif
nospor
Ustawienie pola na typ TIMESTAMP powoduję automatyczną aktualizację tego pola przy każdej edycji rekordu niezależnie czy się uzywa do tego PMA czy innego skryptu/programu do zarządzania bazą smile.gif
vokiel
Czy przypadkiem TIMESTAMP nie jest po prostu typem daty.
Dopiero dodanie CURRENT_TIMESTAMP jako wartości domyślnej powoduje automatyczne dodanie aktualnego znacznika czasu przy dodawaniu pola.
Spowodowanie, że wartość pola będzie aktuwalizowana przy każdej edycji można osiągnąć przez coś takiego:
  1. ALTER TABLE `tabela` CHANGE `data` `data` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
Może się mylę, poprawcie, jeśli tak.
nospor
Cytat
Może się mylę, poprawcie, jeśli tak.
To przeczytaj teraz doklanie to, a zrozumiesz co napisałem
http://dev.mysql.com/doc/refman/5.0/en/timestamp.html
smile.gif
vokiel
@nospor albo mnie zaraz zawstydzisz jak TurboDynoMen, albo jednak domyślnie pole TIMESTAMP się nie aktualizuje.
Zrobiłem test na MySQL 5.0.51b i bez ustalenia domyślnej wartości po dodaniu rekordu w polu nic nie ma, a bez ustalenia ON UPDATE CURRENT_TIMESTAMP po edycji rekordu też nic się nie dzieje.

Poza tym w manualu, który przytoczyłeś jest napisane:
Cytat
With a DEFAULT CURRENT_TIMESTAMP clause and no ON UPDATE clause, the column has the current timestamp for its default value but is not automatically updated.


Cytat(nospor @ 15.12.2009, 09:34:16 ) *
Ustawienie pola na typ TIMESTAMP powoduję automatyczną aktualizację tego pola przy każdej edycji rekordu niezależnie czy się uzywa do tego PMA czy innego skryptu/programu do zarządzania bazą smile.gif


Więc chyba jednak nie jest tak jak piszesz winksmiley.jpg
nospor
Ok, wprowadziłem nieco w błąd. Zapomniałem że zyjemy w czasach mysql 5 winksmiley.jpg
Moje doświadczenie z TIMESTAMP miały miejsce za czasów mysql 4 i tam było jak mówiłem. Jeśli autor tematu ma też mysql 4 to by wiele wyjaśniało winksmiley.jpg
darko
Polecam zmianę pól timestamp na datetime, format ten sam, a może być null i nie ma takich problemów (po za tym datetime nie wygasa za ileś tam lat, jak timestamp)
Deamos
Odkopię bo może się przydać dla potomnych, sam ten problem chciałem rozwiązać i znalazłem to.

Takie zachowanie phpMyAdmina jest konfigurowalne
libraries/config.default.php

Kod
    /**
     * Default functions for above defined groups
     *
     * @global array $cfg['DefaultFunctions']
     */
    $cfg['DefaultFunctions'] = array(
        'FUNC_CHAR' => '',
        'FUNC_DATE' => '',
        'FUNC_NUMBER' => '',
        'first_timestamp' => 'NOW',
        'pk_char36' => 'UUID',
    );


Wystarczy wywalić 'NOW'
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.