Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]lista konstrukcja baz danych
Forum PHP.pl > Forum > Przedszkole
ghastblood
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
mortus
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.
lobopol
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
ghastblood
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 :/
CuteOne
To zamiast nam marudzi "że dawno nie robiłeś w PHP" poczytaj poradniki dla początkujących? w podczepionych masz o tym temat
ghastblood
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
mortus
Za pomocą rowspan.
ghastblood
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
mortus
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.
ghastblood
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
mortus
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.
ghastblood
  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 ?
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.