Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Tabelka w pętli
xSlash
post 28.04.2011, 06:21:31
Post #1





Grupa: Zarejestrowani
Postów: 119
Pomógł: 0
Dołączył: 19.04.2009
Skąd: Sieradz

Ostrzeżenie: (0%)
-----


Witam. Mam cos takiego:
Kod
Baza: 1-1-1,2-2-4,5-2-1


  1. $zmienna1 = explode(',', $baza);
  2. for($i=0;$zmienna1[$i];$i++)
  3. {
  4. $zmienna2 = explode('-', $zmienna1[$i]);
  5.  
  6. //<table>
  7. //<tr><td></td></tr>
  8. //</table>
  9. }


Tabelka jest rozbudowana, wiec nie przepisywałem całosci. W tabelce jest powstawianych sporo zmiennych z pętli, wiec tabelka musi tez być w pętli? Bo jeżeli umieszcze ją przed "}" to wyswietlą ją $zmienna1[$i] razy... A chcialbym zeby wyswietlało raz.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
Ilware
post 28.04.2011, 06:46:32
Post #2





Grupa: Zarejestrowani
Postów: 248
Pomógł: 31
Dołączył: 14.12.2010
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


deklaracja samej tabelki nie musi być w pętli,

  1.  
  2. $zmienna1 = explode(',', $baza);
  3. echo "<table>";
  4. for($i=0;$zmienna1[$i];$i++)
  5. {
  6. $zmienna2 = explode('-', $zmienna1[$i]);
  7. echo "<tr><td>".$zmienna2."</td></tr>";
  8. }
  9. echo "</table>";


--------------------
Jeżeli pomogłem kliknij "Pomógł" :)
Go to the top of the page
+Quote Post
xSlash
post 28.04.2011, 06:51:52
Post #3





Grupa: Zarejestrowani
Postów: 119
Pomógł: 0
Dołączył: 19.04.2009
Skąd: Sieradz

Ostrzeżenie: (0%)
-----


Teoretycznie, ale tabelka jest 3x4.
Musiałbym zrobic.

<table>
<tr>for{<td></td>}for{<td></td>}for{<td></td>}</tr>
<tr>for{<td></td>}for{<td></td>}for{<td></td>}</tr>
<tr>for{<td></td>}for{<td></td>}for{<td></td>}</tr>
<tr>for{<td></td>}for{<td></td>}for{<td></td>}</tr>
</table>

A przy takim wydluzonym skrypcie jaki to bd taki chaos... Dlatego szukam łatwiejszego sposobu na wyswietlanie zapętlonych danych w niezapętlonej tabeli.

Ten post edytował xSlash 28.04.2011, 07:08:41
Go to the top of the page
+Quote Post
mortus
post 28.04.2011, 07:55:20
Post #4





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Nie wiem w czym problem, wystarczy przecież najprostsza podwójna pętla.
  1. $wiersze = explode(',', $baza);
  2. foreach($wiersze as $wiersz) {
  3. $kolumny = explode('-', $wiersz);
  4. echo '<tr>';
  5. foreach($kolumny as $kolumna) {
  6. echo '<td>'.$kolumna.'</td>';
  7. }
  8. echo '</tr>';
  9. }
Go to the top of the page
+Quote Post
Ilware
post 28.04.2011, 07:59:29
Post #5





Grupa: Zarejestrowani
Postów: 248
Pomógł: 31
Dołączył: 14.12.2010
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Uważam że robisz problem w miejscu, którym go nie ma
użyj while zamiast for, bo nie wiem jak wygląda całość.

  1. dbQuery = mysql_query("SELECT 'to co chcesz' FROM tableName WHERE `cos` = 'cos'");
  2. $str = "<table>";
  3. while($dane = getRow){ // nie wiem na czym pracujesz, jakas funkcja ktora pobeira wiersze
  4. $str .= "<tr><td>".$dane[0]."</td><td>".$dane[1]."</td></tr>"; //itd
  5. }
  6. $str .="</table>";
  7. echo $str;


--------------------
Jeżeli pomogłem kliknij "Pomógł" :)
Go to the top of the page
+Quote Post
xSlash
post 28.04.2011, 12:18:54
Post #6





Grupa: Zarejestrowani
Postów: 119
Pomógł: 0
Dołączył: 19.04.2009
Skąd: Sieradz

Ostrzeżenie: (0%)
-----


Nie znam sie za bardzo. Probowałem z foreach i while i cos nie wychodzi.
Jest to ekwipunek postaci: 1-1-1
Oznacza 1okno z 1strony i przedmiot z id = 1
2-5-1
Oznacza 2okno z 5strony i przedmiot z id = 1

Chce zrobic, zeby była tabela 3x4...
Jezeli w ciągu istnieje 1-1-x to 1 okno na 1 stronie jest z background = X jezeli w ciągu nie ma 1-1-X to background = puste.jpg

Cos takiego... I na serio nie mam pojecia jak to zrobic ;/

Moja pierwsza forma wyswietlała, ale w taki sposob, ze kazdy przedmiot (ciag miedzy jednym , a drugim ,) był wyswietlany w nowej tabeli (3x4), a nie na tej samej, bo petla powtarzała całą tabele
Go to the top of the page
+Quote Post
mortus
post 28.04.2011, 12:37:30
Post #7





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Przecież rozwiązanie podałem jak na dłoni. Pominąłem jedynie znaczniki <table> i </table>, ale co to za problem, wstawić je we właściwym miejscu.
  1. $wiersze = explode(',', $baza);
  2. echo '<table>';
  3. foreach($wiersze as $wiersz) {
  4. $kolumny = explode('-', $wiersz);
  5. echo '<tr>';
  6. foreach($kolumny as $kolumna) {
  7. echo '<td>'.$kolumna.'</td>';
  8. }
  9. echo '</tr>';
  10. }
  11. echo '</table>';

