Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]lista konstrukcja baz danych
ghastblood
post 4.09.2011, 11:38:01
Post #1





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Witam,
mam formularz z 3 textboxami imie, nazwisko, klub oraz 11 checkboxow konkurencja1 konkurencja2 itd

1. Jak powinna wyglądać baza danych??
2. Jak wyświetlać liste ludzi w takiej formie

1. Nazwisko Imię Konkurencja 1
------------------- Konkurencja 3
2. Nazwisko Imię Konkurencja 4
------------------- Konkurencja 5

3.Jak powinna wyglądać baza danych od konkurencji w tej bazie powinny być wyniki z danych konkurencji
nie wiem czy lepiej mieć baze danych konkurencje i w niej id,nazwa_konkurencji i 2 baze danych wyniki id id_konkurencji id_zawodnika wynik
czy może każda konkurencja oddzielną tabele i w niej id id_zawodnika wynik


Proszę o pomoc

Ten post edytował ghastblood 3.09.2011, 12:56:41
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
mortus
post 4.09.2011, 11:59:44
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


1. Tabele:
zawodnicy (id, imie, nazwisko)
konkurencje (id, nazwa_konkurencji)
zawodnicy_konkurencje (id_zawodnika, id_konkurencji) - PRIMARY KEY na obu kolumnach, tabela potrzebna wtedy, gdy jeden zawodnik może brać udział w wielu konkurencjach
wyniki (id, id_konkurencji, id_zawodnika, wynik)

2. Złączenie:
  1. SELECT `z`.`imie`, `z`.`nazwisko`, `k`.`konkurencja` FROM `zawodnicy` `z` LEFT JOIN `zawodnicy_konkurencje` `zk` ON (`zk`.`id_zawodnika` = `z`.`id`) LEFT JOIN `konkurencje` `k` ON (`k`.`id` = `zk`.`id_konkurencji`)

3. Jak w punkcie 1.

Ten post edytował mortus 4.09.2011, 12:05:55
Go to the top of the page
+Quote Post
lobopol
post 4.09.2011, 12:05:48
Post #3





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

Ostrzeżenie: (0%)
-----


