Strona 1 z 1

Następny wiersz w pętli po spełnieniu warunku

Napisane: środa, 30 lipca 2014, 18:46
przez bielu000
Witam mam taki malutki problem, być może rozwiązanie może okazać się banalne, ale siedzę dziś już cały dzień przy komputerze i być może zmęczenie nie pozwala mi wymyślić sensownego rozwiązania ;)

A więc tak mam sobie bazę danych w, której jest np. 10 rekordów.

Napisałem sobie pentelkę, która pobiera dane z tej bazy danych i wyświetla je.

Tutaj jest fragment kodu - najistotniejszy

Code: Zaznacz cały

for ($i = 0; $i < mysql_num_rows($gallery); $i++)
              {
               $row = mysql_fetch_array($gallery);
               echo "<td><a href='../photos/".$row['link']."'> <img src='../photos/".$row['link']."' width='200px' height='200px' border='1'/></a><br /><a href='index_pa.php?go=gallery&gallery_name=".$gallery_name."&delete=".$row['id']."'>Usun</a></td>\n";

               if ($i>1 && $i % 3 == 0)
                {
                 echo "</tr>\n<tr>\n";
                }
              }
Wszystko niby pięknie, ładnie działa, ale problem pojawia się przy tej ostatniej instrukcji if.
Mianowicie chciałbym aby po wczytaniu 3 rekordów nastąpiło przejście do następnego wiersza. I tak w kółko - wyświetla 3 rekordy, następna linia, kolejne 3 rekordy, następna linia, itd
Dałem taki warunek, że po każdym wczytaniu przez pętlę rekordu do $i dodawane jest 1 ($i++), jeśli zmienna osiąga wartość większą niż 3 i w dodatku przy dzieleniu przez 3 reszta wynosi 0 następuje przejście do następnego wiersza. Dla mnie wydaje się to logiczne.
Bo zauważmy:

Gdy w tabeli znajdują się 3 rekordy zmienna $i przyjmuje wartość 3 ----> 3/3 =1 r=0 przejście do następnego wiersza bo warunek spełniony
Gdy w tabeli znajduje się 6 rekordów zmienna $i przyjmuje wartość 6 ---> 6/3 = 2 r=0 przejście do następnego wiersza bo warunek spełniony
Gdy w tabeli znajduje się 9 rekordów zmienna $i przyjmuje wartość 9 ---> 9/3 = 3 r=0 przejście do następnego wiersza bo warunek spełniony
Gdy w tabeli znajduje się 10 rekordów zmienna przyjmuje wartość 10 ---> 10/3 = 3,(33) r!=0 warunek niespełniony

Teoretycznie niby to działa, tylko jest jedno małe ale, dopiero po wyświetleniu 4(nie 3 rekordów!) następuje przejście do następnego wiersza. Gdzie tu jest problem?

Re: Następny wiersz w pętli po spełnieniu warunku

Napisane: czwartek, 31 lipca 2014, 00:39
przez Morfidon
Skrypt działa Ci dobrze, problem polega na tym, że nie bierzesz pod uwagę faktu, że najpierw wyświetlasz jeden rekord... Wyświetlanie daj po warunku a nie przed warunkiem ;)

Re: Następny wiersz w pętli po spełnieniu warunku

Napisane: czwartek, 31 lipca 2014, 18:34
przez bielu000
Zmieniłem troszkę warunek z tej instrukcji if na

Code: Zaznacz cały

if ($i % 3 == 2)
{.........}
I śmiga dobrze ;)

Re: Następny wiersz w pętli po spełnieniu warunku

Napisane: czwartek, 31 lipca 2014, 18:41
przez Morfidon
Jak coś śmiga dobrze, a nie wiesz czemu to w programowaniu nie oznacza nic dobrego ;)

Zrób tak jak powiedziałem, bo tamta linia wykonała się za wcześnie za pierwszym razem.