Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Piktogramy i ich rozwiazanie
Forum PHP.pl > Forum > Przedszkole
podziak
Witam!!!

Problem jest natury takiej.

Otoz mam opisy pewnych firmy i powiedzmy 12 piktogramow oznaczajacych opcje.

1. Teraz jest cos takiego.
Wpisuje firme i firma ma np 6 piktogramow
Inna firma ma 8 piktogramow

Teraz chodzi o cos takiego:
a) Czy zrobic jeden rekord na pole w bazie danych... jesli tak to jak zapisywac piktogramy questionmark.gif
cool.gif Czy stworzyc wiele rekordow dla kazdego piktogramu i sprawdzac funkcja warunkowa czy dany piktogram jest przypisany ?

2. Jak wyswietlac te piktogramy aby sie ustawialy w szyku takim
przyklad dla 12 pikt.
1 2 3 4
5 6 7 8
9 10 11 12
przyklad dla 6 roznych
3 6 8 9
10 11
Chodzi o wyswietlanie dla wersji 1a oraz 1b

Z gory dziekuje

Pozdrawiam
mike
Zagadnienie jest proste.

Żeby było jak najbardziej optymalnie i poprawnie przydałyby się trzy tabele:
Firmy, Piktogramy, Połącznie.

Tabela Firmy to identyfikator id i jakieś tam atrybuty.
Tabela Piktogramy to identyfikator id i jakieś tam atrybuty.
Tablela Połączenie to identyfikator firmy i identyfikator piktogramu.

Teraz wyciągając info o firmie i i jej piktogramach (np. o firmie nr. jeden) wykonujesz dwa zapytania:
  1. SELECT *
  2. FROM Firmy WHERE id = 1;

  1. SELECT p.*
  2. FROM Połączenie c, Piktogramy p WHERE c.id_firmy = 1 AND c.id_piktogramu = p.id;
podziak
no ale to na to samo wychodzi jakbym przypisal piktogramy do tabeli firmy
nic to nie zmienia
i nie rozumiem po co mialaby byc 3 tabela skoro wystarczyly by dwie
np firmy oraz piktogramy
w tabeli firmy kluczem obcym bylby piktogram_id a w piktogramy piktogram_id bylby kluczem podstaowym wiec mniej miejscozerne to by bylo
ale mysalem czy daloby do bazy dac jakies dane alfanumeryczne jako jakis ciag a pozniej parsowac ten ciag poprzez rozpoznawanie go i wysiwetlanie dla danej literki odpowiedniego piktogramu

no i kwestia nr 2 jak to wyswietlac questionmark.gif
mike
Proponujesz takie tabele:
Firmy
id_firmy | id_piktogramu | pozostałe atrybuty

Piktogramy
id_piktogramu | pozostałe arybuty

Rozwiązanie to jest tylko pozornie mniej pamięciożerne a napewno bardziej powodujęce nadmiarowość.
Bo jak masz firmę, która posiada 12 piktogramów to musisz dodać do tabeli firma 12 rekordów, z czego w każdym powielasz informacje o firmie i zmienia się tylko piktogram.
Trzy tabele nie powodują nadmiarowości danych, a trzymanie (nawet dużej) tabeli z powiązaniami nie jest wcale pamięciożerne.

Dwie tabele to też wyjście o ile masz pewnośc że liczba piktogramów nie będzie się zmieniać. Tylko piktogramy musiałbyuś trzymać w jednum polu jak zbiór (set). Trzy tabele gwarantują jednak dużo większą elastyczność.

Jest to typowa relacja wiele do wielu. Tabela łącząca jest najlepszym rozwiązaniem.

A co do wyświatlania:

  1. <?php
  2.  
  3. error_reporting( E_ALL );
  4. ini_set( 'display_errors', 1 );
  5.  
  6. $arrTab = array( 1 => 12, 34, 35, 1234, 235, 23, 23, 34, 65, 76, 34 );
  7. echo '<table>';
  8. echo '<tr>';
  9. for( $i = 1, $last = sizeof( $arrTab ); $i < $last; $i++ )
  10. {
  11. if( $i % 4 == 0 )
  12. {
  13. echo '</tr><tr>';
  14. }
  15. echo '<td>' . $arrTab[ $i ] . '</td>';
  16. }
  17. echo '</tr>';
  18. echo '</table>';
  19.  
  20. ?>
podziak
Witam!!!

No troszke nie lapie
bo rozwiazanie z dwoch tabel tez daje mi elastycznosc

firma id_firmy id_piktogramu
piktogramy id_piktogramy, pikt1, pikt2 ...

przeciez po dowiazaniu do frmy w tabeli piktogramy wstawiam 0 lub 1 jesli jest i to wszystko pozniej ifem sprawdzam i po klopocie wiec nie widze potrzeby stosowania tabeli wiazacej przeciez to mozna wykonac jednym zapytaniem chyba ze sie myle wiec jesli mozna prosze o dokladniejsze wyjasnienie.

Pozdrawiam
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.