O ile dobrze ciebie zrozumiałem to masz kilka opcji do konstrukcji bazy, tu masz 2 najbardziej oczywiste:
1. Opcja jedna tabela (najszybsze do zrobienia i wyświetlania, najgorsze przy modyfikacji
  1. id,
  2. imie,
  3. nazwisko,
  4. konkurencja1 wszędzie tinyInt UNSIGNED 0 nie zaznaczone, 1 zaznaczone,
  5. konkurencja2,
  6. .
  7. .
  8. .
  9. konkurencja11
  10.  
  11. baza wynik
  12. id,
  13. id_usera,
  14. numer_konkurencji,
  15. wynik

2. Opcja Nieco trudniejsza do zrobienia i trochę wolniej działająca, ale znacznie prostsza przy modyfikacji
  1. user:
  2. id, imie, nazwisko
  3.  
  4. konkurencja:
  5. id,
  6. nazwa,
  7.  
  8. user_konkurencja:
  9. id,
  10. id_konkurencja,
  11. id_user,
  12. wynik
  13.  

co do drugiego pytania to kwestia bazy i tego czy chcesz wyświetlać dane tylko jednego usera czy wielu naraz


--------------------
Go to the top of the page
+Quote Post
ghastblood
post 4.09.2011, 14:40:50
Post #4





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Chce wyświetlać całą listę zawodników i konkurencje w których biorą udział

teraz robię takie tabele w excel

np A1 Imie B1 Nazwisko C1 Konkurencja 1 C2 Konkurencja 2 i teraz na A3 Imie B3 Nazwisko C3 Konkurencja 1

taka tabela jest przejrzysta i łatwa w odczytaniu tylko jak taką tabele wygenerować do tabeli html a już w ogóle były by super jak bym mógł to prze konwertować w locie do excela

mam jeszcze problem z formularzem dawno nic nie robiłem w php

mam kod
  1. <?php
  2. $error = "";
  3.  
  4. if(strlen($_POST['imie'])>0){
  5. $error .= "Wszystkie Pola Wymagane";
  6. }
  7.  
  8.  
  9. ?>
  10. <?php echo $error;?>
  11. <br>
  12. <?php echo $_POST['imie'];?>
  13. <form method="post" action="form.php">
  14. <input type="text" name="imie">
  15. <input type="submit" value="send">
  16. </form>


Wiem nie jest zabezpieczony ale na razie tego nie potrzebuje ale działa mi jakoś na odwrót jak jest puste pole nie wyświetla errora a jak jest jakiś text w input to zwraca mi error.

Nie mam pojęcia co jest nie tak :/


Ten post edytował ghastblood 4.09.2011, 12:46:05
Go to the top of the page
+Quote Post
CuteOne
post 4.09.2011, 15:07:43
Post #5





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


To zamiast nam marudzi "że dawno nie robiłeś w PHP" poczytaj poradniki dla początkujących? w podczepionych masz o tym temat
Go to the top of the page
+Quote Post
ghastblood
post 15.09.2011, 08:25:35
Post #6





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


baza danych zrobiona
1 tabela
zawodnika
-- imie
-- nazwisko
-- klub
2 tabela
konkurencje
-- id konkurencji
-- nazwa konkurencji
3 tabela
konkurencje zawodnikow
-- id zawodnika
-- konkurencji

Wszystko ładnie pięknie ale jak zrobić tabelkę html która będzie mi wyświetlała dane w ten sposób

podobna forma do excela

1. Nazwisko imie konkurencja1
------------------- konkurencja 2

Ten post edytował ghastblood 15.09.2011, 08:27:07
Go to the top of the page
+Quote Post
mortus
post 15.09.2011, 08:29:43
Post #7





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Za pomocą rowspan.
Go to the top of the page
+Quote Post
ghastblood
post 15.09.2011, 09:48:36
Post #8





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Udało mi się. Mam jeszcze ostatnie pytanko jak mam baze która ma id zawodnika i id konkurencji to jest jakaś możliwość przeniesienia tego na checkboxy tzn np mam 5 konkurencji to w formularzu mam 5 checboxów które po zaznaczeniu mają wartość id konkurencji i następuje zapis do bazy danych z id zawodnika i id konkurencji
Go to the top of the page
+Quote Post
mortus
post 15.09.2011, 10:06:07
Post #9





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Oczywiście, że jest taka możliwość:
  1. <?php
  2. if($_SERVER['REQUEST_METHOD'] == 'POST') {
  3. // jeśli chcemy dodać konkurencje zawodnikowi
  4. $sql = 'INSETR INTO `konkurencje_zawodnikow` VALUES ';
  5. foerach($_POST['konkurencje'] as $konkurencja) {
  6. $sql .= '('.$_POST['zawodnik'].', '.$konkurencja.'),';
  7. }
  8. $sql = substr($sql, -1);
  9. $result = mysql_query($sql) or die(mysql_error());
  10. }
  11. ?>
  12. <form action="" method="post">
  13. <p><input type="hidden" name="zawodnik" value="ID_ZAWODNIKA" /></p>
  14. <p><input type="checkbox" name="konkurencje[]" value="ID_KONKURENCJI_1" />NAZWA_KONKURENCJI_1</p>
  15. <p><input type="checkbox" name="konkurencje[]" value="ID_KONKURENCJI_2" />NAZWA_KONKURENCJI_2</p>
  16. <p><input type="checkbox" name="konkurencje[]" value="ID_KONKURENCJI_3" />NAZWA_KONKURENCJI_3</p>
  17. <!-- ... -->
  18. <p><input type="submit" value="Dodaj" /></p>
  19. </form>

Oczywiście trzeba to jeszcze dopracować, bo skrypt nie uwzględnia aktualizacji danych.
Go to the top of the page
+Quote Post
ghastblood
post 15.09.2011, 11:32:20
Post #10





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


a jak powinienem ten skrypt przerobić żeby np checkbox pobierał z mysql dane jeżeli zawodnik ma już zaznaczoną konkurencje to jest zaznaczony a jak nie to jest pusty

Ten post edytował ghastblood 15.09.2011, 11:37:14
Go to the top of the page
+Quote Post
mortus
post 15.09.2011, 11:44:21
Post #11





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Jest błąd, bo zamiast foreach w linii 5 napisałem foerach. Zmień to.

Co do pytania:
- pobierasz id kategorii i nazwę kategorii z bazy danych i zapisujesz do tablicy np. $kategorie,
- pobierasz id użytkownika i odpowiadające mu id kategorii i zapisujesz do tablicy np. $kategorie_uzytkownika,
- w pętli generujesz pola typu checkbox sprawdzając, czy pole z tabeli $kategorie znajduje się w tabeli $kategorie_uzytkownika,
- jeśli tak, to dopisujesz do pola typu checkbox atrybut checked z wartością checked.
Go to the top of the page
+Quote Post
ghastblood
post 19.09.2011, 12:36:53
Post #12





Grupa: Zarejestrowani
Postów: 360
Pomógł: 12
Dołączył: 17.09.2009
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


  1. <?php
  2. require_once "core.php";
  3.  
  4. // pobiera dane zawodników
  5. $wynik1 = mysql_query("SELECT * FROM zawodnik") or die(mysql_error());
  6. // pobiera id_zawodnika i id_konkurencji
  7. $wynik2 = mysql_query("SELECT * FROM konkurencje_zawodnikow") or die(mysql_error());
  8.  
  9. $zawodnicy = mysql_fetch_array($wynik1);
  10. $konkurencej = mysql_fetch_array($wynik2);



nie wiem czy dobrze pobieram do tablic

dalej sobie z tym nie radze może jakaś podpowiedz ?


Ten post edytował ghastblood 15.09.2011, 12:15:48
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 03:50