Jak zrobić bazę danych z wyszukiwanem rekordów?


(Buffon7) #1

Witam,

mam problem. Chciałbym na stronę wstawić wyszukiwarkę, która szukałaby w bazie danych odpowiednich rekordów. Byłoby pole : imię, nazwisko, data urodzenia i data zgonu. Użytkownik mógłby, ale nie musiał, wypełnić odpowiednie pole. Dajmy na to, że wpisze nazwisko : Kowalski to wtedy wyskakują mu wszystkie rekordy z nazwiskiem Kowalski. Jak taką bazę i do tego wyszukiwarkę zrobić? Na razie mam wszystkie rekordy są w Excelu.

Proszę o pomoc.

Dziękuje! :slight_smile:

Alan


(GioWDS) #2

A w jakim języku, z jaką bazą danych?


(Buffon7) #3

Strona jest w html/css, w najzwyklejszym notatniku zrobiona...

A baza danych zapewne w php/mysql musi być zrobiona. Czy np. jeśli z programu GS-Base mam zapisany plik w html to z można go podłączyć pod wyszukiwarkę, aby szukała w tym pliku? Tak głośno myślę, nie wiem, dlatego pytam.


(pain3hp) #4

Baza danych MySQL

CREATE TABLE IF NOT EXISTS `users` (

  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,

  `name` varchar(30) NOT NULL,

  `surname` varchar(50) NOT NULL,

  `birthday` datetime NOT NULL,

  `die` datetime NOT NULL,

  PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

SELECT * FROM `users` WHERE name LIKE 'Krzysztof'

wybierze Ci wszystkich którzy mają na imię Krzysztof

w zależności od ilości wypełnionych pól dokładasz "AND surname LIKE 'aaa' AND....."

Jeśli chcesz bardziej elastycznie to możesz użyć LIKE "%Krzy%" i zamiast AND użyj

w logice wyszukiwania

AND oznacza i

OR oznacza lub

% przy LIKE oznacza dowolny znak/i

Oczywiście jeszcze obsługa którą napiszesz w PHP lub mogę to zrobić ja za niewielkie $$$ :twisted:


(etam) #5

Baza danych PostgreSQL:

CREATE TABLE IF NOT EXISTS users (

  id serial NOT NULL,

  name text NOT NULL,

  surname text NOT NULL,

  birthday date NOT NULL,

  die date NOT NULL,

  PRIMARY KEY (id)

);

SELECT * FROM users WHERE name LIKE 'Krzysztof';

(Buffon7) #6

Zrobiłem formularz na stronę :

Imię: Nazwisko : Rok urodzenia : Rok zgonu :
[/code]

Rozumiem, że teraz trzeba zrobić bazę php => rekord.php, aby obsługiwała tą wyszukiwarkę, ale jak?

Ten MySQL, gdzie mam wkleić? Strona będzie na serwerze cba. Tam jest phpMyAdmin, mam to gdzieś tam wprowadzić? Przepraszam, ale na razie nie ogarniam jak zrobić taką wyszukiwarkę, więc kombinuje jak mogę.


(pain3hp) #7

Tak z tym że wcześniej musisz zrobić bazę danych, po wklejeniu SQLa zrobisz tabelę w bazie


(GioWDS) #8

Czemu wyście się uparli na tego LIKE-a?

Jeśli użytkownik będzie szukał Krzysztofa to będzie mu o niego chodzić, a nie o Krystynę - po co tu wildcardy?

Stosuj w tych zapytaniach normalnie equala i tylko quote-uj (PDO) tekst podany przez użytkownika - szybsze i bezpieczniejsze.

To tak jak w PHP napierdzielanie dwóch equali kiedy spodziewamy się wartości false albo tekstu - jeśli będzie false to zadziała i

$var === false

jak i

$var == false

z tym, że w przypadku trzech wykona się to szybciej. Tak na boku

%

nie oznacza dowolnego znaku tylko dowolny ciąg znaków: K% to Krzysztof jak i Kamil, Krystyna, Kazimierz jak i K. Jeśli potrzebujesz pojedynczego znaku to używa się tzw. podłogi

_