Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] relacje problem
Forum PHP.pl > Forum > Przedszkole
lnn
witam, chcialem sprawdzic czy dzialaja mi relacje, bo robilem je po raz pierwszy i tu tez prosze o wskazowki co moglem zrobic nie tak

baza nazywa sie test, niby sie z nia laczy ale mysle ze jest jakis blad w zapytaniu

  1. CREATE TABLE `users` (
  2. `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `login` varchar(30) NOT NULL,
  4. `pass` char(32) NOT NULL,
  5. `email` varchar(50) NOT NULL,
  6. `name` varchar(40) NOT NULL,
  7. `lastname` varchar(40) NOT NULL,
  8. `reg_date` datetime DEFAULT NULL,
  9. PRIMARY KEY (`id`)
  10. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
  11.  
  12. INSERT INTO `users` VALUES (1, 'login', 'haslo', 'email@email.com', 'Jan', 'Nowak', '');
  13. INSERT INTO `users` VALUES (2, 'login2', 'haslo', 'email2@email.com', 'Jan', 'Nowak2', '');
  14. INSERT INTO `users` VALUES (3, 'login3', 'haslo', 'email3@email.com', 'Jan', 'Nowak3', '');
  15. INSERT INTO `users` VALUES (4, 'login4', 'haslo', 'email4@email.com', 'Jan', 'Nowak4', '');
  16.  
  17. CREATE TABLE `rekordy` (
  18. `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  19. `nazwa` varchar(50) NOT NULL,
  20. `kraj` varchar(30) DEFAULT NULL,
  21. `user_id` int(10) NOT NULL,
  22. PRIMARY KEY (`id`),
  23. KEY `user_id` (`user_id`)
  24. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
  25.  
  26. INSERT INTO `rekordy` VALUES (1, 'Pierwsza nazwa', 'Polska', 2);
  27. INSERT INTO `rekordy` VALUES (2, 'Druga nazwa', 'Polska', 4);
  28. INSERT INTO `rekordy` VALUES (3, 'Trzecia nazwa', 'Niemcy', 1);
  29. INSERT INTO `rekordy` VALUES (4, 'Czwarta nazwa', 'USA', 1);
  30. INSERT INTO `rekordy` VALUES (5, 'Piąta nazwa', 'Rosja', 1);
  31. INSERT INTO `rekordy` VALUES (6, 'Szosta nazwa', 'Polska', 3);


  1. $show = mysql_query('SELECT users.name FROM rekordy, nazwa WHERE users.id = rekordy.user_id AND users.id = 1');
  2.  
  3. echo $show ;
  4.  

mysql_error nie wywala zadnego bledu sad.gif
Max Damage
Jeśli chcesz wyświetlić wyniki to wypada wynik zapytania wrzucić do pętli. Primary key możesz też napisać przy definicji pola, niekoniecznie na końcu. Poczytaj o LEFT JOIN itp. Przykładowo może być tak:
  1. SELECT users.name FROM users LEFT JOIN rekordy ON users.id = rekordy.user_id WHERE users.id ='1'
lnn
hmm cos nie bardzo dziala to co napisales :/ wyskakuje "Resource id #3"

mam juz system logowania dla uzytkownikow, planuje zrobic cos takiego ze ktos bedzie dodawał wpis i do danego wpisu bedzie przypisany id uzytkownika tak aby mogl to potem edytowac

bedzie sie to skladalo moze z 10 tabel dlatego potrzebne sa mi relacje, niestety pierwszy raz je robie dlatego nie bardzo kumam o co chodzi, czytalem jak sie je tworzy jednakze za bardzo na przykladach to nie jest wytlumaczone, zatem chcialem stworzyc jakas przykladowa tabele zeby sprawdzic czy uda mi sie dla danego usera wyswietlic okreslone dane.

Za pomoc wielkie dzieki i wskazowki.
Max Damage
Jak wyświetlasz to co zwraca mysql_query to sie nie dziw. Przecież pisałem że trzeba wrzucić to do pętli:
  1. $result = mysql_query("SELECT users.name FROM users LEFT JOIN rekordy ON users.id = rekordy.user_id WHERE users.id ='1'");
  2. while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
  3. echo $row[0].'<br/>';
  4. }

A jak chcesz podziękować klikaj pomógł. Zawsze milej się patrzy na ilość pkt :)
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.