![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 84 Pomógł: 0 Dołączył: 12.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Mam w bazie rekordy które chce odczytać z tym, że chcę aby wyświetlały się w konkretny sposób a dokładniej mówiąc co trzy, następna linia trzy, następna trzy itd. Wiem mniej więcej jak to powinno wyglądać ale ciężko mi to przenieść na PHP. Oto co skleciłem i prosił bym tylko o pomoc - jak przekształcić skrypt a w zasadzie głównie pętlę aby wyświetlała co trzy rekordy.
Łączę się z bazą a następnie: Kod $kategorie = "SELECT * FROM kategorie_linkow ORDER BY id"; $result = mysql_query($kategorie) or die("Sprawdź rezultat!" . mysql_error()); while($wyswietl = mysql_fetch_array($result)) { if($i = 1; $i <= 3; $i++) { $id = $wyswietl['id']; $kategoria = $wyswietl['kategoria']; $lista .=<<<EOD <td>$kategoria</td> EOD; } } $naglowek = "<table id=\"linki\">"; $s_tr = "<tr>"; $e_tr = "</tr>"; $stopka = "</table>"; $tabela =<<<EOD $naglowek $s_tr $e_tr $lista $stopka EOD; echo $tabela; Jak widać gdy usuniemy z pętli while pętlę for wyświetli mi ona wszystkie rekordy ale w jednym wierszu dlatego też wstawiłem pętlę for która chciał bym aby co trzy rekordy przechodziła do nowego wiersza i wyświetlała kolejne trzy itd. ale gdy tylko napisałem tą pętlę stanąłem w miejscu bo wiem, że ona nie działa tak jak bym chciał bo coś jej brakuje i właśnie nie wiem co :/ Ten post edytował Zagiewa 9.04.2010, 02:26:13 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 159 Pomógł: 43 Dołączył: 8.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
Takie najprostsze rozwiązanie... trochę lamerskie ale działa ;p o tej godzinie trochę już głowa przestaje pracować... |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 84 Pomógł: 0 Dołączył: 12.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Działa ale nie zupełnie tak jak chciałem. Dodam, że chwilowo mam tylko 5 rekordów więc na przykładzie pustej tabeli pokażę jak chciałem aby wyświetlały się rekordy:
Kod [/code]<table> <tr> <td>1</td><td>2</td><td>3</td> </tr> <tr> <td>4</td><td>5</td> </tr> </table> itd. jeśli przybędzie więcej rekordów. Skrypt który zaproponowałeś układa mi odwrotnie ![]() Kod <table> <tr> <td>1</td><td>2</td> </tr> <tr> <td>3</td> </tr> <tr> <td>4</td><td>5</td> </tr> </table> A przynajmniej tak mi wyświetliło, ciekawe jak by zachował się skrypt gdy bym dodał np. parę rekordów więcej ale mniejsza z tym, szkoda ze nie działa nadal jak powinien ![]() Ten post edytował Zagiewa 9.04.2010, 06:33:32 |
|
|
![]()
Post
#4
|
|
![]() Newsman Grupa: Moderatorzy Postów: 2 033 Pomógł: 290 Dołączył: 21.12.2007 Skąd: Łódź ![]() |
Proszę używać BBCode.
-------------------- Life's simple... You make choices and don't look back...
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Zobacz ten post, a konkretnie drugi listing. Zmienna $liczba to u Ciebie liczba wszystkich rekordów, a zmienna $liczb_w_wierszu, to u Ciebie liczba rekordów jaką chcesz mieć w jednym wierszu. Skrypt uzupełnia puste komórki znakiem -.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 84 Pomógł: 0 Dołączył: 12.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Mortus, jak przeanalizowałem ten post co mi podesłałeś, na jego podstawie zmieniłem swoją pętlę i patrząc na kod musi działać
![]() ![]() Kod <table> <tr> <td></td><td></td><td></td><td></td><td></td> </tr> </table> Bez sensu, a kod wygląda tak: Kod $i = 1; $ile = 3; while($wyswietl = mysql_fetch_array($result)) { if($i%$ile == 0 && $i != 0) { echo "</tr><tr>"; } $id = $wyswietl['id']; $kategoria = $wyswietl['kategoria']; $lista .=<<<EOD <td>$kategoria</td> EOD; $i++; } $naglowek = "<table id=\"linki\"><tr>"; $stopka = "</tr></table>"; $tabela =<<<EOD $naglowek $lista $stopka EOD; echo $tabela; Jednak udało się. W powyższym kodzie były dwa błędy. 1. Zamiast echo "</tr><tr>"; trzeba było wstawić: Kod $lista .=<<<EOD </tr><tr> EOD; 2. Drugi błąd to czysta matematyka ![]() Już działa wszystko więc dzięki wielkie za pomoc ![]() Ten post edytował Zagiewa 9.04.2010, 12:35:43 |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 72 Pomógł: 0 Dołączył: 17.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
Jestem jeszcze początkująca, ale wydaje mi się że musisz zrobić pętle w pętli - zagnieżdżanie pętli. pierwsza pętla drukuję <tr> a druga <td> w (wyrażeniach) określasz ilość wierszy i kolumn
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Jestem jeszcze początkująca, ale wydaje mi się że musisz zrobić pętle w pętli - zagnieżdżanie pętli. pierwsza pętla drukuję <tr> a druga <td> w (wyrażeniach) określasz ilość wierszy i kolumn @ rossco Problem rozwiązany i wystarczyła tylko jedna pętla. Przeczytaj dokładnie poprzednie posty. Pozdrawiam
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 84 Pomógł: 0 Dołączył: 12.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Odświeżam temat bo nadszedł czas na rozbudowanie tego kodu. Problem jest ten sam czyli zależy mi na tym aby wyświetlały się co trzy rekordy ale tym razem jest trochę trudniej. Najpierw przedstawię co kod ma robić. Pierwsze co to pobiera rekordy z bazy których jest dokładnie pięć i mają być one kategoriami. Pod każdą z kategorii mają się wyświetlać dane. Dane te na razie nie mają większego znaczenia więc są po prostu przypadkowe i mają na celu tylko i wyłącznie sprawdzić czy są wyświetlane we właściwym miejscu. Mój obecny kod wyświetla ja w sposób przedstawiony poniżej w tabeli.
Kod kategoria1 kategoria2 kategoria3 kategoria4 kategoria5 a a a a a b b b b b c c c c c d d d d d e e e e e f f f f f Teraz potrzebuję aby wyświetlały się co trzy kategorie w wierszu czyli coś takiego: Kod kategoria1 kategoria2 kategoria3 a a a b b b c c c d d d e e e f f f kategoria4 kategoria5 a a b b c c d d e e f f Wcześniej pomogliście mi to wykonać gdy wyświetlałem tylko same kategorie za pomocą tego warunku:
Ale tym razem kod się zmienił i nie wiem jak teraz użyć tego warunku aby wyświetlać co trzy kategorie w wierszu. Mój kod wygląda tak:
Macie jakieś pomysły jak to zrobić? jakieś podpowiedzi? Ten post edytował Zagiewa 11.04.2010, 21:06:13 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Przede wszystkim powiedz, po co tak to wszystko rozdrabniasz (dzielisz na linki, listę, nagłówek, stopkę), jaki masz w tym cel? No i dlaczego raz używasz zwykłych cudzysłowów do deklarowania stringów, a innym razem delimiterów heredoc (<<<EOD). Przecież
to to samo co Tymczasem Twój kod traci spójność i czytelność. A teraz przejdźmy do sedna. Nie zrobisz tego w taki sposób, ale podam Ci rozwiązanie z podobnym do Twojego buforowaniem całej tabeli Taki sam efekt można osiągnąć przy użyciu pętli for W 23 liniach zrobiłem to, co ty w 49. Pisałem z głowy, więc nie wiem, czy na 100% będzie działać. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 20:03 |