Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Puste miejsca jako brak
Forum PHP.pl > Forum > Przedszkole
Chelo
Witam wszystkich.

  1. $i1 = 0;
  2. while($row = $db->sql_fetchrow($restult)) {
  3. $i1++;
  4. $template->assign_block_vars('tvip', array(
  5. "L_NICK" => $row['nickn'],
  6. "L_POST" => $row['postsn'],
  7. "L_HREF" => $row['iduser'],
  8. "L_NUM" => $i1
  9. ));
  10. }
  11.  
  12. for($y=$i1; $y<=9; $y++) {
  13. $i1++;
  14. $template->assign_block_vars('tvip', array(
  15. "L_NICK" => "brak",
  16. "L_POST" => "brak",
  17. "L_HREF" => "brak",
  18. "L_NUM" => $i1
  19. ));
  20. }


Kod wyciąga z bazy danych userów, z największą ilością postów, jest ich max 10, jeżeli w bazie są tylko 4 rekordy, to w pozostałych 6 będzie pisało brak. Teraz jak mogę usunąć funkcję for i wpleść ten kod w while, aby kodu nie dublować?

Próbowałem z innym kodem, ale nie za bardzo mi wychodzi:

  1. $i2 = 0;
  2. while($row1 = $db->sql_fetchrow($result1)) {
  3. $i2++;
  4. $liczba2 = $row1['liczba2'];
  5. echo $liczba2;
  6. $liczba3 = $liczba2 + 10;
  7. if($i2<=$liczba3) {
  8.  
  9. $template->assign_block_vars('t1vip', array(
  10. "L_NICK1" => $row1['nickk'],
  11. "L_POST1" => $row1['total1'],
  12. "L_HREF1" => $row1['iduser1'],
  13. "L_NUM1" => $i2
  14. ));
  15. }
  16. if($i2==$liczba2) {
  17.  
  18. $template->assign_block_vars('t1vip', array(
  19. "L_NICK1" => "brak",
  20. "L_POST1" => "brak",
  21. "L_HREF1" => "brak",
  22. "L_NUM1" => $i2
  23. ));
  24. }
  25. }


proszę o pomoc
qrzysztof
  1. $i1 = 0;
  2. while($row = $db->sql_fetchrow($restult) || $il<10) {
  3. $i1++;


Pokombinowałbym coś w tym kierunku. Wtedy pętla będzie się wykonywała zawsze 10 razy

A potem już tylko:

"L_NICK" = ($row['nickn']) ? $row['nickn']:'brak';

lub jakoś podobnie.

Chelo
Jeżeli daje taki warunek:

  1. while($row1 = $db->sql_fetchrow($result1) || $i2<=10)


to nic nie wyświetla.
qrzysztof
Gdzie nic nie wyświetla?

Masz w tej pętli, tak jak pisałem, sprawdzać czy $row['costam'] ma wartość. Jeśli ma przypisywać ją do swojej zmiennej "COSTAM" a jeśli nie to przypisywać do tejże zmiennej 'brak'.

  1. "L_NICK" = ($row['nickn']) ? $row['nickn']:'brak';


Można tak, można inaczej. Ważne, że wiadomo o co chodzi. Kod będziesz już musiał sam sobie napisać.
Chelo
Mam wszystko gotowe, chodzi o to, że gdy dopisuje || $i2<=10 czyli jest:
  1. while($row1 = $db->sql_fetchrow($result1) || $i2<=10)


To dane które mają się wyświetlić to znikają, po prostu ich nie ma, a gdy usunę || $i2<=10 to się pojawiają, tak więc co może być nie tak?
qrzysztof
Jak masz gotowe to wrzuć, bo przecież nikt nie będzie zgadywał co się stało.
Chelo
Raczej nie twoja literówka, ponieważ dostosowałem to pod moje zmienne tak więc:

  1. $i2 = 0;
  2. while($row1 = $db->sql_fetchrow($result1) || $i2<=10) {
  3. $i2++;
  4. $liczba2 = $row1['liczba1'];
  5.  
  6. $template->assign_block_vars('t1vip', array(
  7. "L_NICK1" => $row1['nickk'],
  8. "L_POST1" => $row1['total1'],
  9. "L_HREF1" => $row1['iduser1'],
  10. "L_NUM1" => $i2
  11. ));
  12.  
  13.  
  14. }



gdy usunę || $i2<=10, dane będą widoczne. Dodam, dane znikną


co jest nie tak?

qrzysztof
Nie zmodyfikowałeś tej pętli tak, żeby sprawdzana była wartość $row.

Plus, dla bezpieczeństwa może ująć warunki w nawiasy:

  1. while(($row1 = $db->sql_fetchrow($result1)) || ($i2<=10))
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.