Mam następujący problem z ustaleniem szerokości komórek tabeli:
Tabela posiada 3 kolumny. Pierwsza to kolumna z nazwami użytkowników, druga pokazuje przesłane przez nich wiadomości, a trzecia wyświetla datę wysłania wiadomości (taki chat). Co zrobić, aby pierwsza i ostatnia kolumna przybierały taką szerokość (minimalną) aby zawartość poszczególnych komórek mieściła się w jednej linijce, a środkowa kolumna wypełniała resztę dostępnej szerokości?
Jak coś nie jasno wytłumaczyłem to proszę napisać, postaram sie o jakiś przykład.
Przede wszystkim musisz ustalić właściwe formatowanie CSS dla kolumny pierwszej i trzeciej poprzez
white-space: nowrap;
żeby wiersze z tekstem się nie zawijały, tylko tworzyły jedną linijkę.
Co do formatowania szerokości kolumn, to nie sprawdzałem, ale spróbuj tak: tej pierwszej i trzeciej kolumnie ustaw szerokość na minimalną wartość (a treść i tak ją rozszerzy), a pozostałej kolumnie (środkowej) nie nadawaj szerokości - za to ustaw szerokość dla całek tabeli (TABLE).
A no tak, o to wlasnie chodziło, dzięki. Na Chrome wyświetla elegancko, myślę, że z resztą przeglądarek to juz dam rade w razie czego.
Jeszcze takie pytanko przy okazji, tym razem związane z php. Chciałbym w tym chacie wyświetlać 10 najnowszych wiadomości, ale tak, aby te najnowsze były na dole. Aktualnie kod opiera się mniej-wiecej na takim działaniu:
$polecenie = “SELECT * FROM chat ORDER BY data LIMIT 0,10”;
$ilość = mysql_num_rows($polecenie);
$zapytanie = mysql_query($polecenie);
for ($i=1;$i<=$ilość;$i++) {
//wyswietlanie wierszy tabeli
}
Można by to zrobić wyciągając ilość wszystkich rekordów z tabeli i za pomocą pętli zmienić kolejność, ale coś czuję że jest to mało profesjonalne rozwiązanie - wolałbym ograniczyć limitem (wydaje mi sie że wplywa to na ilosc pobranych danych, a przy chatcie ma to akurat duże znaczenie)
Zamiast sprawdzać ilość użyj foreach. Dodaj count do zapytania, pierwszy argument limitu daj przez get (nie zapomnij o realescapestring). Listowanie for($a=0,i
Mógłbyś podać jakiś przykład z zastosowaniem tego co napisałeś? Średnio ogarniam tablice, dlatego ciężko mi zrozumieć petle foreach. Do tej pory omijałem wszelkie pętle używając jedynie for i metodą przedstawioną powyżej wyciągałem rekordy z bazy. Potrzebuje przykładu, który przedstawi metode działania foreach na danych pobranych z mysql (tablica chat ma 5 kolumn). Dodam, że nie potrzebuje wyswietlania wybranych “stron”, chce tylko 10 najnowszych.
@sorki, że pisze w tym temacie, ale szkoda mi było zakładać nowy. Nie sądziłem, że będzie to dla mnie aż tak skomplikowane
Sam sens działania chatu to listowanie między tymi zakładkami co 10
Jeśli chcesz odwrócić datę, daj po data DESC (nie zrozumiałem wcześniej twojego postu)
for each -> przez każdy. W tym wypadku przyda ci się bardziej while:
$polecenie = "SELECT * FROM chat ORDER BY data DESC LIMIT 10";//nie trzeba 0 jak nie zmieniasz zakresów, a desc odwróci kolejność wyników$odpowiedz = mysql_query($polecenie);$wpis = mysql_fetch_assoc($odpowiedz))//wpis to jedna linia (wszystkie dane z jednego wpisu){ echo $wpis['xxx']; //wyświetlasz to co w wpisie ma name xxx} [/code]
Ponadto * używać nie powinieneś (wypisz po przecinku nazwy pól jakie chcesz pobrać, jest to szybsze niż gwiazdka)
Wylistować potrafię (podałem w jaki sposób to zrobiłem). Chodzi o to, żeby wyświetlało 10 najnowszych wiadomości, ale w ten sposób, aby najnowsza wiadomość była najniżej (zaraz nad polem w którym wpisuje się wiadomość). A stosując powyższe petle wyciąga mi 10 najnowszych wiadomości, ale układa od najnowszej do starszej (tak, ze starsza jest najniżej), a ja chcę dokładnie odwrotnie. Foreach chyba właśnie do tego się nada, ale nie wiem jak tego użyć.
ASC pokazywałoby 10 najstarszych wiadomości w kolejności od najstarszej do nowsze (tak, że ta nowsza byłaby na dole). Reszta (czyli jeszcze nowsze wiadomości) nie byłyby w ogóle wyświetlane.
Mi chodzi natomiast o to, aby wyświetlało 10 najnowszych wiadomości w kolejności od tej starszej do nowszej (screen).
Jak byś wpisał bez niego mysql ładnie by ci powiedział “każda uzyskana tabela musi mieć własny alias”. W sumie po co nie wiem
Kontynuując moje wcześniejsze pytanie, dlaczego czat ma wyświetlać tylko 10 ostatnich wiadomości ? Tracisz tym samym np 11 itd, a przy dyskusji wszystko się zgubi (patrz choćby sb na dp)
Numeracje potrafię sam wprowadzić, wiec po co komplikować przykład. Ale w samym skrypcie chatu nie planuje wprowadzenia podziału na strony - będzie to taki chat “na żywo” dla wszystkich graczy w grze przeglądarkowej.
Napotkałem się na kolejny problem związany z chatem (strasznie kłopotliwy on jest)… Mianowicie mam diva o id “chat” do którego ładuje zawartość pliku z chatem dopiero po naciśnięciu pewnego przycisku. W pliku z chatem znajduje się linijka kodu js, która uruchamia autoodswiezanie okna z wiadomościami. Gdy załaduje do okna chatu inny plik (konkretnie wykaże wcześniej załadowaną zawartość, czyli pliku chatu) to przeglądarka dalej tak jakby pamięta kod js, który wcześniej był załadowany (ale teoretycznie juz go tam nie ma) i nadal autoodswieza okno z wiadomościami…
Pewnie i tak nie zrozumiecie o co mi chodzi wiec zapytam: co zrobić, aby wyłączyć autoodswiezanie ustawione wcześniej za pomocą funkcji setInterval()?
Bez js ta gra w ogóle nie ruszy. Wszystko jest tak zrobione, żeby działała bez przeładowań strony, więc osoby z wyłączonym js nie będą miały prawdopodobnie dostępu. Pewnie z tego powodu gra okaże się być nieco dziurawą, ale myślę, że da rade wszystko “załatać” (wczoraj w ramach testu odpaliłem grę na telefonie (IE) i okazało się, że niektóre elementy nie działają. Tak jakby załadował pewne pliki do pamięci i potem pokazywał to co już zapamiętał… Dzisiaj będę nad tym glowkowac) W końcu po to ją pisze, żeby się czegoś nauczyć.