juzekmj
21.06.2010, 20:10:07
Cześć,
chciałbym umieścić na stronie kwadrat zbudowany z liter, powiedźmy 20x20 punktów. Każdą litere powinno dać sie zmienić na inną w dowolnym momencie, byłoby to coś w stylu księgi wpisów. Już niemal wszystko zaprojektowałem, pozostał jednak problem od strony technicznej.
Jedyny sposób jaki mi przychodzi do głowy to bazy MySqla, zrobienie tabeli 20x20 komórek, w każdej komórce jedna litera. Jednak wykonanie 400 połączeń, osobnego dla każdej komórki, przy każdorazowym odświeżeniu strony raczej nie wchodzi w gre. Ponadto wszystkim literą musiałbym przypisać kawałek kodu mówiący jej skąd ma pobierać dane, a zbyt długi kod też nie jest fajną sprawą.
Znacie jakąś lepszą metode? Może dałoby sie pobrać tabele jako całość, a dopiero potem ją rozdzielić i rekordy przypisać do odpowiednich pól?
Pozdrawiam, Juzekmj.
erix
21.06.2010, 20:28:55
Uhm, ale sam kwadrat 400 komórek da się wyciągnąć jednym zapytaniem, chyba że nie mówisz nam wszystkiego.
Abaddor
21.06.2010, 20:28:55
Ja bym zrobił inaczej trochę. Pewnie też źle, ale na szybkiego myślałem:)
Zrób 20 rekodów, w każdym string z 20 znakami:)
I przy wypisywaniu pobieraj 1,2,3,4 znak tej tablicy znaków(stringa).
Masz wtedy 20 zapytań, a reszta to PHP, albo JavaScript.
Podobnie przy edycji. Zmieniasz np. 5 znak w tym ciągu.
Moim zdaniem lepsze wyjście.
A możesz tak samo zrobić na jednym rekordzie, z BARDZO długim ciągiem znaków.
I wypisywać pierwsze 20 w jednym rzędzie, drugie 20 w drugim itd.
Pozdrawiam:)
juzekmj
21.06.2010, 21:12:25
erix - jasne że można, tylko jak potem podzielić rekord na poszczególne litery? Ostatecznie każda literka ma być osobnym linkiem, po kliknięciu pojawi się wirtualna klawiatura (pływający div) za pomocą której będzie można zmienić ją na inną.
Abaddor - fajny pomysł, ale tak jak napisałem erix'owi, pokaż mi kod, najlepiej w php, który podzieli rekord na 1,2,3,4 itd znak i będzie po problemie

Dzięki
Mchl
21.06.2010, 22:21:51
A nie prościej 'wąską' tabelę z 400 wierszami? Wszak struktura w jakiej przechowuje się dane nie musi odpowiadać temu jak dane są prezentowane.
Robisz SELECT * FROM tabela
Potem zagnieżdzona pętla for, żeby wydrukować to w kwadracie.
phpion
22.06.2010, 07:01:07
Również nie wiem czy do końca zrozumiałem ideę, ale chyba chodzi Ci o wykonanie czegoś a'la szachownica czy mapa do gry w statki, ale na każdym polu ma znaleźć się literka będąca linkiem do czegoś tam. Jeśli tak to słuszne wydaje mi się:
litery [id, x, y, litera, adres]
W sumie możesz postawić klucz główny na polach x + y, bo zapewne na jednym polu nie może być kilka literek.
Pilsener
22.06.2010, 07:34:33
Tak to należy zrobić, ale i tak trzeba będzie pobrać 400 rekordów. Ja bym to zrobił na plikach (xml lub tablica zserializowana) i aktualizował plik tylko wtedy, gdy zmieni się baza - jest z tym trochę zachodu, ale na pewno będzie świetnie działać jak już się uruchomi.
phpion
22.06.2010, 07:53:59
Zawsze można zastosować cache danych. Oparcie tego o bazę danych wydaje mi się jednak rozsądniejsze chociażby z racji możliwości przechowywania informacji i klikach w poszczególne literki (wówczas przyda się osobne pole id).
Abaddor
22.06.2010, 10:19:05
Funkcja wycina i zwraca z ciągu "string" ilość znaków równą "ile" zaczynając od pozycji "od". Jeżeli "od" jest ujemne funkcja zacznie odcinać znaki licząc od końca ciągu "string". Parametr "ile" jest opcjonalny i jeśli zostanie pominięty funkcja wytnie wszystkie znaki zaczynając od pozycj "od" do końca ciągu. Jeśli parametr "ile" jest ujemny funkcja wytnie wszystkie znaki zaczynając od pozycji "od" do pozycji "ile" licząc od końca.
$a="moj ciag tekstowy";
//$b przyjmie wartość "ciag "
Pozdrawiam
juzekmj
22.06.2010, 22:46:00
ok, dzięki! problem rozwiązany.
Nie wiem jak mogłem zapomnieć o dobrodziejstwie jakim jest pętelka, nie wpadłem na to.. wycinanie również spisuje sie nieźle. Jeszcze potestuje oba sposoby i lepszy wrzucę na stronke
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.