Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[mysql+php] - Wyświetlenie nazwy kolumny tabeli, limit

piottro1 15 Sty 2014 21:35 1734 7
  • #1 15 Sty 2014 21:35
    piottro1
    Poziom 10  

    Wyświetlam nazwy wybranych kolumn z tabeli w taki sposób:

    Kod: mysql
    Zaloguj się, aby zobaczyć kod

    Wszystko działa prawidłowo, pomijane są kolumny których nie chcę nazw wyświetlać, więc otrzymuję wynik w postaci:
    Kod: html4strict
    Zaloguj się, aby zobaczyć kod

    I faktycznie mam pięć kolumn spełniających powyższy warunek.

    Jednak chciałbym teraz wyświetlić tylko ostatnio dodaną kolumnę, czyli tę z najwyższym numerem (będzie mnie interesowała tylko ostatnio dodana do tabeli).
    Goglowałem cały dzień i nie potrafię odszukać rozwiązania tego problemu. Proszę o pomoc.

    0 7
  • Pomocny post
    #2 15 Sty 2014 23:02
    the_fifth_horseman
    Poziom 32  

    Nie ma. MySQL nie przechowuje dat modyfikacji kolumn.
    Jedynym rozwiązaniem jest przechowywanie logu zmian struktury bazy danych, ale tu wpadasz w kolejne problemy ponieważ MySQL nie obsługuje triggerów DDL.

    Możesz przenieść się na system baz danych który osługuje triggery DDL - co oznacza MSSQL lub Oracle - albo obudować wszystkie operacje zmian procedurami i wymagać od administratorów twojego CMSa aby do modyfikacji bazy korzystali tylko z tych procedur.

    0
  • #3 16 Sty 2014 12:29
    arnoldziq
    Moderator Programowanie

    Jeżeli poszczególne wpisy powtarzają się w bazie danych, a potrzebujesz zobaczyć ostatni, to możesz przecież posortować tabelę wg klucza, który jest stały i pobrać ostatni element.

    Kod: mysql
    Zaloguj się, aby zobaczyć kod

    0
  • #4 16 Sty 2014 18:42
    piottro1
    Poziom 10  

    Ale tu nie chodzi o wiersze lecz o kolumny. Dodaję nową i interesuje mnie jej nazwa. Chciałbym wyciągnąć z bazy tylko tą informację: nazwa kolumny ostatnio dodanej do tabeli.

    0
  • Pomocny post
    #5 16 Sty 2014 20:31
    the_fifth_horseman
    Poziom 32  

    Jak mówię - nie da się bo baza danych nie przechowuje logu zmian w swojej strukturze.

    Najbliższe co możesz zrobić bez tego to pobrać wszystkie kolumny i wyświetlić ostatnią w kolejności.
    Tylko że w tej sytuacji musisz zagwarantować że nowe kolumny dodawane są tylko i wyłącznie na końcu definicji tabeli.
    Jeżeli kolumny są dodawane tylko i wyłącznie przez twój system to jest to wykonalne. Inaczej masz kłopot, bo kolumnę można też dodać na początku tabeli albo w jej środku.

    0
  • #6 16 Sty 2014 21:02
    piottro1
    Poziom 10  

    Tak, rozumiem.
    Nie używam w zapytaniu AFTER i moim zamierzeniem jest dodawanie nowych zawsze na końcu. Sprawdzałem i tak się w mojej bazie dzieje.

    Udało mi się już pobrać nazwy i wyświetlić, ale wszystkie (wyświetlają się w kolejności dodawania, ostatnia na końcu). Na chwilę obecną mam je w liście rozwijanej (aby zredukować zajmowane miejsce na stronie) ale najbardziej by mi pasowało wyświetlać tylko nazwę ostatniej dodanej kolumny.

    the_fifth_horseman napisał:
    Najbliższe co możesz zrobić bez tego to pobrać wszystkie kolumny i wyświetlić ostatnią w kolejności.
    Jak tego dokonać? Byłbym wdzięczny za pomoc.

    0
  • Pomocny post
    #7 17 Sty 2014 18:49
    the_fifth_horseman
    Poziom 32  

    Rozwiązanie trywialne - SHOW COLUMNS i wynik pobierasz cały czas do tej samej zmiennej. Po zakończeniu pętli w zmiennej $name masz ostatnią kolumnę w kolejności. :)

    Kod: php
    Zaloguj się, aby zobaczyć kod

    0
  • #8 18 Sty 2014 11:11
    piottro1
    Poziom 10  

    Dziękuję za odpowiedź.
    Stworzyłem coś takiego i działa tak jak oczekiwałem. Z nadzieją, że jest poprawne, podaję moje rozwiązanie również:

    Kod: mysql
    Zaloguj się, aby zobaczyć kod

    Ale zastosuję Twój kod, ponieważ jest krótszy:
    Kod: mysql
    Zaloguj się, aby zobaczyć kod

    Dziękuję za pomoc w tym temacie, pozdrawiam.

    0