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.

Jak zrobić taką bazę w MySQL, która jest w załączonym pliku w Accessie

pkuna 02 Mar 2012 12:11 2337 20
  • #1 02 Mar 2012 12:11
    pkuna
    Poziom 10  

    Witam,
    Taka prośba:
    W załączeniu znajduje się baza zrobiona przeze mnie w Accessie.
    Składa się z jednej tabeli i jednego formularza z podformularzem.
    Jedynym jej zadaniem jest wyszukiwanie (poprzez filtrowanie) po nazwie leku.
    Chciałbym, żeby w identycznie działający sposób zamieść coś takiego na stronie www ale nie mam pojęcia - jak (mam serwer z obsługą MySQL).
    Bardzo proszę o pomoc, tylko tak krok po kroku, bo o ile w Accessie coś tam umiem sobie zrobić, to o tworzeniu baz do www nie mam żadnej wiedzy.

    Dziękuję, pozdrawiam
    Paweł

    0 20
  • #2 02 Mar 2012 14:01
    Zocha24
    Poziom 21  

    Nie mam aktualnie accsesa ale z tego co pamiętam jest taka opcja żeby eksportować do www

    0
  • #3 02 Mar 2012 14:16
    Tommy82
    Poziom 39  

    Nie mam na kompie Access z tego co piszesz to:
    Najpierw musisz się jakoś dobrać do bazy danych
    jakiś myadmin, jak masz shella to mysql albo jakiś klient mysql desktopowy który połączy się z baza na serwerze.
    Jeśli masz już dostęp do bazy tworzysz tabele która będzie odwzorowywać to co masz w tabeli Accessa.
    Tabele tworzysz poprzez polecenie CREATE TABLE wiecej w Google
    Dane do tabeli ładujesz za pomocą polecenia INSERT INTO -> Google

    Potem potrzebujesz stworzyć "stronę".
    Musisz zrobić prosty formularz który przekaże dane do skryptu który wykona zapytanie do bazy.
    No ale lepiej takie cuda robić już ajaxem.

    Dane z bazy pobierasz za pomocą polecenia SELECT.
    No ale zacznij od połączenia się z baza danych a potem będziemy dalej myśleć;).

    0
  • #4 02 Mar 2012 15:11
    pkuna
    Poziom 10  

    Ok.
    Dzięki, dostęp do tego mam przez phpMyAdmin.
    Spróbuję coś wstępnie podziałać.

    0
  • #5 02 Mar 2012 15:26
    Tommy82
    Poziom 39  

    No świetnie jak masz php admina to musisz teraz stworzyć tablice która będzie mieć pola jak ta w Accessie na przykład coś w ten deseń

    CREATE TABLE Nazwa (
    id INT primary key NOT NULL AUTO_INCREMENT,
    pole_int INT,
    pole_varchar varchar(20)
    )
    Wiadomo nazwy pól i typy danych. Pierwsza kolumna to id które będzie się samo uzupełniać o 1 przy dodawaniu do tablicy. Musisz sobie zrobić tablice z polami jakie Ci potrzeba.
    http://www.pytlak.pr.radom.pl/mysql/typy_danych_mysql.html

    Jak wyjdzie coś nie tak to usuwasz tabele poleceniem DROP TABLE [nazwa];

    I taka rada jak sobie coś robisz to pisz w notatniku na przykład i przyklejaj.
    Jak byś musiał do czegoś wrócić nie będziesz musiał wszystkiego pisać od nowa.

    0
  • #6 03 Mar 2012 15:42
    pkuna
    Poziom 10  

    A do czego jest ta opcja "Import" w phpMyAdmin?
    Nie można tędy całej tabeli wciągnąć plikiem tekstowym?
    Ale przetestowałem już chyba wszystkie możliwe ustawienia eksportu z Accessa do pliku tekstowego i za każdym razem przy próbie importu jakiś błąd wywali.
    Jak nie taki, to inny.
    Chyba trzeba jednak próbować od początku tabelę zbudować.
    Pozdrawiam.

    0
  • #7 03 Mar 2012 16:11
    Tommy82
    Poziom 39  

    Tak jak mówiłem nie mam Accessa i dawno z niego nie korzystałem wiec nie wiem co z siebie jest w stanie wypluć.
    Myadmin jest w stanie przełknąć importy z SQLa, CVS, arkuszy kalkulacyjnych i XML`a.
    Oczywiście po drodze będą rożne krzaczki z kodowaniem znaków etc.
    Był/a byś w stanie umieścić zawartość tego Accessa w pliku Excelowym?

    0
  • #9 04 Mar 2012 15:43
    pkuna
    Poziom 10  

    Dzięki Waszym wskazówkom udało mi się bazę "załadować" na serwer.
    Uruchomiłem sobie lokalnie serwer Apache, PHP, MySQL, phpMyAdmin, skorzystałem z MS Access to MySQL, potem wyeksportowałem i jakoś się udało.

    Teraz mam takie pytanie:
    Jak powinien wyglądać skrypt takiej wyszukiwarki, która mniej więcej ma działać następująco:
    Na górze okienko "szukaj" do wpisywania nazwy.
    Poniżej ma się wyświetlać tabela z bazy w następujący sposób:
    Jeżeli nic nie jest wpisane w "szukaj", to ma wyświetlać załóżmy 5 pierwszych rekordów tabeli.
    Jeżeli zaczynamy coś wpisywać w polu "szukaj", to poniżej powinno się filtrować "w locie" nazwami zaczynającymi się od tego, co zostało wpisane.

    Dzięki.

    0
  • #10 04 Mar 2012 17:13
    blue_17
    Poziom 32  

    Tu już musisz php się pobawić. Ewentualnie można napisać prostą aplikację deskopową

    Coś TAKIEGO sobie kiedyś strugałem :)

    Można to zrobić poprzez php jak kto woli :)

    Poprzez php będziesz zadawał zapytania SQL-owe bazie i baza zwróci Ci odpowiedź

    Co do wyszukiwani na bieżąco to dla małej ilości rekordów w bazie będzie ok ale dla większej ilości jest to nieopłacalne, a również prawdopodobnie takie wyświetlanie prawdopodobnie wymagała odświeżania strony po każdorazowym wciśnięciu klawisza, ale na 100% nie jestem tego pewien co do odświeżania.

    przykładowe rozwiązanie tutaj nieco bardziej rozbudowane, ale jest pokazane łączenie się z bazą i wykonywanie zapytań

    TUTAJ

    Pozdrawiam

    0
  • #11 04 Mar 2012 17:44
    Tommy82
    Poziom 39  

    Problem jest taki ze przy takim uzupełnianiu nie będzie to działać wydajnie.
    To znaczy na jakimś polu będziesz musiał wykonać zapytanie like %costam% A tym możesz zarznąć bazę bo takie zapytanie nie skorzysta z indeksowania.

    Zacznij od czegoś prostszego
    Proponuje zacząć od skryptu PHP który wygeneruje Ci dane.

    Innymi słowy skrypt PHP który wykona się po stronie serwera.
    Skrypt powiedzmy skrypt.php powinien zadziałać tak ze jak go wywołasz to ci zwróci dane.
    Skrypt wywołujesz z parametrem do wyszukiwania.
    Czyli na przykład skrypt wywołany tak
    skrypt.php?szukaj=jakiś_lek
    Zwróci Ci jakieś dane.
    Po pierwsze przekazywanie parametrów metodą GET
    Po drugie nawiązanie połączenia z bazą.
    Po trzecie wykonanie zapytania na bazie.
    Na przykład select * from leki where nazwa like "%jakiś_lek%"
    przekonwertowanie tego co baza zwróci na jakiś format na przykład xml i zwrócenie tego xmla.
    I dalej zrobisz sobie w javascripcie pobieranie tego np ajaxem przez advajax na przykład. Jak będzie działać dobrze no to tak jak chcesz a jak lipnie to będziesz wysyłał tylko całe zapytanie. Można zrobić to tak jak byś chciał ale to trochę bardziej skomplikowane.

    0
  • #12 05 Mar 2012 08:55
    pkuna
    Poziom 10  

    A powiedzcie proszę, czemu coś takiego (znalazłem na jakimś forum wpis z 2006 r. - może od tamtego czasu zmieniły się zasady) nie chce działać:


    Kod: php
    Zaloguj się, aby zobaczyć kod


    Oczywiście dostosowuję wszystko pod swoją bazę,
    ale wysypuje się już na trzeciej linii z błędem,
    że niezdefiniowana zmienna "fraza".
    A w tym poście autor napisał, że kod działa - u mnie nie.
    Jak poprawić?
    Dzięki,
    Paweł

    Proszę pamiętać o używaniu znaczników syntax. Opcja Listing kodu. - arnoldziq

    0
  • #13 06 Mar 2012 08:05
    pkuna
    Poziom 10  

    Spoko - jakoś sobie poradziłem :)
    Teraz zaczyna mnie ciekawić jeszcze taka rzecz:
    Jak zrobić, żeby w tabeli z wyświetlonymi wynikami wyszukiwania
    zostały wyróżnione te fragmenty słów, które stanowią poszukiwana frazę?
    Np. pogrubić, albo innym kolorem.

    Dzięki

    0
  • #14 06 Mar 2012 09:10
    Tommy82
    Poziom 39  

    W skrypcie php na przykład najpierw musisz sprawdzić używając strlen
    http://php.net/manual/en/function.strlen.php
    ile ma Twój string potem przez strpos
    http://php.net/manual/en/function.strpos.php
    znaleźć gdzie jest ten Twój tekst i jeśli będzie liczbę to Twój string zacznie się tam gdzie wskaże go strpos i będzie miał długość zwróconą przez strlen
    Sprawdzić jaką ma długość i dołożyć do stringu znaczniki html na przykład

    0
  • #15 07 Mar 2012 01:43
    pkuna
    Poziom 10  

    Mam jeszcze jakiś dziwny problem z kodowaniem polskich znaków w bazie.
    Gdy odpalam wyszukiwarkę lokalnie na dysku wyniki zapytań wyświetla prawidłowo z polskimi znakami w UTF-8.
    Natomiast jak wyeksportuję bazę phpMyAdminem z zestawem UTF-8 i ją zaimportuję na serwer docelowy, to już niestety psuje się coś po drodze i w wykonywanych zapytaniach są krzaki w danych z tabeli. Trzeba zmienić znaki w przeglądarce na ISO-8859-2 i wtedy jest dobrze. Ale wtedy opisy znowu się psują.

    Proszę o radę jeszcze w tym zakresie.
    Dzięki.

    0
  • #16 07 Mar 2012 08:12
    Tommy82
    Poziom 39  

    Widocznie w bazie trzymasz w iso możesz z tym walczyć na poziomie bazy albo spróbować przez iconv prze konwertować w php.

    0
  • #18 07 Mar 2012 11:28
    pkuna
    Poziom 10  

    Dzięki piękne - jedno i drugie rozwiązanie działa.
    To pozwólcie, że jeszcze tak bardziej z HTMLa:
    Jak zrobić, żeby co drugi wiersz wyświetlanej tabeli miał inny kolor tła?
    Czyli jeden np. jasno szary, drugi - ciemno szary i tak na przemian.
    Dla kolumn wiem jak, ale dla wierszy to chyba trudniejsze?

    Dzięki, pozdrawiam

    0
  • #19 07 Mar 2012 11:45
    Tommy82
    Poziom 39  

    A jak to robisz dla kolumn?
    Ja bym to zrobił tak normalnie przez CSS.
    To znaczy tworzysz sobie style i nadajesz je na przykład już w skrypcie PHP.

    0
  • #20 07 Mar 2012 12:43
    pkuna
    Poziom 10  

    Wyniki wyszukiwania wyświetlam w taki sposób:

    Kod: php
    Zaloguj się, aby zobaczyć kod


    Może by w pętli jakiejś dodatkowej te wiersze kolorować?
    Tylko w jakiej?

    Proszę pamiętać o używaniu znaczników syntax. Opcja Listing kodu. Kolejny post, bez użycia SYNTAX i zacznie być nieprzyjemnie !!!- arnoldziq

    0
  • Pomocny post
    #21 07 Mar 2012 12:56
    Tommy82
    Poziom 39  

    Zrób sobie raczej pętle foreach.
    Dodaj jakąś zmienna którą wyzerujesz przed pętlą. W pętli będziesz sobie ją inkrementował na końcu.
    A w pętli sprawdzał warunek parzystości wartości zmiennej.
    IF (warunek parzystości)
    {
    echo ...;
    }
    Else
    {
    echo...;
    }
    Wtedy wiesz kiedy masz parzysty wiersz a kiedy nie. Kolorujesz poprzez na przykłąd CSS tak a nie parzyste inaczej. Zdefiniuj sobie dwa style i przełączaj sobie w pętli.

    0