Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Dodawanie <tr> i </tr> co 13 wykonań pętli, Dlaczego 13 rekord jest zawsze po <tr> i </tr> ?
Babcia@Stefa
post 10.05.2007, 20:41:09
Post #1





Grupa: Zarejestrowani
Postów: 654
Pomógł: 17
Dołączył: 19.03.2006
Skąd: z kosmosu ;)

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


Witam, mam taki kod:

  1. <table border="1" cellpadding="0" cellspacing="0">
  2. <?php
  3. $fx = '13x13';
  4. $data = explode('x', $fx);
  5. $dta1 = $data[0];
  6. $towhile = $data[0]*$data[1];
  7. while ($petla < $towhile)
  8. {
  9. $petla++;
  10. if($number < $dta1)
  11. $number++;
  12. else
  13. $number = 1;
  14. if($number == $dta1) { echo '<tr><td>' .$petla. '</td></tr>';} else {echo '<td>' .$petla. '</td>';}
  15. }
  16. ?>
  17. </table>


Wyniki kodu są takie:
Cytat("Wyniki")
1 2 3 4 5 6 7 8 9 10 11 12
13
14 15 16 17 18 19 20 21 22 23 24 25
26
27 28 29 30 31 32 33 34 35 36 37 38
39
40 41 42 43 44 45 46 47 48 49 50 51
52
53 54 55 56 57 58 59 60 61 62 63 64
65
66 67 68 69 70 71 72 73 74 75 76 77
78
79 80 81 82 83 84 85 86 87 88 89 90
91
92 93 94 95 96 97 98 99 100 101 102 103
104
105 106 107 108 109 110 111 112 113 114 115 116
117
118 119 120 121 122 123 124 125 126 127 128 129
130
131 132 133 134 135 136 137 138 139 140 141 142
143
144 145 146 147 148 149 150 151 152 153 154 155
156
157 158 159 160 161 162 163 164 165 166 167 168
169


A powinny być takie:
1 2 3 4 5 6 7 8 9 10 11 12 13
14 15 16 17 18 19 20 21 22 23 24 25
26 27 28 29 30 31 32 33 34 35 36 37 38

itd..

Czy może ktoś pokazać gdzie zrobiłem błąd?
Wiem że jest to napewno drobny problem..

Dziękuję, Babcia@Stefa


--------------------
Środowisko testowe (desktop) - Gedit, lighttpd, sftp, rsync, xfce4-terminal, chromium, firefox4 | System: Gentoo ~x86
O'Neill - serwer WWW @ lighttpd, links, nano, rsyncd, sftpd | System: Debian
Go to the top of the page
+Quote Post
starach
post 10.05.2007, 20:54:35
Post #2





Grupa: Zarejestrowani
Postów: 999
Pomógł: 30
Dołączył: 14.01.2007
Skąd: wiesz ?

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


Czyli rozumiem że chcesz mieć 13 kolumn generowanych dynamicznie.
To nie prościej jest zastosować dwie pętle for() jedna wpisana w drugą ?
Go to the top of the page
+Quote Post
chaos_code
post 10.05.2007, 20:55:29
Post #3





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 9.05.2007

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


  1. <?php
  2. if($number == $dta1) { echo '<tr><td>' .$petla. '</td> </tr>';} else {echo '<td>' .$petla. '</td>';}
  3. ?>


Zamykasz TR a później wypisujesz resztę elementów.
Zamknięcie powinno być po wypisaniu.

Coś koło tego:

1. Otwierasz TR
2. Wypisujesz wszystkie TD
3. Zamykasz TR

Ten post edytował chaos_code 10.05.2007, 20:56:48
Go to the top of the page
+Quote Post
Babcia@Stefa
post 10.05.2007, 21:15:01
Post #4





Grupa: Zarejestrowani
Postów: 654
Pomógł: 17
Dołączył: 19.03.2006
Skąd: z kosmosu ;)

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


Cytat(chaos_code @ 10.05.2007, 19:55:29 ) *
  1. <?php
  2. if($number == $dta1) { echo '<tr><td>' .$petla. '</td> </tr>';} else {echo '<td>' .$petla. '</td>';}
  3. ?>


Zamykasz TR a później wypisujesz resztę elementów.
Zamknięcie powinno być po wypisaniu.

Coś koło tego:

1. Otwierasz TR
2. Wypisujesz wszystkie TD
3. Zamykasz TR


Acha, widze błąd winksmiley.jpg
Bo ja otwieram <tr> przy końcu i odrazu zamykam a powinienen otwierać na początku a na końcu zamykać..

@edit
A oto rozwiązanie:
  1. <table border="1" cellpadding="0" cellspacing="0">
  2. <?php
  3. $fx = '13x13';
  4. $data = explode('x', $fx);
  5. $dta1 = $data[0];
  6. $towhile = $data[0]*$data[1];
  7. while ($petla < $towhile)
  8. {
  9. $petla++;
  10. if($number < $dta1)
  11. $number++;
  12. else
  13. $number = 1;
  14. if($number == 1) { echo '<tr>';}
  15. echo '<td>' .$petla. '</td>';
  16. if($number == $dta1)
  17. echo '</tr>';
  18. }
  19. ?>
  20. </table>


A oto jak działa:
Cytat("Jak działa")
1 2 3 4 5 6 7 8 9 10 11 12 13
14 15 16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31 32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47 48 49 50 51 52
53 54 55 56 57 58 59 60 61 62 63 64 65
66 67 68 69 70 71 72 73 74 75 76 77 78
79 80 81 82 83 84 85 86 87 88 89 90 91
92 93 94 95 96 97 98 99 100 101 102 103 104
105 106 107 108 109 110 111 112 113 114 115 116 117
118 119 120 121 122 123 124 125 126 127 128 129 130
131 132 133 134 135 136 137 138 139 140 141 142 143
144 145 146 147 148 149 150 151 152 153 154 155 156
157 158 159 160 161 162 163 164 165 166 167 168 169


Dziękuję, Babcia@Stefa

Ten post edytował Babcia@Stefa 10.05.2007, 21:18:18


--------------------
Środowisko testowe (desktop) - Gedit, lighttpd, sftp, rsync, xfce4-terminal, chromium, firefox4 | System: Gentoo ~x86
O'Neill - serwer WWW @ lighttpd, links, nano, rsyncd, sftpd | System: Debian
Go to the top of the page
+Quote Post
b_chmura
post 10.05.2007, 22:24:04
Post #5





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

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


  1. <table border="1" cellpadding="5" cellspacing="0">
  2. <tr>
  3. <?php
  4. $dana = '13 || 13';
  5. $dane = explode(' || ', $dana);
  6. $wynik = $dane[0]*$dane[1];
  7. $i = 0;
  8. while($cnt < $wynik) {
  9. $cnt++;
  10. $i++;
  11. echo '<td align="center">' .$cnt. '</td>'."n";
  12.  
  13. if($i == $dane[0]) {
  14. echo '</tr><tr>'."n";
  15. $i = 0;
  16. }
  17. }
  18. ?>
  19. </tr>
  20. </table>


Nie prościej?
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: 16.07.2025 - 21:51