A tak w ogóle, to proszę przemyśleć definicję problemu, bo ciężko cokolwiek wywnioskować ze zlepku zdań:
Cytat
Jest to ekwipunek postaci: 1-1-1
Oznacza 1okno z 1strony i przedmiot z id = 1
2-5-1
Oznacza 2okno z 5strony i przedmiot z id = 1

Skąd my mamy wiedzieć, co to jest 2 okno czy 1 strona?
Go to the top of the page
+Quote Post
xSlash
post 28.04.2011, 12:49:14
Post #8





Grupa: Zarejestrowani
Postów: 119
Pomógł: 0
Dołączył: 19.04.2009
Skąd: Sieradz

Ostrzeżenie: (0%)
-----



$_GET['str'] = wybrana strona
$_GET['okno'] = wybrane okno (zgodnie z tym co wyzej)

Co do Twojej petli. Wyswietla tylko 3x3, bo w bazie są XXX,XXX,XXX. Nie bierze pod uwage, ze mimo, ze nie ma jakegos ciagu (czyli NP czwartego XXX) nalezy wyswietlic tr/td tyle, ze z innym tlem (pustym).

W skrócie. Tabela 3x4. Jezeli w ciagu sa dane okno (numer okna i strona) to tlo = bla.jpg, jezeli taki ciag nie istnieje to okno tez jest pokazywale ale z tlem = puste.jpg

Ten post edytował xSlash 28.04.2011, 12:53:37
Go to the top of the page
+Quote Post
mortus
post 28.04.2011, 13:11:18
Post #9





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


Chyba chcesz zrobić tabele 4x3, a nie 3x4, bo to zdecydowana różnica.

Tabela 4x3:
  1. $mlw = 4; // maksymalna liczba wierszy
  2. $olw = 0; // obecna liczba wierszy
  3. $wiersze = explode(',', $baza);
  4. echo '<table>';
  5. foreach($wiersze as $wiersz) {
  6. $kolumny = explode('-', $wiersz);
  7. echo '<tr>';
  8. foreach($kolumny as $kolumna) {
  9. echo '<td>'.$kolumna.'</td>';
  10. }
  11. echo '</tr>';
  12. $olw++;
  13. }
  14. if($olw < $mlw) {
  15. for($i = 0; $i < $mlw-$olw; $i++) {
  16. echo '<tr><td></td><td></td><td></td></tr>';
  17. }
  18. }
  19. echo '</table>';


Tabela 3x4:
  1. $mlk = 4; // maksymalna liczba kolumn
  2. $wiersze = explode(',', $baza);
  3. echo '<table>';
  4. foreach($wiersze as $wiersz) {
  5. $olk = 0; // obecna liczba kolumn
  6. $kolumny = explode('-', $wiersz);
  7. echo '<tr>';
  8. foreach($kolumny as $kolumna) {
  9. echo '<td>'.$kolumna.'</td>';
  10. $olk++;
  11. }
  12. if($olk < $mlk) {
  13. for($i = 0; $i < $mlk-$olk; $i++) {
  14. echo '<td></td>';
  15. }
  16. }
  17. echo '</tr>';
  18. }
  19. echo '</table>';
Go to the top of the page
+Quote Post
xSlash
post 28.04.2011, 13:24:09
Post #10





Grupa: Zarejestrowani
Postów: 119
Pomógł: 0
Dołączył: 19.04.2009
Skąd: Sieradz

Ostrzeżenie: (0%)
-----


Powiedzmy, ze dziala, ale w momencie
  1. foreach($kolumny as $kolumna) {
  2. echo '<td>'.$kolumna.'</td>';
  3. }

W kolumnie wyswietla jakies dziwne cyfry (znaczy... od 1 do 4), ktore nie sa mi potrzebne. Jak zrobic, zeby wyswietlalo trzecia cyfre z bazy.
Czyli jezeli jest 1-1-1 to wyswietla na 1 stronie, w 1 oknie cyfre 1. Jezeli 2-5-4 to wyswietla na 5 stronie, w 2 oknie cyfre 4.

Na moja (nienajlepsza) logike w <td> powinno byc umieszczone $kolumny[2] (bo liczy sie od zera), ale tak nie dziala bo wyswietla:
1 1 1
2 2 2
3 3 3
1 1 1
(nie wiem wgle skad te cyfry bierze).

Jezeli nie ma w ciagu X-X-X to zeby w tabelce pokazywalo "", czyli nic.

P.S. Prosze o jeszcze troche cierpliwosci dla mojej glupoty wink.gif


EDIT:
W ogole nie rozpoznaje kolejno komorek. Tylko wierszami jedzie.
Jezeli pierwsza kolumna jest
1 X X
3 X X
6 X X
2 X X
To nie widzi tego jako osobne komorki czyli jedzie wierszami:
1 1 1
3 3 3
6 6 6
2 2 2
Wiec nie do konca o to chodzilo

Ten post edytował xSlash 28.04.2011, 13:31:14
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 15:11